EC2 インスタンスは OS などを格納するファイルシステムのために最低限一つの EBS (Elastic Block Store) ボリュームを必要とします。これを Root ボリュームとよびます。本ページでは Root EBS に加えてデータ格納用の EBS を EC2 インスタンスから利用するための設定をまとめます。
EC2 インスタンス起動時または EC2 の Volumes メニューにある「Create Volume」から新規に EBS を作成します。Root デバイスとしては使用しないため作成時に Snapshot は指定しません。「Create Volume」から作成した場合は Actions → Attach でインスタンスに接続します。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdb 202:16 0 8G 0 disk /mydata
xvdf 202:80 0 1G 0 disk ← 今回 Attach した。'/' や '/data' にマウントされていない
上記コマンドで EC2 に接続されて認識できることを確認します。これは AWS コンソール上で確認できるデバイス名のエイリアスです。
$ ls -l /dev/sdf
lrwxrwxrwx 1 root root 4 May 6 04:32 /dev/sdf -> xvdf
過去のバックアップから作成した EBS ボリュームであったり Root デバイスの EBS ボリュームであったりする場合、本手順を実行するとデータが失われます。本手順は空の EBS ボリュームをデータ格納用に新規作成して Attach した直後に一回だけ行います。
以下のコマンドで data とだけ表示されることを確認します。既存のファイルシステムが存在しないことを意味します。
$ sudo file -s /dev/xvdf
/dev/xvdf: data
$ sudo mkfs -t ext4 /dev/xvdf
上記コマンドを実行すると以下の通りファイルシステムが作成されました。
$ sudo file -s /dev/xvdf
/dev/xvdf: Linux rev 1.0 ext4 filesystem data, UUID=7c0606a8-89c4-4ff6-9360-6a1f8aa65047 (extents) (large files) (huge files)
マウントポイントを作成して mount コマンドを実行します。
$ sudo mkdir /data
$ sudo mount /dev/xvdf /data
使用できるようになりました。
$ ls /data
lost+found
アンマウントするためには以下のコマンドを実行します。'u'mount であって 'un'mount ではないことに注意してください。
$ sudo umount /data
EC2 インスタンスを停止すると EBS ボリュームがアンマウントされます。これは次回起動時に自動ではマウントされません。自動でマウントされるようにするためには /etc/fstab を編集します。
$ sudo cp /etc/fstab /etc/fstab.orig
$ sudo vi /etc/fstab
/etc/fstab
#
LABEL=/ / ext4 defaults,noatime 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/xvdf /data ext4 defaults,nofail 0 2 ← これを追記して保存
以下のコマンドを実行してエラーが出力されなければ正常に設定されています。
$ sudo mount -a
ボリュームをアタッチしていない状態で EC2 インスタンスを起動するとエラーになります。/etc/fstab に nofail を記載することでマウントせずにエラーなく起動できます。