Amazon Linux 2 RCではNVMeボリュームの揮発性内部キャッシュが無効なことを確認した

2018.02.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ども、大瀧です。
タイムラインで以下のブログ記事が目にとまったので、Amazon EC2環境だとどうなっているか確認した結果をシェアします。

Amazon EC2で利用できるNVMeデバイス

現時点でEC2で利用できるNVMeデバイスと対応するインスタンスタイプは以下です。

それぞれのインスタンスでAmazon Linuxを実行し、揮発性内部キャッシュの扱いがどうなっているか確認しました。

検証環境

  • AWSリージョン : オレゴン(東京ではC5インスタンスが利用できないため)
  • インスタンスタイプ : c5.large、i3.large
  • AMI : Amazon Linux 2 LTS Candidate AMI 2017.12.0 (HVM), SSD Volume Type - ami-7f43f307

まずはI3インスタンスから。インスタンスストアをアタッチ(/dev/nvme0)し、以下のコマンドラインを実行しました。

$ sudo yum install -y nvme-cli
  :(略)
$ sudo nvme id-ctrl -H /dev/nvme0 | grep 'vwc\|Volatile'
vwc     : 0
  [0:0] : 0	Volatile Write Cache Not Present
$ sudo nvme get-feature /dev/nvme0 --feature-id=6
NVMe Status:INVALID_FIELD(2002)
$

NVMeデバイスで揮発性内部キャッシュが無効で、パラメータ取得がエラーになりました。ひとまず揮発性内部キャッシュ自体は動作していないことがわかります。

続いてC5インスタンスです。既定でルートボリュームがNVMeのEBSボリューム(/dev/nvme0)になるので、そちらで確認しました。

$ sudo yum install -y nvme-cli
  :(略)
$ sudo nvme id-ctrl -H /dev/nvme0 | grep 'vwc\|Volatile'
vwc     : 0x1
  [0:0] : 0x1	Volatile Write Cache Present
$ sudo nvme get-feature /dev/nvme0 --feature-id=6
get-feature:0x6 (Volatile Write Cache), Current value:00000000
$

こちらは機能としてはサポートするけれども、無効になっている様子が確認できました。他のAMIやLinuxディストリビューションでは書き込みバリアが有効になっているかもしれませんので、確認することをお奨めします。

まとめ

EC2のNVMeボリュームにおける揮発性内部キャッシュがどうなっているか、確認してみました。インスタンスストアは元々永続性を担保する仕組みではありませんし、EBSは物理的な冗長性が謳われていますので一般的な用途であれば妥当な設定と考えられます。NVMeボリュームの挙動について特定のワークロードで気になるところがあれば、AWSサポートに問い合わせるのが良いでしょう。

参考URL