Nitroハイパーバイザーで追加ディスクとしてEBSを使う場合の注意点

シェアする

Voiced by Amazon Polly

T3インスタンスをはじめとするNitroハイパーバイザーを使用したEC2インスタンスにおいては、EBSを追加で接続する場合に設定を間違えるとインスタンスが起動できなくなります。

広告



Nitroハイパーバイザーを使用したインスタンスは何が違うのか

Nitroハイパーバイザーを使用したインスタンスでは、NVMeインターフェイスを使用してディスクにアクセスします。
NVMeインターフェイスの仕様上、ディスクのデバイスファイル名が固定されません。デバイスファイル名が固定されないため、正しい設定が行われていない場合にEC2インスタンスが起動できなくなる場合があります。
詳細については、次のリンクを参照してください: https://aws.amazon.com/jp/ec2/faqs/

旧来のXenインスタンスでは、dfコマンドでは次のような出力を示します。
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 40G 4.8G 36G 12% /

一方、Nitroハイパーバイザー上のインスタンスでは次のような出力を示します。
Filesystem Size Used Avail Use% Mounted on
/dev/nvme0n1p1 8.0G 5.0G 3.0G 63% /

ここで、/dev/nvme0n1p1というデバイスファイル名が表示されています。しかし、ここで表示されているものは今回の起動時のものに限り、再起動後にこのデバイスファイル名となるとは限りません

正しく設定されていないとどうなるか

/etc/fstabに設定する際、UUIDではなくデバイスファイル名で指定した場合、当該EC2インスタンスを起動できなくなる恐れがあります。
具体的にはEmergency modeに突入し、インスタンスを操作できない状態になります。
この状態になった場合、EC2ではシリアルコンソールが利用できないためインスタンスの再構築が必要となります

別のEC2インスタンスから当該EBSをマウントして修正することも可能な場合がありますが、面倒なので注意しましょう。

正しい追加ディスクの設定方法

操作を行う前に、イメージおよびスナップショットを作成して起動できない状態に備えておくことを強く推奨します。

正しく設定するためには、ディスクをデバイスファイル名ではなくUUIDで指定します。UUIDはディスクに固有なため、デバイスファイル名が変わっても正しくディスクを特定できます。
ディスクおよびパーティションのUUIDを確認するには、次のコマンドを入力します。
$ blkid /dev/nvme0n1p1
この操作の出力は、次のようになります。
/dev/nvme0n1p1: UUID="(省略)" TYPE="xfs"

代わりに、lsblk -fコマンドを使用することもできます。
このコマンドを使用した場合の出力は、次の通りです。
NAME FSTYPE LABEL UUID MOUNTPOINT
nvme0n1
└mqnvme0n1p1 xfs (省略) /

これを/etc/fstabに記載する場合は、デバイスファイル名を記載していた箇所を UUID= に置き換えます。
具体的には、次のような記載方法となります。
UUID=(省略) / xfs quota,seclabel,inode64,relatime,attr2,grpquota,usrquota,rw 0 0
これで、再起動しても問題なくアクセスできるはずです。

Nitroハイパーバイザー以外のEC2インスタンスでも、UUIDによる設定を行うことは可能です。