Japanese

 View Only
  • 1.  ディスク遅延のトラブル調査

    Posted Feb 27, 2025 06:27 AM

    トラブル調査の方法について、皆さんに意見いただきたいです。

    システム構成はVMware vSphere FTを行うために外部ストレージにiSCSIでデータストアを作成し、そこに仮想ディスクを保存し、仮想マシンを動かしています。

    その仮想マシンについて、以下のようにVM Max Total Disk Latencyのアラームがたびたび発生しています。

    Alarm 'VM Max Total Disk Latency' changed from Green to Yellow 

    Alarm 'VM Max Total Disk Latency' on xxxxxx triggered an action

    Alarm 'VM Max Total Disk Latency' an SNMP trap was sent

    Alarm 'VM Max Total Disk Latency' changed from Yellow to Green

    ただし、異常発生から20s後に正常復旧しています。

    そこでディスク遅延について調べたいのですが、仮想ホストやストレージからどのようなデータを取得するのが良いのでしょうか?

    ネットで調べて、仮想ホストにsshでアクセスし、esxtopからkavgとdavgを確認したのですが、リアルタイムでしか確認できずこの値がログに残るわけではないので困っています。

    加えて、ストレージ側でもネットワークによる遅延が問題なのか、ディスクの書き込みによる遅延が問題なのか確認できないのかといわれています。

    皆さまからアイデアをいただけたら幸いです。

    何卒よろしくお願いします。



  • 2.  RE: ディスク遅延のトラブル調査

    Posted Mar 05, 2025 08:12 PM
    Edited by gowatana Mar 05, 2025 08:11 PM

    こんにちは。


    ひとまず、すでに確認をはじめられているkavgとdavgについてですが、下記のように値を保存できます。
    保存する場合には、できれば問題の仮想マシン/仮想ディスクとは別のデータストアがよいかなと思います。

    パフォーマンス監視ユーティリティ: resxtop および esxtop / バッチ モードの使用

    ただ、下記のスレッドにもあるように、データ量が多くて扱いにくいかなと思います。

    esxtopの抽出項目について


    vSphere Client のパフォーマンス チャートで見られる間隔のデータであれば、リモートの Windows / Linux マシンなどに PowerCLI をインストールして Get-Stat で取得できるので、こちらの方が情報収集や確認をしやすいかなと思います。


    たとえば、ESXi ホストから取得できる「~latency~」というカウンタ(MetricID)の名前は、下記のように確認できます。
    この例では「-Name」で絞っていますが、ほかに、ネットワークなどのカウンタもあります。

    PS> Get-VMHost <ESXiホスト> | Get-StatType -Realtime -Name *latency* | sort
    cpu.latency.average
    datastore.datastoreNormalReadLatency.latest
    datastore.datastoreNormalWriteLatency.latest
    datastore.datastoreVMObservedLatency.latest
    datastore.maxTotalLatency.latest
    datastore.sizeNormalizedDatastoreLatency.average
    datastore.totalReadLatency.average
    datastore.totalWriteLatency.average
    disk.deviceLatency.average
    disk.deviceReadLatency.average
    disk.deviceWriteLatency.average
    disk.kernelLatency.average
    disk.kernelReadLatency.average
    disk.kernelWriteLatency.average
    disk.maxTotalLatency.latest
    disk.queueLatency.average
    disk.queueReadLatency.average
    disk.queueWriteLatency.average
    disk.totalLatency.average
    disk.totalReadLatency.average
    disk.totalWriteLatency.average
    hbr.hbrDiskReadLatency.average
    hbr.hbrDiskStallLatency.average
    mem.latency.average
    storageAdapter.maxTotalLatency.latest
    storageAdapter.totalReadLatency.average
    storageAdapter.totalWriteLatency.average
    storagePath.maxTotalLatency.latest
    storagePath.totalReadLatency.average
    storagePath.totalWriteLatency.average


    下記のように、最短で20秒間隔の情報が取得できます。
    例示のため、-MaxSamples 1 で件数を絞っています。末尾の「 | ft -AutoSize」は表示幅調整です。

    PS> Get-VMHost <ESXiホスト> | Get-Stat -Realtime -Stat *.totalReadLatency.average -MaxSamples 1 | ft -AutoSize
    
    MetricId                                Timestamp          Value Unit        Instance
    --------                                ---------          ----- ----        --------
    storagepath.totalreadlatency.average    2025/03/06 9:58:20     0 millisecond sata.vmhba0-sata.0:2-t10.A...
    storageadapter.totalreadlatency.average 2025/03/06 9:58:20     8 millisecond vmhba32
    storageadapter.totalreadlatency.average 2025/03/06 9:58:20     0 millisecond vmhba1
    storageadapter.totalreadlatency.average 2025/03/06 9:58:20     0 millisecond vmhba0
    disk.totalreadlatency.average           2025/03/06 9:58:20     0 millisecond eui.0000000001000000e4d25c...
    disk.totalreadlatency.average           2025/03/06 9:58:20     7 millisecond mpx.vmhba32:C0:T0:L0
    datastore.totalreadlatency.average      2025/03/06 9:58:20     0 millisecond 65d60394-8def0afb
    disk.totalreadlatency.average           2025/03/06 9:58:20     0 millisecond t10.ATA_____Crucial_CT1024...
    storagepath.totalreadlatency.average    2025/03/06 9:58:20     0 millisecond pcie.3a00-pcie.0:0-eui.000...
    storagepath.totalreadlatency.average    2025/03/06 9:58:20     7 millisecond usb.vmhba32-usb.0:0-mpx.vm...
    

    下記のように、CSV でファイルに保存できたりもします。

    PS> Get-VMHost <ESXiホスト> | Get-Stat -Realtime -Stat *.totalReadLatency.average -MaxSamples 1 | Export-Csv -Path C:\work\test.csv

    「-Realtime」オプションでも、取得できるのが直近1時間・20秒間隔の値なのでesxtopよりも間隔が広いのですが、1時間単位でコマンド実行しておくと、まずは実際にどれくらい遅延が発生していそうか確認できそうかなと思います。

    以上です。参考になるかどうか・・・