EC2(AmazonLinux2)にディスク(EBS)を追加(アタッチ)してパーティションを追加してディレクトリにマウントする方法

# はじめに
タイトル通り、
EC2(AmazonLinux2)にディスク(EBS)を追加(アタッチ)して
追加したディスク用にパーティションを追加
パーティションを追加してディレクトリにマウントする方法を記載します。

AWSの公式ドキュメントに記載がなかったので色々と調べた結果をまとめています。

# 手順
## EBS(ディスク)の作成
「サービス」の一覧から「EC2」をクリック
<img width=40% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/48fdb906-20a0-5724-b1c6-ecb66a636f16.png">
左ペインから「ボリューム」をクリック
<img width=10% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/3f82061d-0155-3530-656a-600468c64802.png">
「ボリュームの作成」をクリック
<img width=40% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/7e174a9b-1923-9d13-b3cc-acffdc047f72.png">
サイズ、アベイラビリティゾーンを入力したら「ボリュームの作成」をクリック
<img width=40% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/d2bf7132-269f-978a-b882-df6771038c66.png">

## EBS(ディスク)のアタッチ(関連付け)
作成したボリュームの「状態」が「available」になったら
右クリックしてボリュームの「アタッチ」をクリック
<img width=40% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/71016ef4-467e-0a1c-6cd9-fa114e79c617.png">
ディスクを追加したいインスタンスのIDと追加するデバイス名を入力して「アタッチ」をクリック
<img width=40% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/c7678fdb-e805-e292-01fc-12a08d2a8da1.png">

## アタッチしたディスクの確認
アタッチ後、アタッチしたインスタンスにSSHで接続し、
下記のfdiskコマンドを実行する

```
fdisk -l
```
実行すると下記のように表示されるディスクがある事を確認する(/dev/xxxxの部分と XXGiBの部分で適宜読替えてください。)
[Nitorベースのインスタンス](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances)タイプだと/dev/xvdfの部分がdev/nvme1n1となる
Nitorベースのインスタンスタイプではデバイス名はコントールできないので注意
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html

```
Disk /dev/xvdf: 35 GiB, 37580963840 bytes, 73400320 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes 
```
※Nitorベースのインスタンスの場合

```
Disk /dev/nvme1n1: 35 GiB, 37580963840 bytes, 73400320 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
```

## アタッチしたディスクのフォーマット
下記のmkfsコマンドを実行してディスクをxfsというファイル形式でフォーマットする(デバイス名は適宜読替えてください)

```
mkfs -t xfs /dev/xvdf
```
下記のように表示されればフォーマット完了

```
meta-data=/dev/xvdf              isize=512    agcount=4, agsize=2293760 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0
data     =                       bsize=4096   blocks=9175040, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=4480, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
```

## ディスクのフォーマットの確認
下記のfileコマンドを実行してディスクがxfsというファイル形式でフォーマットされているか確認

```
file -s /dev/xvdf
```
下記のように表示されればxfsでフォーマット済み

```
/dev/xvdf: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
```

## ディスクのパーティションの追加
下記のgdiskコマンドを実行してディスクパーティションを作成する

```
gdisk /dev/xvdf
```

下記のように表示されるので
```Command (? for help):```で「n」(新規)を入力

```
GPT fdisk (gdisk) version 0.8.6

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): n
```

パーティション番号を聞かれるので「1」(1~128までなら任意の値でOK)を入力

```
Partition number (1-128, default 1): 1
```
ディスクの開始セクター(位置)を聞かれるので何も入力せずに(デフォルト)エンター

```
First sector (34-73400286, default = 2048) or {+-}size{KMGTP}:
```
ディスクの終了セクター(位置)を聞かれるので自分の定義したいバイト数を入力してエンター
（下記の例は5Gを設定している。必ず+記号を付ける）

```
Last sector (2048-73400286, default = 73400286) or {+-}size{KMGTP}: +5G
```
ディスクパーティションのファイルシステムを聞かれるので入力せずに(デフォルト)エンター

```
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
```
下記のように表示されるので
```Command (? for help):```で「w」(書き込み)を入力

```
Command (? for help): w
```
下記のように確認されるので
「Y」を入力して

```
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y
```
下記のように表示されれば完了

```
OK; writing new GUID partition table (GPT) to /dev/xvdf.
The operation has completed successfully.
```

## ディスクのパーティションの追加確認
下記のfdiskコマンドを実行してパーティションが切られているか確認

```
fdisk -l	
```
下記のように自分の入力したパーティション番号でパーティションが切られていればOK

```
Disk /dev/xvdf: 35 GiB, 37580963840 bytes, 73400320 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: EB69E4B0-8754-4DBA-81AE-ADF9D3BEFF07
	
Device     Start      End  Sectors Size Type
/dev/xvdf1  2048 10487807 10485760   5G Linux filesystem
```

## 追加したパーティションのファイル形式を確認
下記のfileコマンドを実行してファイル形式を確認

```
file -s /dev/xvdf1
```
下記のように表示される(フォーマットされていない)

```
/dev/xvdf1: data
```


## 追加したパーティションをフォーマットする
下記のmkfsコマンドを実行してディスクをxfsというファイル形式でフォーマットする

```
mkfs -t xfs -f /dev/xvdf1
```
下記のように表示されればフォーマット完了

```
meta-data=/dev/xvdf1             isize=512    agcount=4, agsize=327680 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0
data     =                       bsize=4096   blocks=1310720, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
```

## 追加したパーティションをディレクトリにマウントする
下記のmkfsコマンドを実行して/var/hogeディレクトリにマウントする

```
mount /dev/xvdf1 /var/hoge
```

以上で完了（デバイス名は適宜読替えてご参考ください。）