1
2

More than 1 year has passed since last update.

AWS EC2でインスタンスに複数のEBSボリュームをアタッチする

Last updated at Posted at 2023-02-14

AWS EC2でインスタンスに複数のEBSボリュームをアタッチする

EC2インスタンスは、仮想マシンの資料するファイルストレージにEBSという仮想ディスクを使用.
柔軟に容量を追加したり、別のディスク(ボリューム)を追加したりできる.

すでに仮想マシンにアタッチ済みボリュームを格納することも可能だが、一時的に容量を追加したい時、格納するデータによって
ディスクを切り分けたい場合など、後から別のEBSボリュームをアタッチするのが割と役立つ.

AWS公式ドキュメント EBSマルチアタッチ

想定読者

  • すでにAWS EC2インスタンスを起動・接続している
  • EC2にS3ではなくディスク容量を追加したい方(機械学習など、大容量データを少しずつs3から持ってくると、実装面や速度面でネックとなるのでインスタンスのストレージで完結させたい方)

ローカルストレージの容量確認

dfコマンドで確認できる. -hで容量の安易をいい感じにしてくれる

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        31G   12G   20G  39% /
tmpfs           7.9G     0  7.9G   0% /dev/shm
tmpfs           3.2G  840K  3.2G   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/xvda15     105M  6.1M   99M   6% /boot/efi
tmpfs           1.6G  4.0K  1.6G   1% /run/user/1000

ここではインスタンス作成時にEBSを32GBで作成していたため、空き容量は
/dev/root 31G 12G 20G 39% /に記載のある通り、32G中う12GBを使用し残り20GB.

20GBもあれば大抵のことは可能だが、大きいデータを作業インスタンスから直接読み込みたい場合など、dist容量を追加で
呼び出したい時がある.

EBS ボリュームの作成

AWSからEC2を選択し、左側のメニューからボリュームを選択. 選択すると右上にボリュームの作成というボタンが表示されるので選択.

スクリーンショット 2023-02-15 1.20.39(2).png

ボリュームタイプ、サイズ、アベイラビリティーゾーンを選択.
ボリュームタイプは汎用SSD(gp2かgp3)を選択しておけば良く、サイズは必要な容量を設定.
参考までにEBS料金で作成するボリュームのリージョンを見れば値段がわかる.

スクリーンショット 2023-02-15 1.21.00(2).png

作成したら作成したボリュームを一覧画面から選択し、アクションからボリュームのアタッチを選択.
ここでは、サンプルとして、5GBのものを選択しているが、実際には先ほぼ作成したものを選べば良い.
スクリーンショット 2023-02-15 1.33.29(2).png

設定したら、作成したボリュームをアタッチしたいインスタンスを設定.

ここで要注意なのが、アタッチするためにはインスタンスとEBSボリュームがリージョンだけでなく、アベイラビリティーゾーンまで一致している必要がある.
インスタンスを設定したら[ボリュームをアタッチ]ボタンを押す.

スクリーンショット 2023-02-15 1.33.38(2).png

アタッチしたらEC2のインスタンスから、ボリュームをアタッチしたインスタンスを選択して、
インスタンス情報の画面から中央下部のストレージを選択。

ボリューム一覧が表示されているので、先ほどアタッチしたボリュームが表示されていることを確認.
下記画像では、デバイス名

スクリーンショット 2023-02-15 1.48.41(2).png

アタッチしたボリュームを使用できるようにする

インスタンスに接続して、df -hを実行
この段階ではまだアタッチしたボリュームは使用できない

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        31G   12G   20G  39% /
tmpfs           7.9G     0  7.9G   0% /dev/shm
tmpfs           3.2G  840K  3.2G   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/xvda15     105M  6.1M   99M   6% /boot/efi
tmpfs           1.6G  4.0K  1.6G   1% /run/user/1000

lsblkコマンドでアタッチされたデバイスの確認

一番下の、xvdfに50GB(先ほぼアタッチしたボリューム)が存在するが、まだ利用できない状態.

ここで、xvdfはデバイス名で、都度変わることがあるので、後の作業は全てこのデバイス名の箇所を適宜
実行環境のものに置き換える必要あり.
(基本はxvdf.)

xvdf/dev/xvdfに格納されているはず.

$ lsblk
NAME     MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0      7:0    0  24.4M  1 loop /snap/amazon-ssm-agent/6312
loop1      7:1    0  55.6M  1 loop /snap/core18/2679
loop2      7:2    0  63.3M  1 loop /snap/core20/1778
loop3      7:3    0  63.3M  1 loop /snap/core20/1822
loop4      7:4    0 111.9M  1 loop /snap/lxd/24322
loop5      7:5    0  49.8M  1 loop /snap/snapd/17950
xvda     202:0    0    32G  0 disk 
├─xvda1  202:1    0  31.9G  0 part /
├─xvda14 202:14   0     4M  0 part 
└─xvda15 202:15   0   106M  0 part /boot/efi
xvdf     202:80   0    50G  0 disk 

sudo file -s /dev/xvdfを実行する

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

ここでまだ、/dev/xvdf: dataとだけ表示されるはず. ここで、GI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)のような出力がされた場合、次のmkfs -tコマンドはスキップ.

mkfs -t コマンドを使用し、そのボリューム上にファイルシステムを作成します。

$ sudo mkfs -t xfs /dev/xvdf
meta-data=/dev/xvdf              isize=512    agcount=4, agsize=3276800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=13107200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=6400, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

これでボリューム上にファイルシステムが作成されたので、適用な階層にマウントする

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

これでボリュームがマウントされたことが確認できる

$ lsblk
NAME     MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0      7:0    0  24.4M  1 loop /snap/amazon-ssm-agent/6312
loop1      7:1    0  55.6M  1 loop /snap/core18/2679
loop2      7:2    0  63.3M  1 loop /snap/core20/1778
loop3      7:3    0  63.3M  1 loop /snap/core20/1822
loop4      7:4    0 111.9M  1 loop /snap/lxd/24322
loop5      7:5    0  49.8M  1 loop /snap/snapd/17950
xvda     202:0    0    32G  0 disk 
├─xvda1  202:1    0  31.9G  0 part /
├─xvda14 202:14   0     4M  0 part 
└─xvda15 202:15   0   106M  0 part /boot/efi
xvdf     202:80   0    50G  0 disk /data

一番下のxvdf 202:80 0 50G 0 disk /dataで先ほどとは異なり、
/dataへのマウントができている.

最後にストレージ容量を再度確認.

/dev/xvdf 50G 390M 50G 1% /dataが追加されている.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        31G   12G   20G  39% /
tmpfs           7.9G     0  7.9G   0% /dev/shm
tmpfs           3.2G  840K  3.2G   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/xvda15     105M  6.1M   99M   6% /boot/efi
tmpfs           1.6G  4.0K  1.6G   1% /run/user/1000
/dev/xvdf        50G  390M   50G   1% /data

これでインスタンスに後からボリュームを追加できた.

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2