designetwork

ネットワークを軸としたIT技術メモ

ESXiマウントDell PERC RAID1を高速化する(HDDキャッシュ有効化)

PowerEdge T110 Ⅱ PERC H200A でRAIDディスクの速度が遅いため調査したところ、PERC 200 RAIDコントローラはキャッシュを持っておらず、パフォーマンスが悪いという問題が発覚した。

communities.vmware.com

[PERC] キャッシュのないRAIDコントローラのパフォーマンスに関する懸念点(H330、H310、S130、S110、S300、S100、H200、SAS 6/iR、SAS 5/iR) | Dell

なお、RAIDコントローラでなく、HDD自体はキャッシュを持っているのだが、ESXiとPERC 200の組み合わせ動作時には、HDDキャッシュが無効化されるようだ。停電時等のデータロストを防ぐためには適切な対応に思うが、DISKの速度が遅すぎて実用に耐えない場面が多々ある。

私の環境は試験用で、最悪データロストしても困らないため、強制的にHDDキャッシュを有効にすることでパフォーマンス改善を図る。

※この手順はデータロストのリスクを増加させる可能性があるため、検討のうえ各人の責任で適用してください。

状態確認

ディスク速度が遅いと感じているVM (CentOS7) で ddコマンドによりディスクの書込み速度を試験する。

$ dd if=/dev/zero of=~/perf/test bs=1M count=1024
1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 1.5644 秒、 686 MB/秒
$ dd if=/dev/zero of=~/perf/test bs=1M count=1024
1073741824 バイト (1.1 GB) コピーされました、 1.14801 秒、 935 MB/秒
$ dd if=/dev/zero of=~/perf/test bs=1M count=1024
1073741824 バイト (1.1 GB) コピーされました、 0.460856 秒、 2.3 GB/秒

この出力を見ると、数百MB/sの性能が発揮できているように見える。しかし、これはOS上の認識だけで実体の書き込みを待っておらず、vmstatでCPU負荷状況を見るとこちらの通り。iowaitが100%になる、SSH CLI操作がままならなず応答しない状態になる。

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  2      0 2473280   1008 1230940    0    0    20     0  106  123  0  0 44 57  0
 0  2      0 2473280   1008 1230940    0    0     0     0   89   96  0  0 50 50  0
 0  2      0 2473280   1008 1230940    0    0     0     0  134  146  0  0 50 50  0
 1  2      0 2474016   1008 1230948    0    0     4     0  223  332  1  1 38 61  0
 1  3      0 2474056   1008 1230952    0    0     4 16388  145  176  0  0  0 100  0
 0  3      0 2474056   1008 1230960    0    0     0     0  145  215  0  0  0 100  0
 0  3      0 2474056   1008 1230960    0    0     0     0  139  191  0  0  0 100  0

vSphere (ESXi) Web Clientから仮想マシンの状態を見ると以下の通り。

書き込み速度:5.44MB/s (≒44Mbps)
最大待ち時間:4,955 ms

調子のいいときでもこのように、1秒程度のDISK IO待ちが発生している。

書き込み速度:24.60MB/s (≒200Mbps)
最大待ち時間:1,087 ms

前提作業

HDDキャッシュを有効化するにあたり、Dell PowerEdgeの管理ツールOMSA ( OpenManage Server Administrator ) をESXiにインストールする必要がある。インストールはVIBパッチ適用により実施できる。

OSMAのインストールはこちらの手順を参照。ログ収集目的メインで記載されているが、VIBインストール手順は同様。

https://www.dell.com/support/article/jp/ja/jppad1/how10613/ログ収集のために-vmwareにdell--openmanage-server-administrator-omsa-をインストールする方法?lang=ja

この先の設定手順は6. WindowsでのOMSA 8.5のダウンロードおよびインストール(オプション)を実施したWindowsから操作する。CentOS等にもOSMAをインストールできるようだが、私の環境ではうまくいかなかった。

OSMAからキャッシュ有効化する

OSMAをインストールしたWindowsスタートメニュー > Dell OpenManager Applications > Server Administrote を起動する。(私の環境はWindows Server 2016)

ESXiのrootアカウントでログインする。

ツリーから システム > ストレージ > PERC H200 Adapter > 仮想ディスク を選択する。

初期状態では ディスクキャッシュポリシー:無効 となっている。変更対象の仮想ディスク (RAID) のタスクプルダウンから「ポリシーの変更...」を選択し実行する。

ディスクキャッシュポリシーが有効になった。

私の環境では再起動の必要なくパフォーマンス改善されたが、状況に応じて要再起動。

キャッシュ有効化による改善結果

冒頭と同様にパフォーマンスを測定する。

書き込み速度:75.60MB/s (≒600Mbps)
最大待ち時間:363 ms

パフォーマンスが3倍以上(実質10倍程度)向上し、かつ安定している。待ち時間が300ms程度あるが、2秒おきに1GB書き込みという厳しめの環境なのでしょうがないものと考える。

理論値6Gbpsから比べるとまだ遅いが、十分に実用的な速度となっている。また、iowaitも減りディスクアクセスが速くなったことが実感できた。

参考情報

https://blog.slucas.fr/blog/esxi-perc-h200-slow/

community.spiceworks.com

https://www.weblab360.com/User:xltran/App/Dell/PowerEdge_R510/PERC_H200

まとめ - ESXiマウントDell PERC RAID1を高速化する(HDDキャッシュ有効化)

Dell PowerEdgeの管理ツールOMSA ( OpenManage Server Administrator ) をESXiにインストールし、強制的にHDDキャッシュを有効化した。これにより、PERC 200 でのRAIDディスクのパフォーマンスが3倍以上(実質10倍程度)向上し速くなった。

※この手順はデータロストのリスクを増加させる可能性があるため、検討のうえ各人の責任で適用してください。