はじめに
vSphere 上で稼働する仮想マシンの移行検討時に RDM (Raw Device Mapping) を利用する仮想マシンの SCSIバス共有、RDM 互換モード、 LUN(naa.ID) 等を調査するのに vSphere Client の GUI から確認するのは骨が折れるため、 PowerCLI を利用した調査用の PowerShell コマンドラインを作成したため、記事に残す。
コマンドライン処理概要
- 指定したテキストファイル (
vm_list.txt) に記載された名前の仮想マシン名を調査対象とする - 各仮想マシンに接続されているハードディスクの中から仮想と物理の RDM 互換モードで動作するディスクのみ抽出し、情報を出力する
- 情報の出力はデスクトップに CSV ファイル (
RDM_List_yyyyMMdd-HHmmss.csv) に出力する
コマンドライン実行による出力情報
出力情報一覧
| # | 項目名 (Header) | 内容 | 解説 | 出力例 |
|---|---|---|---|---|
| 1 | VMName | 仮想マシン名 | 調査対象の仮想マシン名 | cent-rp-sp-01 |
| 2 | ScsiController | SCSI コントローラ名 | RDM ディスクの接続先となる SCSI コントローラ名 | SCSI controller 1 |
| 3 | ScsiController Type | SCSI コントローラタイプ | RDM ディスクの接続先となる SCSI コントローラのタイプ (BusLogic パラレル / LSI Logic パラレル / LSI Logic SAS / VMware 準仮想化 ) | ParaVirtual |
| 4 | BusSharingMode | SCSI バスの共有 | RDM ディスクの接続先となる SCSI コントローラの SCSI バス共有 (なし / 物理 / 仮想) | Physical |
| 5 | DiskName | ディスク名 | vSphere Client 上のディスク名 | Hard disk 2 |
| 6 | CapacityGB | 容量 (GB) | RDM ディスクのサイズ (GB) | 5 |
| 7 | DiskType | ディスクタイプ | RDM ディスクのディスクタイプ (物理 / 仮想) | RawPhysical |
| 8 | MultiWriter | 共有 | RDM ディスクに対する複数仮想マシンからの同時書き込み設定 (共有なし / マルチライター)) | sharingNone |
| 9 | Filename | ファイルパス | RDM のマッピングファイルのデータストア名を含む場所 | [iscsi-pool-01] cent-rp-sp-01/cent-rp-sp-01_1.vmdk |
| 10 | DeviceNode | 物理デバイスノード | OS 側から見たディスクの位置(バス番号:ユニット番号) | SCSI (1:0) |
| 11 | DeviceName | レガシー識別子 | ESXi が生成する各デバイスの代替のレガシー識別子 | vml.02000000006589cfc000000d8a923a0d7f629823d7695343534920 |
| 12 | ScsiCanonicalName | 物理 LUN 識別子 | RDM のマッピング先となる物理 LUN のストレージにより提供される一意な識別子 naa (Network Addressing Authority) 、EUI (Extended Unique Identifier) | naa.6589cfc000000d8a923a0d7f629823d7 |
vSphere Client 画面と出力情報の紐づけ


CSVファイル出力サンプル
"VMName","ScsiController","ScsiController Type","BusSharingMode","DiskName","CapacityGB","DiskType","MultiWriter","Filename","DeviceNode","DeviceName","ScsiCanonicalName"
"cent-rp-sp-01","SCSI controller 1","ParaVirtual","Physical","Hard disk 2","5","RawPhysical","sharingNone","[iscsi-pool-01] cent-rp-sp-01/cent-rp-sp-01_1.vmdk","SCSI (1:0)","vml.02000000006589cfc000000d8a923a0d7f629823d7695343534920","naa.6589cfc000000d8a923a0d7f629823d7"
"cent-rp-sp-02","SCSI controller 1","ParaVirtual","Physical","Hard disk 2","5","RawPhysical","sharingMultiWriter","[iscsi-pool-01] cent-rp-sp-01/cent-rp-sp-01_1.vmdk","SCSI (1:0)","vml.02000000006589cfc000000d8a923a0d7f629823d7695343534920","naa.6589cfc000000d8a923a0d7f629823d7"
...
前提条件
- PowerCLI がインストールされていること
- PoewrCLI を実行する端末から vCenter Server に接続可能であること
RDM 調査用情報出力
キーボードの [Windows] + [X] でシステムメニューを開き、 [A] キー を押下し、ターミナルを管理者として起動する
ターミナルがコマンド プロンプトで起動している場合、以下のコマンドで PowerShell を起動する
powershellConnect-VIServerで<vCenter Server FQDN>、vCenter Serverの<ユーザー名>、<パスワード>を指定し、 vCenter Server に接続
Connect-VIServer -Server vcsa-060.lab.internal -User "administrator@vsphere.local" -Password "P@ssw0rd" -forceName Port User ---- ---- ---- vcsa-060.lab.internal 443 VSPHERE.LOCAL\Administrator調査対象の仮想マシンのリストファイルのファイルパス、ファイルの内容をそれぞれ変数に格納
$vmListFile = "$env:userprofile\desktop\vm_list.txt" $vmNames = Get-Content $vmListFile -Encoding UTF8 | Where-Object { $_.Trim() -ne "" }RDM 調査結果となる情報出力ファイルのファイルパスを変数に格納
$CsvFile = "$env:userprofile\desktop\RDM_List_$(Get-Date -Format "yyyyMMdd-HHmmss").csv"RDM 調査結果の情報出力
$vmNames | ForEach-Object { Get-VM -Name $_ } | Get-HardDisk -DiskType "RawPhysical","RawVirtual" | Select-Object ` @{N="VMName"; E={$_.Parent.Name}}, ` @{N="ScsiController"; E={$hd=$_; ($hd | Get-ScsiController).Name}}, ` @{N="ScsiController Type"; E={$hd=$_; ($hd | Get-ScsiController).Type}}, ` @{N="BusSharingMode"; E={$hd=$_; ($hd | Get-ScsiController).BusSharingMode}}, ` @{N="DiskName"; E={$_.Name}}, ` @{N="CapacityGB"; E={$_.CapacityGB}}, ` @{N="DiskType"; E={$_.DiskType}}, ` @{N="MultiWriter"; E={$_.ExtensionData.Backing.Sharing}}, ` @{N="Filename"; E={$_.Filename}}, ` @{N="DeviceNode"; E={ $hd=$_; $ctl = $hd | Get-ScsiController; "SCSI ({0}:{1})" -f $ctl.ExtensionData.BusNumber, $hd.ExtensionData.UnitNumber }}, ` @{N="DeviceName"; E={$_.DeviceName}}, ` @{N="ScsiCanonicalName"; E={$_.ScsiCanonicalName}} | Export-Csv -Path $CsvFile -NoTypeInformation -Encoding UTF8デスクトップに CSV ファイル (RDM_List_yyyyMMdd-HHmmss.csv) が出力されていることを確認する
環境
- vCenter Server 7.0.3 ( Build:24322018 )
- PowerCLI 13.3.0 ( Build: 24145083 )
今回の対応で参考にしたサイト
ストレージ デバイスの名前と識別子
Identifying disks when working with VMware ESXi