環境
- AmazonLinux2 (ami-06098fd00463352b6)
- t2.micro
- OSディスク 8GB
- 追加ディスク 10GBを追加する
EBSを作成
まず、EC2 → ボリューム → ボリュームの作成より、追加ディスクを作成します。
作成したボリュームを対象のEC2にアタッチします。状態がin-useに変わることを確認しましょう。
ボリュームのフォーマットとマウント
次に、EC2にSSH接続して、アタッチしたボリュームを使えるようにしていきます。
以下の公式ドキュメントをベースに進めていきます。
Linux で Amazon EBS ボリュームを使用できるようにする
lsblk
コマンドでデバイス名を確認すると、xvdfに10GBにディスクが追加されていることがわかります。
# デバイス名確認
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 10G 0 disk
念のため、ファイルシステムが作成されていないことをfile -s
コマンドで確認します。
出力に data だけが表示されている場合は、デバイスにはファイルシステムが存在していないことになります。
# ファイルシステム有無を確認
sudo file -s /dev/xvdf
/dev/xvdf: data
lsblk -f
コマンドで確認すると、xvdfとだけ表示されていて、FSTYPEやUUIDが何も表示されていないことがわかります。
# インスタンスにアタッチされているすべてのデバイスに関する情報を確認
sudo lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
xvda
└─xvda1 xfs / 74fc4c15-c86f-4c31-92f6-0df873546b85 /
xvdf
mkfs
コマンドでルートデバイスと同じxfsのファイルシステムを作成します。
作成できたらlsblk -f
コマンドで確認してみましょう。
FSTYPE、UUIDが表示されていることがわかります。
# ファイルシステムを作成
sudo mkfs -t xfs /dev/xvdf
meta-data=/dev/xvdf isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=0
data = bsize=4096 blocks=2621440, 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
# ファイルシステム作成を確認
sudo lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
xvda
└─xvda1 xfs / 74fc4c15-c86f-4c31-92f6-0df873546b85 /
xvdf xfs c6d0f507-452c-471f-9ede-900891b901bb
ちなみに、Linuxではファイルシステム作成前にfdisk
でパーティションを作成しないといけないと思っていたのですが、1つのディスクの領域を/dev/xvdf1
/dev/xvdf2
といった風に分けないのであれば不要みたいです。
OS上でディスクのフォーマットができたので、次は任意のディレクトリを作成してマウントします。
ここでは、/data
というディレクトリを作成してmount
コマンドでマウントしてみます。
lsblk
コマンドやdf
コマンドで確認して、マウントポイントが表示されていればOKです。
# ディレクトリを作成
sudo mkdir /data
# マウント
sudo mount /dev/xvdf /data
# 確認
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 10G 0 disk /data
自動マウント設定
単にマウントしただけでは再起動するとマウント解除されてしまうので、自動マウントされるよう/etc/fstab
に追記しておきます。まず、blkid
コマンドで追加ディスクのUUIDを確認します。前述のlsblk -f
コマンドでも確認することができます。
# アタッチしたデバイス名のUUIDを確認(lsblk -fでも可)
sudo blkid
/dev/xvda1: LABEL="/" UUID="74fc4c15-c86f-4c31-92f6-0df873546b85" TYPE="xfs" PARTLABEL="Linux" PARTUUID="ed868158-eb4b-43a5-8ed5-8b58aa998193"
/dev/xvdf: UUID="c6d0f507-452c-471f-9ede-900891b901bb" TYPE="xfs"
/etc/fstab
ファイルはディスクの構成ファイルのひとつで重要なファイルなので、編集する前にはcp
コマンドで事前にバックアップを取得しておきましょう。
# 事前バックアップ
sudo cp /etc/fstab /etc/fstab.org
vi
で開いて、確認した/dev/xvdf
のUUIDを追記します。
# 自動マウントのための設定をfstabに追記
sudo vi /etc/fstab
UUID=c6d0f507-452c-471f-9ede-900891b901bb /data xfs defaults,nofail 0 2
1つ目の項目にUUIDを指定します。
UUIDの代わりに/dev/xvdf/
を指定してもマウントできますが、公式ドキュメントにあるようにUUIDでの指定が推奨されています。
/etc/fstab でシステムの現在のデバイス名 (/dev/xvdf など) は使用できますが、代わりにデバイスの 128 ビット汎用一意識別子 (UUID) を使用することをお勧めします。デバイス名は変更される可能性がありますが、UUID はパーティションの存続期間を通じて持続します。UUID を使用することで、ハードウェアの再構成後にシステムが起動できなくなる可能性を減らすことができます。
/etc/fstab
のその他の項目の意味については以下のQiita記事などが参考になります。
このあたりはAWS関係なく、Linux共通の仕組みですね。
fstabについて
最後に自動マウントの動作確認を行います。
前の手順ですでにマウントしてあるので、umount
コマンドでマウント解除します。
mount -a
コマンドを実行すると、/etc/fstab
の構成情報を元にマウントがされます。
# アンマウントしてから自動マウントの動作確認
sudo umount /data
sudo mount -a
# 確認
df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 482M 0 482M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 460K 492M 1% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 1.5G 6.6G 19% /
tmpfs 99M 0 99M 0% /run/user/1000
/dev/xvdf 10G 43M 10G 1% /data
tmpfs 99M 0 99M 0% /run/user/0
最後に念のため、EC2を再起動しても自動マウントされていることを確認するのが良いです。
参考リンク
Linux で Amazon EBS ボリュームを使用できるようにする
[Amazon Linux 2 で追加ボリューム(EBS)をマウントする手順]
(https://dev.classmethod.jp/articles/amazon-linux-2-ebs-mount/)