という事で、どうにかせねばプロジェクト!
さてと、最近VM上で立ち上がっているインスタンスが本当に遅いのです。
何に原因があるかは、だいたい想像つくのですが、思いつくところを書いてみます。
- CPUが遅い (AMDのクアッドコア)
- メモリーが足りない(8GBしかのっていない)
- HDDが遅い(マグネット4台のRAID5(ライトキャッシュ付きハードウェアRAID))
- メモリーやCPUがオーバーコミットされている為
上記が遅い理由となります。この中で少しでも速さを追求出来るとしたら、HDDをSSDに交換してしまえって事なのですが、ここからはエンジニアとして、普段は絶対しない様な構成を次に書きます。
大前提:RAID5環境でHDDとSSDを混在した場合の動作検証
まず、上にも書いた様にこのESXi6.5はマグネットのDISKが4台(500GBx3 / 700GBx1)の構成です。
500GBのHDDはマトリックス社の同じ容量と回転速度及びキャッシュメモリーでそろえてあります。
そのうち1台が破損して、マトリックス社から東芝の7200rpmの700GBのHDDに交換してリビルドをかけています。(現在の状態)
これを、1台づつマグネットDISKからSSDに置換をしていく事にします。
HDD0(500GB) → SSD(740GB) 現在交換してリビルドが走っています。
HDD1(500GB) → SSD(740GB) 上記リビルドが完了した後に実施
HDD2(500GB) → SSD(740GB) 上記リビルドが完了した後に実施
HDD3(700GB) → SSD(740GB) 上記リビルドが完了した後に実施
上記の様に、1台単位でHDDからSSDに置換していきます。最後の1台がリビルドがかかって完了するとHDDからSSDになり高速に動作するようになる事を想定しています。
そして、エンジニアとしてHDDの中にSSDとか・・・!RAID環境において、同じメーカーで同じ容量と回転数をそろえる事なんて、定説ではありますが、そこをあえてどうなるか?も含めてやってみたかったというのがあります。
結論とすると、見る限りこんな動作になっています。
HDD0~2からパリティを計算して、SSDの中に取り外したHDDの内容を復元されている状態(リビルド中)
しかし、HDDの速度は遅く3台まとめて読み込んでもSSD1台の書込速度上限には届かず。ただ、リビルドしながら書込はHDDとSSDに同時に書込がされている事から、HDDとSSDの速度差は全てRAIDカードに取り付けているDDR256MBのメモリーにライトキャッシュする形で速度差が吸収されている感じを受けます。
RAIDカードも馬鹿じゃ無いので、SSDが速いからといってHDDにとってどうすることも出来ない為、HDDアクセス速度を基準に動作している状況。一番遅いメディアに最適化して動くが正しいです。効率が良いやり方ではないですが、移行中は仕方が無いです。全てが終われば低速デバイスHDDが無くなるので、SSD速度に準拠して動作を始めると思われます。
ただし、ハードウェアRAIDカードで処理しているとは言え、RAIDカードの上にのっているCPU処理速度の限界もあります。その為、SATAで流せる最高速が常に出る事は基本ありません。そもそもRAID5は1回のアクセス毎にパリティを計算しないと行けない為、それだけでもオーバーヘッドがかなり要求されます。
https://qiita.com/Jianbo/items/49b3699e2471aa7955b3 からお借りしました。
お約束
これらの構成は、自己責任であり必ずしもどの環境でも実現出来るとは限らないリスクがある移行方法だという事をご認識の上自己責任において作業をお願い致します。また、リビルド中は、1台でも壊れると全てのデータが飛びます。ホットスペアが無いRAID5構造の場合は注意が必要です。今回の筆者の家で動作しているESXiはホットスペア無しのRAID5構成です。