はじめに
AWS の EC2 インスタンスに EBS ボリュームをアタッチする方法をメモしておく。
ユースケース
EC2インスタンスが 2 台あり、どちらもディスクの容量を上げたくないが、一時ファイルの置き場所(例えばバックアップのファイル)を確保したい。
準備
- アタッチする
EC2インスタンスを 2 台用意
※アタッチすることを検証するだけであれば1台で問題ない。
デタッチして、他のEC2インスタンスにアタッチすることをしたいので2台でやる。
EC2 インスタンスの作成
どちらも下記のような構成
| 項目 | 設定値 |
|---|---|
| OS | AmazonLinux2023 |
| アーキテクチャ | 64 ビット(Arm) |
| インスタンスタイプ | t4g.nano |
| ストレージ | 8GB(gp3) |
EBS ボリュームをアタッチする
EBS ボリュームを作成する
メニューから Elastic Block Store -> ボリューム を選択する。
ボリュームの作成 を押す
| 項目 | 設定値 |
|---|---|
| ボリュームタイプ | 汎用 SSD(gp3) |
| サイズ (GiB) | 10 |
| アベイラビリティーゾーン | ap-northeast-1d |
※アベイラビリティゾーンをあわせないと、アタッチできないので注意
作成が完了すると、EBS ボリュームは 使用可能 になっている。
EC2インスタンスにログインする

