1254 Words 6 min

はじめに

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)内容解説出力例
1VMName仮想マシン名調査対象の仮想マシン名cent-rp-sp-01
2ScsiControllerSCSI コントローラ名RDM ディスクの接続先となる SCSI コントローラ名SCSI controller 1
3ScsiController TypeSCSI コントローラタイプRDM ディスクの接続先となる SCSI コントローラのタイプ (BusLogic パラレル / LSI Logic パラレル / LSI Logic SAS / VMware 準仮想化 )ParaVirtual
4BusSharingModeSCSI バスの共有RDM ディスクの接続先となる SCSI コントローラの SCSI バス共有 (なし / 物理 / 仮想)Physical
5DiskNameディスク名vSphere Client 上のディスク名Hard disk 2
6CapacityGB容量 (GB)RDM ディスクのサイズ (GB)5
7DiskTypeディスクタイプRDM ディスクのディスクタイプ (物理 / 仮想)RawPhysical
8MultiWriter共有RDM ディスクに対する複数仮想マシンからの同時書き込み設定 (共有なし / マルチライター))sharingNone
9FilenameファイルパスRDM のマッピングファイルのデータストア名を含む場所[iscsi-pool-01] cent-rp-sp-01/cent-rp-sp-01_1.vmdk
10DeviceNode物理デバイスノードOS 側から見たディスクの位置(バス番号:ユニット番号)SCSI (1:0)
11DeviceNameレガシー識別子ESXi が生成する各デバイスの代替のレガシー識別子vml.02000000006589cfc000000d8a923a0d7f629823d7695343534920
12ScsiCanonicalName物理 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 調査用情報出力

  1. キーボードの [Windows] + [X] でシステムメニューを開き、 [A] キー を押下し、ターミナルを管理者として起動する

     

  2. ターミナルがコマンド プロンプトで起動している場合、以下のコマンドで PowerShell を起動する

    powershell
    

     

  3. Connect-VIServerで<vCenter Server FQDN>、vCenter Serverの<ユーザー名>、<パスワード>を指定し、 vCenter Server に接続

    Connect-VIServer  -Server vcsa-060.lab.internal -User "administrator@vsphere.local" -Password "P@ssw0rd" -force
    
    Name                           Port  User
    ----                           ----  ----
    vcsa-060.lab.internal          443   VSPHERE.LOCAL\Administrator
    

     

  4. 調査対象の仮想マシンのリストファイルのファイルパス、ファイルの内容をそれぞれ変数に格納

    $vmListFile = "$env:userprofile\desktop\vm_list.txt"
    $vmNames = Get-Content $vmListFile -Encoding UTF8 | Where-Object { $_.Trim() -ne "" }
    

     

  5. RDM 調査結果となる情報出力ファイルのファイルパスを変数に格納

    $CsvFile = "$env:userprofile\desktop\RDM_List_$(Get-Date -Format "yyyyMMdd-HHmmss").csv"
    

     

  6. 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
    

     

  7. デスクトップに 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