Nutanix の分散ストレージ ファブリックでは、vDisk のデータ(主に VM の仮想ディスク)をノード/ディスクに分散配置しています。
Nutanix Bible で紹介されている CVM のコマンドを利用して、実際にデータ配置の様子を表示してみます。
Nutanix Bible - Advanced CLI Information
https://nutanixbible.com/#anchor-book-of-acropolis-advanced-cli-information
対象の VM
今回は、vm01 という VM で確認します。
vDisk 1つと、CDROM 1つをもつ VM です。
CVM$ acli vm.disk_list vm01 Device bus Device index ide 0 scsi 0
このうち、ゲスト OS がインストールされる vDisk は、SCSI(scsi.0)の方です。
CVM$ acli vm.disk_get vm01 disk_addr=scsi.0 scsi.0 { addr { bus: "scsi" index: 0 } container_id: 11 container_uuid: "7807366b-db07-4126-8882-1a0c684a409b" device_uuid: "bd331241-a1a7-494f-8322-8e1a18a240c1" naa_id: "naa.6506b8d4dda6f8102fa5192c57124326" vmdisk_size: 17179869184 vmdisk_uuid: "43007eb1-6bbb-4014-b47b-3a0508e6a052" }
このうち、vmdisk_uuid をもとに情報を取得してみます。
CVM$ acli vm.disk_get vm01 disk_addr=scsi.0 | grep vmdisk_uuid vmdisk_uuid: "43007eb1-6bbb-4014-b47b-3a0508e6a052"
vdisk_id の確認
vdisk_config_printer で、vmdisk_uuid をもとに vDisk の vdisk_id を確認します。この vDisk は、「vdisk_id: 5990」でした。
CVM$ vdisk_config_printer | grep 43007eb1-6bbb-4014-b47b-3a0508e6a052 -C5 last_modification_time_usecs: 1584785968283381 vdisk_id: 5990 vdisk_name: "NFS:2:0:367" vdisk_size: 17179869184 iscsi_target_name: "iqn.2010-06.com.nutanix:vmdisk-43007eb1-6bbb-4014-b47b-3a0508e6a052" iscsi_lun: 0 container_id: 11 creation_time_usecs: 1584786946119197 vdisk_creator_loc: 9 vdisk_creator_loc: 4479 vdisk_creator_loc: 195717 nfs_file_name: "43007eb1-6bbb-4014-b47b-3a0508e6a052" scsi_name_identifier: "naa.6506b8d4dda6f8102fa5192c57124326" vdisk_uuid: "59d46087-2eb4-4451-b240-f59904b79b2e" chain_id: "2ddfa3b0-8448-46d4-b67b-35894b0664c7" last_modification_time_usecs: 1584786946155577
データ配置の表示
vdisk_usage_printer で、vdisk_id を指定して、データ配置を表示できます。1つの vDisk が、実際には細かく分割されて配置されている様子がわかります。データの再配置やリビルドも、vDisk 全体ではなく、この粒度で効率よく処理できます。
コマンド出力例の全文はこちらをどうぞ。
Nutanix CVM のコマンド出力例。CVM$ vdisk_usage_printer -vdisk_id=5990 > vdisk_usage_printer_5990.txt · GitHub
データ配置を読みとく
「Replicas(disk/svm/block/rack)」列の表示を、少し拡大して見てみます。
この vDisk は データが2重化される(RF2:Replication Factor 2)のストレージ コンテナに配置されているので、[disk/svm/block/rack] 形式の情報が2列になっています。ちなみに RF3 の場合は、これが 3列になります。
ここでの svm とは、CVM のことです。1つ目のデータ レプリカが、ちょうどいい感じに 1つの CVM のディスクに配置されています。
そして 1つ目のデータが配置されているディスクは、Disk ID 50 と 51 になっています。
ここからは、Prism から確認してみます。
「仮想マシン」→「テーブル」を開くと、この vDisk をもつ vm01 は、NTNX-32f93d08-A という AHV ホストで起動しています。
「ハードウェア」→「テーブル」→「Host」を開くと、この AHV ホストの IP アドレスは、192.168.20.21 です。(じつのところ「仮想マシン」画面でもホストの IP アドレスはわかります。)
そして「Disk」を開くと、Disk ID 50 と 51 は、AHV ホスト 192.168.20.21 のディスク(というか SSD)でした。
2重化された vDisk のデータの 1つが VM の起動しているノードに配置されている、いわゆるデータ ローカリティの様子が見られました。
以上。