AWS RHEL(EC2)に以前のEC2ボリュームをアタッチして使用する方法

ボリュームのアタッチ

Amazon EC2 コンソール > EBS > Volumes の順に選択して、ボリューム一覧を表示させます。

追加したいボリュームを選択 > アクション > ボリュームのアタッチ の順に選択して、ボリュームのアタッチ画面を表示させます。

アタッチしたいインスタンスデバイスを選択、アタッチを選択します。デバイス名はここで指定したものでない名前が設定されました。

ボリュームがアタッチされたか確認します。

EC2にSSH接続し、lsblkコマンドを入力します。

[ec2-user ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:1 0 8G 0 disk
-nvme0n1p1 259:2 0 8G 0 part /
-nvme0n1p128 259:3 0 1M 0 part
nvme1n1 259:0 0 10G 0 disk
-nvme1n1p1 259:2 0 10G 0 part

ルート(/)に割り当てられているのがEC2が元々持っているボリュームです。何にも割り当てられていない nvme1n1 が今回追加したボリュームです。ソフトウェアが扱えるのは part の記載があるもので、実態は /dev/ 配下にあります。次のコマンドで確認することが出来ます。

ls -l /dev/nvme1n1p1

確認できたらこれでボリュームのアタッチは完了です。ソフトウェアとして認識させるためにマウントします。

マウント

マウント先となる/data/ディレクトリを作成しておきます。以前のボリュームを使用する場合、ファイルシステムの識別子であるUUIDが同じであるため、そのままではマウントすることが出来ません。マウントするには、UUIDを変更してマウントするか、UUIDを無視してマウントするようmountコマンドにオプションを付けて実行します。

試しに普通にマウントしてみます。これだとエラーが起きます。

[ec2-user ~]$ sudo mount /dev/nvme1n1p1 /data

エラーの内容を確認します。

$ sudo dmesg -T

-Tオプションは人間が見やすい時刻表示にしてくれるオプションです。一番最後の行にUUIDが重複している旨のエラーが記載されています。

UUIDの変更

現在ファイルシステムに割り当てられているUUIDを、blkidコマンドまたは xfs_adminコマンドで確認します。UUIDが変更されたか確認するために控えておきましょう。

次のコマンドでUUIDを変更します。

$ sudo xfs_admin -U generate /dev/nvme1n1p1

変更された旨のメッセージが出力されても blkidコマンドで確認すると変更されていません。xfs_adminコマンドで見ると変更されていおり、実際には変更されているので気にせず先に進みましょう。

マウント

次のコマンドでマウントします。今度はマウントが成功します。

$ sudo mount /dev/nvme1n1p1 /data

マウントが成功したら、マウントしたディレクトリの中身を確認しましょう。他のディレクトリと同様の挙動をしたらマウント成功です。

ls -l /data/

要注意事項としては、このままでは再起動した際にマウントが外れしまうことです。

アンマウント

次のコマンドでアンマウントです。マウントポイントの箇所はデバイス名でもアンマウント可能です。

$ umount マウントポイント

先ほど作成したマウントポイント /data/ をアンマウントする場合には、次のようにコマンド入力します。

$ umount /data/

参考:Linux で Amazon EBS ボリュームを使用できるようにする – AWS