EC2インスタンスにはデフォオルトのEBSボリュームに加えて、新たにEBS(Elastic Block Store)ボリュームを追加することが可能です。デフォルトのEBSにはOSやシステム関連に使用し、追加のEBSにはアプリケーション関連のデータを保存するなどの使い分けができます。また、EBSはEC2インスタンス終了時にデフォルトでデータを保持することができたり、高速なインプット・アウトプットが主な特徴として挙げられます。今回はそのEBSストレージの作成方法とEC2インスタンスへのマウントの方法を学習していきます。
AWSのストレージの詳細については「AWSが提供する3つのストレージサービス|EFS、EBS、S3」の記事を参考にしてください。

EC2インスタンスの準備
「EC2インスタンスの作成手順」の記事に従ってEC2インスタンスの作成をしておきます。EC2インスタンスが作成されたインスタンスが作成されたアベイラビリティーゾーンを確認しておきましょう。
EBSストーレジの作成方法
AWS管理画面の最上部の検索欄に「EC2」と入力してEC2サービスページに移動しましょう。
左カラムメニュ>「Elastic Block Store」>「ボリューム」メニューに移動し、「ボリュームの作成」ボタンを押下します。以下の設定でボリュームを作成しましょう。
- ボリュームタイプ
-
汎用SSD(gp3)を選択します。
- サイズ (GiB)
-
デフォルトの100GiBのまま。
- IOPS
-
デフォルトの3000のまま。
- スループット (MiB/秒)
-
デフォルトの125のまま。
- アベイラビリティーゾーン
-
前述の、EC2インスタンスが作成されたアベイラビリティーゾーンを選択します。
- スナップショット ID – オプション
-
新規のボリュームを作成するので「スナップショットからボリュームを作成しない」を選択。
- 暗号化
-
デフォルトのオフのまま。
- タグ
-
ボリュームには名前があった方が管理しやすいので、以下のタグを登録します。
キー:Name
値:my-ebs-volume
EBSボリュームを作成したら、ボリュームの状態が「使用可能」となっていることを確認しておきましょう。
参考URL:https://docs.aws.amazon.com/ebs/latest/userguide/ebs-creating-volume.html
EBSストレージのマウント方法
管理画面からアタッチ
作成したEBSボリュームを選択し、「アクション」>「ボリュームのアタッチ」メニューを選択します。
以下の内容でインスタンスにボリュームをアタッチします。
- インスタンス
-
EBSボリュームをアタッチしたいEC2インスタンスを選択します。
- デバイス名
-
ドロップダウンリスト内の「データボリュームに推奨」以下から1つ選択してください。
ここでは/dev/sddを選択します。
アタッチ先のOSでは選択したデバイス名が変わる場合があるので注意が必要です。
以下、AWS管理画面の注意書きの引用です。
ここで入力された (および詳細情報に表示される) デバイス名が /dev/sdf から /dev/sdp であっても、新しい Linux カーネルによっては内部でデバイスの名前が /dev/xvdf から /dev/xvdp に変更されることがあります。
アタッチの確認
EBSボリュームをアタッチしたEC2インスタンスにSSH接続して、以下のコマンドでEBSボリュームのアタッチを確認します。ボリュームをアタッチした際のデバイス名は /dev/sdd でしたが、ここでは /dev/xvdd に変わってアタッチされていることに注意してください。
lsblk コマンドはブロックデバイスのリスト表示をするコマンドです(/dev/パスは省略されています)。
lsblk
-
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
xvda 202:0 0 8G 0 disk
├─xvda1 202:1 0 8G 0 part /
├─xvda127 259:0 0 1M 0 part
└─xvda128 259:1 0 10M 0 part /boot/efi
xvdd 202:48 0 100G 0 disk
-
EBSボリュームのマウント
参考URL:https://docs.aws.amazon.com/ebs/latest/userguide/ebs-using-volumes.html
新規に作成されたEBSボリュームがEC2インスタンスにアタッチされてブロックデバイスとして認識ました。このままではファイルシステムとしてのフォーマットがされていない状態なので、まだ使用することができません。EBSボリュームをフォーマットしてからマウントする必要があります。
EBSボリュームのフォーマット
【ファイルシステムの詳細表示】
sudo file -s /dev/xvdd
-
/dev/xvdd: data
-
->dataとだけ表示される場合はディスクは未フォーマットであると分かる。
【各ボリュームのファイルシステムの確認】
sudo lsblk -f
-
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
xvda
├─xvda1 xfs / f3225129-f7e3-4da4-90f7-5035c457993d 6.2G 22% /
├─xvda127
└─xvda128 vfat FAT16 9AA3-6C3B 8.7M 13% /boot/efi
xvdd
-
->マウントポイントが / のルートボリュームのファイルシステムタイプが xfs だと分かる。
【ファイルシステムの作成(フォーマット)】
sudo mkfs -t xfs /dev/xvdd
【フォーマットの完了確認】
sudo file -s /dev/xvdd
-
/dev/xvdd: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
-
->dataから変わったのが確認できる。
【ファイルシステムの表示】
sudo lsblk -f
-
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
xvda
├─xvda1 xfs / f3225129-f7e3-4da4-90f7-5035c457993d 6.2G 22% /
├─xvda127
└─xvda128 vfat FAT16 9AA3-6C3B 8.7M 13% /boot/efi
xvdd xfs 6694cc8c-****-****-****-f31f4cc34321
-
->ここでも xvdd のファイルシステムタイプが xfs になり、UUIDがアサインされたのが確認できます。
システムブート時の再マウントの設定にこのUUIDを設定するので、別途メモしておきましょう。
マウントポイントの作成
【/mntディレクトリ以下にマウントポイントを作成】
sudo mkdir -p /mnt/ebs
EBSボリュームのマウント
作成したマウントポイントにフォーマット済みのEBSボリュームをマウントします。
【マウントの実行】
sudo mount /dev/xvdd /mnt/ebs
【マウントの確認】
df -h | grep ebs
-
/dev/xvdd 100G 746M 100G 1% /mnt/ebs
-
アンマウント(マウント解除)の方法
ここではアンマウントとマウントを繰り返してみます。
【前後比較のためのファイルを作成】
sudo touch /mnt/ebs/test.txt
【ファイルの作成を確認】
ll /mnt/ebs/
【アンマウント】
sudo umount /mnt/ebs/
【アンマウントの確認】
ll /mnt/ebs/
->ファイルがなくなっていればOK。
df -h | grep ebs
->マウントされたファイルシステムの表示からも消えればOK。
【再度マウントしてみる】
sudo mount /dev/xvdd /mnt/ebs
【マウントの確認】
ll /mnt/ebs/
->ファイルがあればOK。
df -h | grep ebs
->マウントされたファイルシステムとして再度表示されればOK。
アンマウントする際は、マウントされたディレクトリ内にいるとアンマウントできないので上位の/mntディレクトリなどに移動してからアンマウントのコマンドを実行しましょう。
システムブート時のマウントの自動化
マウントしただけの状態ではデフォルトではシステムリブート時には再マウントはされません。ここではシステムブート時に自動的にEBSストレージがマウントされるように設定をしていきます。
fstabの設定
fstabファイルはファイルのマウント状態を管理するファイルです。
/etc/fstab
このファイルに以下の1行を追加しましょう。
UUID=6694cc8c-****-****-****-f31f4cc34321 /mnt/ebs xfs defaults,nofail 0 2
fstabの事前テスト
以下のコマンドでリマウントが成功するか確認しましょう。EBSをアンマウントした後に、fstab内で未マウントのマウントポイントをマウントします。エラーがなくマウントされれば成功です。
sudo umount /mnt/ebs
sudo mount -a
mount -aコマンドでエラーが発生する場合、fstabファイルの設定に間違いがあります。この状態でシステムの再起動をしないでください。システムが起動しなくなる危険性があります。
システム起動時の自動マウントの確認
サーバを再起動してください。再度インスタンスにSSH接続をしてEBSストレージをマウントしたディレクトリに作成したファイルが見えれば自動マウント成功です。
ll /mnt/ebs
まとめ
今回は、AWSのEBSストレージの作成からシステム起動時の自動マウントまでの流れと設定について学習しました。EC2インスタンスのアベイラビリティーゾーンと作成するEBSのアベイラビリティーゾーンは一致していないといけませんでした。EBSボリュームのデバイス名はEC2インスタンス上は変わりましたね。作成したEBSはEB2にアタッチして、フォーマットてからでないとマウントできないことも学びました。そして最後にfstabの設定をして自動マウントまでできるようになりました。fstabファイルのマウントエラーには十分注意するようにしてください。
【関連記事】
「AWSのS3ストーレージを作成して、EC2インスタンスにマウントしよう」
「AWSのEFSストーレージを作成して、EC2インスタンスにマウントしよう」
コメント