AWSのEC2インスタンスでは最近高速SSDのNVMeを採用しているインスタンスタイプがある。
NVM Express (NVMe) もしくは NVMHCI (Non-Volatile Memory Host Controller Interface) は、PCI Express (PCIe) を通じて、不揮発性ストレージメディアを接続するための論理デバイスインターフェースの規格であり、シリアルATAに代わる次世代の接続インターフェース規格である。
引用元 :https://ja.wikipedia.org/wiki/NVM_Express
これを利用しているインスタンスでは下記のように/dev/nvme0n1p1
のようなデバイスになっており、従来通りにAWS CLIで自動マウントしようとすると失敗する。
# NVMe udev 1.9G 0 1.9G 0% /dev tmpfs 390M 5.7M 384M 2% /run /dev/nvme0n1p1 97G 8.4G 89G 9% /
# 昔ながらのデバイス Filesystem Size Used Avail Use% Mounted on udev 288M 0 288M 0% /dev tmpfs 59M 2.3M 57M 4% /run /dev/xvda1 97G 8.3G 89G 9% /
AWS CLIではまず xvdbをAttachし、利用できるようになるのを待ち、マウントする。
while :; do aws ec2 wait volume-available --volume-ids $VOLUME_ID && break done; aws ec2 attach-volume --volume-id $VOLUME_ID --instance-id $me --device /dev/xvdb aws ec2 wait volume-in-use --volume-ids $VOLUME_ID until [ -e /dev/nvme1n1 ]; do sleep 1 done mount /dev/nvme1n1 /mnt
昔ながらとNVMeをサポートするコマンドは、下記のような感じ。
while :; do aws ec2 wait volume-available --volume-ids $VOLUME_ID && break done; aws ec2 attach-volume --volume-id $VOLUME_ID --instance-id $me --device /dev/xvdb aws ec2 wait volume-in-use --volume-ids $VOLUME_ID lsblk | grep nvme if [ $? = 0 ]; then until [ -e /dev/nvme1n1 ]; do sleep 1 done mount /dev/nvme1n1 /mnt else until [ -e /dev/xvdb ]; do sleep 1 done mount /dev/xvdb /mnt fi