PowerEdge T110 Ⅱ PERC H200A でRAIDディスクの速度が遅いため調査したところ、PERC 200 RAIDコントローラはキャッシュを持っておらず、パフォーマンスが悪いという問題が発覚した。
なお、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インストール手順は同様。
この先の設定手順は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/
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倍程度)向上し速くなった。
※この手順はデータロストのリスクを増加させる可能性があるため、検討のうえ各人の責任で適用してください。