lsblk コマンドでボリュームを確認する。
[ec2-user@ip-172-31-38-101 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 8G 0 disk
├─nvme0n1p1 259:1 0 8G 0 part /
└─nvme0n1p128 259:2 0 10M 0 part df -hで容量の確認
[ec2-user@ip-172-31-38-101 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 215M 0 215M 0% /dev/shm
tmpfs 86M 468K 86M 1% /run
/dev/nvme0n1p1 8.0G 1.7G 6.3G 21% /
tmpfs 215M 0 215M 0% /tmp
tmpfs 43M 0 43M 0% /run/user/1000
[ec2-user@ip-172-31-38-101 ~]$ ボリュームのアタッチ
EC2 コンソールのメニューから Elastic Block Store → ボリューム を選択する。
先ほど作成したボリュームを選択し、「アクション」から「ボリュームのアタッチ」を選択する。

インスタンス で EC2-test-1 という名前のインスタンスを選択する。

選択できたら、ボリュームのアタッチ を選択する。
注意
※EBSのアベイラビリティゾーンが アタッチしたい EC2インスタンスのアベイラビリティゾーンと異なると、表示されないので注意
アタッチできたら、先ほど作成したボリュームは 使用中 になっている。
EC2インスタンスでボリュームをマウントする
EC2 インスタンスに戻る。
再度 lsblk コマンドを実行する。
[ec2-user@ip-172-31-38-101 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 8G 0 disk
├─nvme0n1p1 259:1 0 8G 0 part /
└─nvme0n1p128 259:2 0 10M 0 part
nvme1n1 259:3 0 10G 0 disk 10G の nvme1n1 という名前のボリュームが増えていることを確認
ファイルシステムが作成済みかどうかを確認する。/dev/nvme1n1 に関しては環境によって異なる可能性がある。 (/dev/[デバイス名])
sudo file -s /dev/nvme1n1[ec2-user@ip-172-31-38-101 ~]$ sudo file -s /dev/nvme1n1
/dev/nvme1n1: data今回は、data とでてきたのでファイルシステムは存在していない。
そのためファイルシステムを作成する必要がある。
ext4 のファイルシステムを作成する。
sudo mkfs -t ext4 /dev/nvme1n1[ec2-user@ip-172-31-38-101 ~]$ sudo mkfs -t ext4 /dev/nvme1n1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 2621440 4k blocks and 655360 inodes
Filesystem UUID: ae928447-6ec0-4c1a-9571-58b81da7677d
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done 再度 file コマンドで確認してみる。
[ec2-user@ip-172-31-38-101 ~]$ sudo file -s /dev/nvme1n1
/dev/nvme1n1: Linux rev 1.0 ext4 filesystem data, UUID=ae928447-6ec0-4c1a-9571-58b81da7677d (extents) (64bit) (large files) (huge files)ext4 のファイルシステムになっていることを確認
マウント先のディレクトリを作成する。
sudo mkdir /ebsマウントをする
sudo mount /dev/nvme1n1 /ebsdf -h で確認してみる。
[ec2-user@ip-172-31-38-101 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 215M 0 215M 0% /dev/shm
tmpfs 86M 476K 86M 1% /run
/dev/nvme0n1p1 8.0G 1.7G 6.3G 21% /
tmpfs 215M 0 215M 0% /tmp
tmpfs 43M 0 43M 0% /run/user/1000
/dev/nvme1n1 9.8G 24K 9.3G 1% /ebs/ebs のボリュームがマウントできていることを確認
これでOK!
/ebsにファイルを書き込んで見る。
sudo su
echo "hogehoge" > /ebs/hoge.txt
cat /ebs/hoge.txt
hogehogeデタッチして他のEC2インスタンスにアタッチする
ボリュームのデタッチ
先程アタッチした EC2 インスタンスからボリュームをアンマウントしておく。
sudo umount /ebs[ec2-user@ip-172-31-38-101 ~]$ sudo umount /ebs
[ec2-user@ip-172-31-38-101 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 215M 0 215M 0% /dev/shm
tmpfs 86M 476K 86M 1% /run
/dev/nvme0n1p1 8.0G 1.7G 6.3G 21% /
tmpfs 215M 0 215M 0% /tmp
tmpfs 43M 0 43M 0% /run/user/1000アンマウントできたら、EC2 コンソールに移動する。
EC2 コンソールのメニューから Elastic Block Store → ボリューム を選択する。
先ほど作成したボリュームを選択し、「アクション」から「ボリュームのデタッチ」を選択する。
「デタッチ」を選択する。
アタッチ&マウント
先程と同じ手順で、 EC2-test-2 にボリュームをアタッチする。
lsblk コマンドで確認
[ec2-user@ip-172-31-37-191 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 8G 0 disk
├─nvme0n1p1 259:1 0 8G 0 part /
└─nvme0n1p128 259:2 0 10M 0 part
nvme1n1 259:3 0 10G 0 disk file コマンドで確認
すでにファイルシステムは作成されているはずなので確認する。
[ec2-user@ip-172-31-37-191 ~]$ sudo file -s /dev/nvme1n1
/dev/nvme1n1: Linux rev 1.0 ext4 filesystem data, UUID=ae928447-6ec0-4c1a-9571-58b81da7677d (extents) (64bit) (large files) (huge files)マウント先を作成する。
sudo mkdir /ebssudo mount /dev/nvme1n1 /ebsdf -h で確認
[ec2-user@ip-172-31-37-191 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 215M 0 215M 0% /dev/shm
tmpfs 86M 476K 86M 1% /run
/dev/nvme0n1p1 8.0G 1.7G 6.3G 21% /
tmpfs 215M 0 215M 0% /tmp
tmpfs 43M 0 43M 0% /run/user/1000
/dev/nvme1n1 9.8G 28K 9.3G 1% /ebs先程別の EC2インスタンスで書き込んだファイルがあるかを確認する。
[ec2-user@ip-172-31-37-191 ~]$ ls /ebs
hoge.txt lost+found
[ec2-user@ip-172-31-37-191 ~]$ sudo cat /ebs/hoge.txt
hogehogeあるのでOK!
以上で終わり。
おまけ: 自動マウント
ボリュームを追加でアタッチしたあと、マウントについては再起動時に自動で実施されないので設定をする必要がある。
アンマウントしておく。
[ec2-user@ip-172-31-38-101 ~]$ sudo umount /ebs
[ec2-user@ip-172-31-38-101 ~]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 4096 0 4096 0% /dev
tmpfs 219352 0 219352 0% /dev/shm
tmpfs 87744 480 87264 1% /run
/dev/nvme0n1p1 8311788 1742456 6569332 21% /
tmpfs 219352 0 219352 0% /tmp
tmpfs 43868 0 43868 0% /run/user/1000
/dev/nvme0n1p128 10202 1384 8818 14% /boot/efi下記を追記する。/etc/fstab
/dev/nvme1n1 /ebs ext4 defaults,nofail 0 2マウントする。
sudo mount -a[ec2-user@ip-172-31-38-101 ~]$ sudo mount -a
[ec2-user@ip-172-31-38-101 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 215M 0 215M 0% /dev/shm
tmpfs 86M 480K 86M 1% /run
/dev/nvme0n1p1 8.0G 1.7G 6.3G 21% /
tmpfs 215M 0 215M 0% /tmp
tmpfs 43M 0 43M 0% /run/user/1000
/dev/nvme0n1p128 10M 1.4M 8.7M 14% /boot/efi
/dev/nvme1n1 9.8G 28K 9.3G 1% /ebs念のため、再起動したあともマウントされるかを見てみる。
↑上記で設定も確認も問題ないのだが念のため。
sudo reboot , #_
~\_ ####_ Amazon Linux 2023
~~ \_#####\
~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Sat Jun 24 02:15:56 2023 from xxx.xxx.xxx.xxx
[ec2-user@ip-172-31-38-101 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 215M 0 215M 0% /dev/shm
tmpfs 86M 480K 86M 1% /run
/dev/nvme0n1p1 8.0G 1.7G 6.3G 22% /
tmpfs 215M 0 215M 0% /tmp
/dev/nvme1n1 9.8G 28K 9.3G 1% /ebs
tmpfs 43M 0 43M 0% /run/user/1000マウントされているのでOK!
参考
- インスタンスへの Amazon EBS ボリュームのアタッチ
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-attaching-volume.html - Linux で Amazon EBS ボリュームを使用できるようにする
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-using-volumes.html - EC2インスタンスに追加でEBSボリュームをアタッチする。
https://qiita.com/kooohei/items/d692931cbebf97006f96
おわりに
EBS のボリュームマウントは比較的簡単にできるので忘れないようにメモ書きをした。
基本的に公式のリファレンスに載っているので都度見れば良いのだが、やったことの記録として残しておいた。
他のも一時ファイルを残すのであれば、S3をファイルストレージとしてマウントする(goofys等を使用),EFSを使うなどもの考えられる。 EFS は共有を目的としているので、時と場合によって使い分ける必要があるなと思った。



