【AWS】EBSボリュームをアタッチする

スポンサーリンク

作成したEBSボリュームをEC2インスタンスにアタッチして使用するまでの手順です。

EBSボリュームのアタッチ

EC2コンソールの「ELASTIC BLOCK STORE -> ボリューム -> ボリュームの作成」を選択します。ボリュームタイプ、サイズ、IOPS、AZ、暗号化を選択します。スナップショットIDはスナップショットからEBSを復元する場合に必要です。新規作成する場合は無視してください。

f:id:tasukujp:20170426225133p:plain

作成したボリュームを選択して「アクション -> ボリュームのアタッチ」を選択します。

f:id:tasukujp:20170426225424p:plain

ダイアログボックスのインスタンスにボリュームをアタッチするインスタンスをリストから選択します。デバイスは割り当てるインスタンスに既にアタッチされてるボリュームを含めて自動で連番が入力されます。

f:id:tasukujp:20170426225624p:plain

Amazon EBS ボリュームの作成 - Amazon Elastic Compute Cloud
インスタンスへの Amazon EBS ボリュームのアタッチ - Amazon Elastic Compute Cloud

EBSボリュームを使用できるようにする

ボリュームがアタッチされると新たにブロックデバイスとして表示されますが、ここからボリュームを使用できるようにする必要があります。

lsblk コマンドを使用した結果の NAME は/dev/が削除されて表示されます。アタッチ時のデバイスは/dev/sdfでしたが、注意書きにもあったように/dev/xvdfに変更されています。また、アタッチされただけなので MOUNTPOINT はありません。

$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
└─xvda1 202:1    0   16G  0 part /
xvdf    202:80   0   8G  0 disk

ボリュームにファイルシステムを作成する必要があるか確認します。file コマンドの出力がdataだけであればファイルシステムを作成する必要があります

$ sudo file -s /dev/xvdf
/dev/xvdf: data

mkfs コマンドを使用してボリュームにファイルシステムを作成します。スナップショットから復元した場合はこの手順は無視してください。

$ sudo mkfs -t ext4 /dev/xvdf
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
524288 inodes, 2097152 blocks
104857 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2147483648
64 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

もう一度fileコマンドでボリュームを確認するとファイルシステムが作成されたことが分かります。

$ sudo file -s /dev/xvdf
/dev/xvdf: Linux rev 1.0 ext4 filesystem data, UUID=23c823a6-b50f-4730-90f7-59960f6ab4af (extents) (large files) (huge files)

ボリュームのマウントポイントディレクトリを作成します。マウントポイントにボリュームをマウントすると、ファイルシステムツリー内でボリュームが配置され、ファイルの読み書きが実行される場所になります。

$ sudo mkdir /data
$ sudo mount /dev/xvdf /data

ボリュームがマウントされました。/data以下にファイルを書き込むと/dev/xvdfのボリュームに書き込まれます。

$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
└─xvda1 202:1    0  16G  0 part /
xvdf    202:80   0   8G  0 disk /data

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            492M  8.0K  492M   1% /dev
tmpfs           100M  348K   99M   1% /run
/dev/xvda1      7.8G  1.1G  6.4G  14% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            5.0M     0  5.0M   0% /run/lock
none            497M     0  497M   0% /run/shm
none            100M     0  100M   0% /run/user
/dev/xvdf       7.8G   18M  7.4G   1% /data

このままだとシステムを再起動した時にボリュームがマウントされないため、起動時に自動でEBSボリュームをマウントする設定を追加しておきます。以下は変数するファイルのバックアップを取ってます。

$ sudo cp /etc/fstab /etc/fstab.orig

次のいずれかのコマンドでデバイスのUUIDを確認してください。今回マウントしたいのは/dev/xvdfです。ルートデバイスの/dev/xvda1も一応確認してみましょう。

$ sudo file -s /dev/xvda1
/dev/xvda1: Linux rev 1.0 ext4 filesystem data, UUID=ae1c2bfa-a1a7-4a30-b680-8f8b35cfc324, volume name "cloudimg-rootfs" (needs journal recovery) (extents) (large files) (huge files)
$ sudo file -s /dev/xvdf
/dev/xvdf: Linux rev 1.0 ext4 filesystem data, UUID=23c823a6-b50f-4730-90f7-59960f6ab4af (extents) (large files) (huge files)

$ ls -al /dev/disk/by-uuid/
total 0
drwxr-xr-x 2 root root 80 Apr 26 03:40 .
drwxr-xr-x 4 root root 80 Apr 26 03:40 ..
lrwxrwxrwx 1 root root 10 Apr 26 03:40 23c823a6-b50f-4730-90f7-59960f6ab4af -> ../../xvdf
lrwxrwxrwx 1 root root 11 Apr 26 03:40 ae1c2bfa-a1a7-4a30-b680-8f8b35cfc324 -> ../../xvda1

UUIDが確認できたら/etc/fstabを編集して追記します。元々あるLABEL=cloudimg-rootfs/dev/xvda1のルートボリュームです。

$ sudo vi /etc/fstab
UUID=23c823a6-b50f-4730-90f7-59960f6ab4af       /data   ext4    defaults,nofail        0       2

mount -aコマンドを実行して正しく動作するか確認しましょう。全てのファイルがマウントされます。この時点で設定が誤ってるとエラーが出る可能性があります。

$ sudo mount -a
$ df -h

Amazon EBS ボリュームを使用できるようにする - Amazon Elastic Compute Cloud