またgovcの小ネタ集やります。今回はディスクについて。

TL; DR

VMのディスクを確認するには

$ govc device.info -vm myvm disk-*
Name:           disk-1000-0
  Type:         VirtualDisk
  Label:        Hard disk 1
  Summary:      512,000 KB
  Key:          2000
  Controller:   pvscsi-1000
  Unit number:  0
  File:         [datastore1] myvm/myvm.vmdk

ディスクのパスから確認するには

$ govc datastore.disk.info -ds datastore1 myvm/myvm.vmdk
Name:      myvm/myvm.vmdk
  Type:    eagerZeroedThick
  Parent:

はじめに

ディスク取得コマンドはいろいろあってややこしいので、整理のためにまとめておきます。

VMのデバイス取得 govc device.info

NICやディスク等、VMに接続しているデバイスがすべて取得できます。

 govc device.info -vm myvm
Name:               ide-200
  Type:             VirtualIDEController
  Label:            IDE 0
  Summary:          IDE 0
  Key:              200
  Devices:
Name:               ide-201
  Type:             VirtualIDEController
  Label:            IDE 1
  Summary:          IDE 1
  Key:              201
  Devices:
Name:               ps2-300
  Type:             VirtualPS2Controller
  Label:            PS2 controller 0
  Summary:          PS2 controller 0
  Key:              300
  Devices:          keyboard-600, pointing-700
Name:               pci-100
  Type:             VirtualPCIController
  Label:            PCI controller 0
  Summary:          PCI controller 0
  Key:              100
  Devices:          video-500, vmci-12000, pvscsi-1000, ahci-15000, ethernet-0, ethernet-1
Name:               sio-400
  Type:             VirtualSIOController
  Label:            SIO controller 0
  Summary:          SIO controller 0
  Key:              400
  Devices:
Name:               keyboard-600
  Type:             VirtualKeyboard
  Label:            Keyboard
  Summary:          Keyboard
  Key:              600
  Controller:       ps2-300
  Unit number:      0
Name:               pointing-700
  Type:             VirtualPointingDevice
  Label:            Pointing device
  Summary:          Pointing device; Device
  Key:              700
  Controller:       ps2-300
  Unit number:      1
Name:               video-500
  Type:             VirtualMachineVideoCard
  Label:            Video card
  Summary:          Video card
  Key:              500
  Controller:       pci-100
  Unit number:      0
Name:               vmci-12000
  Type:             VirtualMachineVMCIDevice
  Label:            VMCI device
  Summary:          Device on the virtual machine PCI bus that provides support for the virtual machine communication interface
  Key:              12000
  Controller:       pci-100
  Unit number:      17
Name:               pvscsi-1000
  Type:             ParaVirtualSCSIController
  Label:            SCSI controller 0
  Summary:          VMware paravirtual SCSI
  Key:              1000
  Devices:          disk-1000-0
Name:               ahci-15000
  Type:             VirtualAHCIController
  Label:            SATA controller 0
  Summary:          AHCI
  Key:              15000
  Devices:          cdrom-16000
Name:               cdrom-16000
  Type:             VirtualCdrom
  Label:            CD/DVD drive 1
  Summary:          Remote device
  Key:              16000
  Controller:       ahci-15000
  Unit number:      0
  Connected:        false
  Start connected:  false
  Guest control:    true
  Status:           untried
Name:               disk-1000-0
  Type:             VirtualDisk
  Label:            Hard disk 1
  Summary:          512,000 KB
  Key:              2000
  Controller:       pvscsi-1000
  Unit number:      0
  File:             [datastore1] myvm/myvm.vmdk
Name:               ethernet-0
  Type:             VirtualVmxnet3
  Label:            Network adapter 1
  Summary:          VM Network
  Key:              4000
  Controller:       pci-100
  Unit number:      7
  Connected:        false
  Start connected:  true
  Guest control:    true
  Status:           untried
  MAC Address:      00:50:56:a1:d6:86
  Address type:     assigned
Name:               ethernet-1
  Type:             VirtualVmxnet3
  Label:            Network adapter 2
  Summary:          DVSwitch: 50 21 44 2c 15 ff a7 d2-28 b0 2a c5 2c 26 45 5d
  Key:              4001
  Controller:       pci-100
  Unit number:      8
  Connected:        false
  Start connected:  true
  Guest control:    true
  Status:           untried
  MAC Address:      00:50:56:a1:bc:fd
  Address type:     assigned

ディスクの名前は disk- ではじまるので、名前で絞り込めば冒頭のようにディスクだけ取得できます。

$ govc device.info -vm myvm disk-*
Name:           disk-1000-0
  Type:         VirtualDisk
  Label:        Hard disk 1
  Summary:      512,000 KB
  Key:          2000
  Controller:   pvscsi-1000
  Unit number:  0
  File:         [datastore1] myvm/myvm.vmdk

データストア内のディスク確認 datastore.disk.info

こちらはデータストアに紐づいた情報なので、プロビジョニングポリシーが確認できます。

$ govc datastore.disk.info -ds datastore1 myvm/myvm.vmdk
Name:      myvm/myvm.vmdk
  Type:    eagerZeroedThick
  Parent:
# UUIDも確認できる
$ govc datastore.disk.info -uuid -ds datastore1 myvm/myvm.vmdk
Name:      myvm/myvm.vmdk
  UUID:    60 00 C2 93 88 2a d7 97-99 19 52 74 93 fa 1f 3c
  Type:    eagerZeroedThick
  Parent:

First Class Diskの取得: disk.ls

一見すると govc disk.ls が一番手っ取り早そうですが、VMのディスクは取れません

# 何も出ない?
$ govc disk.ls

このコマンドは、VMに紐づかないFirst Class Disk (FCD)を取得するものでした。

vRealize Automation Cloud の First Class Disk ストレージで実行できること

どうやらk8sのPVC等、「VM以外の単位でディスクを管理したい」際に使うようです。

vSAN 6.7 U3 What’s New その1 – エディションの追加とk8s 連携 – – virtual pantry

せっかくなのでFCDを作って確認してみます。

$ govc disk.create -size 10M mydisk
[21-03-22 09:47:58] Creating mydisk...OK
0e62faf6-4420-4aba-b9bb-67f34a03d1c4

今度はちゃんと確認できました。

$ govc disk.ls
0e62faf6-4420-4aba-b9bb-67f34a03d1c4  mydisk

作成したディスクはVMに紐づかないので /fcd 配下に格納されます。

$ govc datastore.ls /fcd
d870784bfa58431084602b9e1644a75c-flat.vmdk
d870784bfa58431084602b9e1644a75c.vmdk

$ govc datastore.disk.info fcd/d870784bfa58431084602b9e1644a75c.vmdk
Name:      fcd/d870784bfa58431084602b9e1644a75c.vmdk
  Type:    thin
  Parent:

vSphere Client上でもディスクが確認できます。

おわりに

ディスク取得コマンドのおさらいをすることで、vSphereの新しい機能も知ることができました。govcネタはまだいくつかありそうなので、もう少しお付き合いください。