続・XeonでAtomをリプレース

顛末

↓に引き続き、自宅サーバのリプレースを続けてます。
http://d.hatena.ne.jp/shakemid/20120701

主に省電力と仮想化の2つの目標に向かってました。
省電力については、Xeon E3-1220L v2の消費電力の低さはすばらしく、Windows 7で、アイドル時25Wを達成しました。
仮想化については、まずHyper-Vを試しましたが、Solaris 11でHDDが127GBまでしか使えず、ZFSのファイルサーバにしたいという要求を満たせないのであきらめました。
次にVMware ESXiを試しました。ちょっと苦労しましたが、BIOSをアップデートしたらインストールできたのでESXiに方針転換することにしました。
XenServerとXenClientも試そうとしましたがインストーラすら起動しませんでした。

追加投資

既存の構成だとちょっと問題が出てきました。
ESXiだとビデオカードのドライバがないので、省電力機能が働かずアイドル時でも37Wまでしか下がりません。しかも常にフルパワーなので熱いです。
また、ESXiを使うなら、データストアはハードウェアRAID必須ですよね。でも、PCIeスロットは1つしかないので、RAIDカードを挿すなら、ビデオカードは挿せません。ということはIGP内蔵のCPUが必要ですよね。もはや何をやってるんだかわからなくなってきました。

CPU

CPUはあくまでXeonでいきます。IGP内蔵のもので、TDPが45Wと最も低いXeon E3-1265L v2を買いました。Xeonにこだわらないなら、TDP35WのCore-i5 3470Tか、TDP45WのCore-i7 3770Tがいいんじゃないでしょうか。
1220L v2と差し替えて問題なく動作しました。ESXiを起動して、システム全体のアイドル時の消費電力は35W程度でした。やはり、ビデオカードがフルパワーで動作している状態よりは低くなりました。Windowsならもう少し低くなるかもしれません。
さすがにE3-1265L v2でAtomを下回るのは無理です。

RAIDカード

RAIDカードは鉄板(と思っていた)のAdaptec 6405Eを選びました。ESXiには問題なく対応していることがわかっています。
しかし、挿して起動してみてもまったく認識しません。別のPCに挿してみると認識するので不良ではないようです。
DQ77KBはBIOSではなくUEFIだということを思い出して調べてみると、AdaptecRAIDカードはUEFIに対応していませんでした。がーん。。。今回はUEFIに悩まされっぱなしです。
Adaptec のコントローラとUEFI マザーボード

Adaptecはあきらめざるを得ないので、ESXiに対応してて、UEFIにも対応していることを確認して、Areca ARC-1200 を追加購入しました。
Are RAID controllers available from Areca that are UEFI-compliant?

Arecaのほかにも、LSILogicの製品もESXiとUEFIに対応しているようです。Adaptecは買収されて以降はもう鉄板ではなくなってしまったのかもしれませんね。

Areca ARC-1200は、挿して起動するとちゃんと認識されました。ただし、ESXiで使うにはドライバをインストールする必要があります。ドライバは以下のサイトからダウンロードできます。
Areca Technology Corporation - Support & Downloads - VMware
ESXiでSSHを有効にして、README.txtに書いてあるとおりesxcliコマンドでドライバをインストールすると、ESXi上からも見えるようになりました。

ARC-1200を接続して、ESXiを起動すると、アイドル時の消費電力は40W程度になりました。Atomマシンを下回るのはさすがに無理でした。
自宅サーバはほとんど常にアイドル状態であると仮定して、↓のサイトで1ヶ月の電気代を計算してみると、だいたい600〜700円くらいになるようです。
消費電力量と電気料金を計算

構成

構成は最終的に以下のようにしました。このスペックがMini-ITXサイズに収まってしまうとは驚きます。自宅サーバにはハイスペック過ぎるような気はしますが、いろんなことに活用できそうです。

ケース InWin WAVY II (電源は外しました)
電源 Dell PA-15 150W ACアダプタ
MB Intel DQ77KB
CPU Intel Xeon E3-1265L v2
Memory SanMax DDR3 SO-DIMM 4GB x2
RAID Areca ARC-1200
HDD1 Hitachi 2.5inch SATA 500GB x2 (ARC-1200に接続)
HDD2 Hitachi 2.5inch SATA 1TB x2 (オンボードSATAに接続)
OS VMware ESXi 5.0

HDDの構成

HDDは合計4台つなぎました。ARC-1200に500GBのHDDを2台つないでRAID1にして、ESXiのデータストアとして使うことにしました。また、1TBのHDD2台をオンボードSATAポートに接続して、Solaris 11で丸ごと使ってZFSのファイルサーバにすることにしました。

RDM(失敗)

まずは、RDM(Raw Device Mapping)の機能を使って、SATAのHDD2台をゲストOSに割り当ててみました。

SATA HDDをRDMする設定は、vShpere Clientからはできないので、SSHで接続してCLIで行なう必要があります。
vSphere(ESXi)でSATAディスクをRDMで使う - tech-memo@さかにゃ日記
Creating RDMs on SATA drives
RDMには2つのモードがあります。

  • 物理互換モード(vmkfstools -z ...)
  • 仮想互換モード(vmkfstools -r ...)

2つのモードの違いは↓のあたりに書かれています。
RDM Virtual and Physical Compatibility Modes

まずは、よりハードウェアに直接アクセスできる物理互換モードを試してみました。vmkfstools コマンドでRDMを有効にすると、RDMされたHDDはVMDKとしてゲストOSに割り当てることができます。
Solaris 11をインストールし、ZFS Mirrorにしてみました。特に問題なく動いているように見えたのですが、しばらく使っているとZFSのCheckSumエラーが大量に出て、プールがDEGRADEDになってしまいました。このまま運用してたら大変なことになっているところでした。

$ zpool status
  pool: rpool
 state: DEGRADED
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://www.sun.com/msg/ZFS-8000-9P
  scan: scrub in progress since Wed Aug 22 16:16:07 2012
    47.8G scanned out of 70.2G at 43.7M/s, 0h8m to go
    25.1M repaired, 68.14% done
config:

        NAME          STATE     READ WRITE CKSUM
        rpool         DEGRADED     0     0     0
          mirror-0    DEGRADED     0     0     0
            c4t0d0s0  ONLINE       0     0   743  (repairing)
            c4t1d0s0  DEGRADED     0     0   625  too many errors  (repairing)

/var/adm/messages にはこんな感じのエラーが大量に出力されていました。

Sep  1 22:10:41 solaris scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci15ad,1976@10 (mpt0):
Sep  1 22:10:41 solaris         unknown ioc_status = 4
Sep  1 22:10:41 solaris scsi: [ID 107833 kern.notice]   scsi_state = 0, transfer count = 0, scsi_status = 0
Sep  1 22:10:41 solaris scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci15ad,1976@10/sd@0,0 (sd0):
Sep  1 22:10:41 solaris         incomplete write- retrying
Sep  1 22:10:41 solaris scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci15ad,1976@10 (mpt0):
Sep  1 22:10:41 solaris         unknown ioc_status = 4
Sep  1 22:10:41 solaris scsi: [ID 107833 kern.notice]   scsi_state = 0, transfer count = 0, scsi_status = 0
Sep  1 22:10:41 solaris scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci15ad,1976@10/sd@0,0 (sd0):
Sep  1 22:10:41 solaris         incomplete write- giving up

こちら↓のサイトで、仮想互換モードなら問題ないという報告があったので、仮想互換モードを試してみました。
とあるプログラマの休日 ≫ zfsをESXiのRaw Device Mappingで(リベンジ編)

しかし、私の環境では仮想互換モードでもCheckSumエラーが出てしまいました。ちょっと調べると、ESXiのLSI Logicコントローラにバグがあるらしいという報告がありました。これが直接の原因かはわかりませんが、RDMSolaris 11では使えなさそうです。
Getting ID 107833 kern.warning and write to hard disk is failing - The UNIX and Linux Forums

パススルー

RDMが使えないので、パススルー機能でSATAコントローラを直接ゲストOSに割り当ててみることにしました。

パススルー設定は、vSphere Clientの「構成」タブ→「詳細設定」メニューから行えます。

パススルー設定を行うと、SATAコントローラごとゲストOSに割り当ててしまうので、他のゲストOSからはSATAバイスを使えなくなってしまいます。今回は、ESXiの起動はUSBメモリで、データストアはAreca ARC-1200に接続されたHDDを使っているのでこの構成でも特に問題ありません。

まずは、パススルーしたHDDにSolaris 11をインストールしてみました。しかし、インストールは問題なくできたのですが、起動ができませんでした。
しかたがないので、OSの領域は普通のVMDKとしてデータストアに置き、データ領域はパススルーしたSATA HDDを使うことにしました。
具体的には、VMDKにOSをインストールした後、パススルーしたSATAのHDD2台をZFS Mirrorとして構成し、/export、/opt、/usr/local をマウントし直しました。どうせなら単一のZpoolの方がよかったですが、分けておいた方がほうが引っ越しなどが柔軟にできて便利かもしれません。

ベンチマーク

bonnie++ 1.03dを使って、Pass-through、RDM、VMDKのベンチマークを取ってみたので載せておきます。理論上はこの順番で速いはずです。

・Pass-through
Writeで78MBytes/sec、Readで112MBytes/secと、2.5インチSATA HDDの限界だろうと考えられる速度が出ています。Sequential Inputで、Per ChrよりもBlockのほうが半分程度の速度しか出ていないのがちょっと気になります。

      ------Sequential Output------ --Sequential Input- --Random-
      -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
 Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
   8G 78785  43 71387  16 47219  11 112413  55 56777   4 652.3   1
      ------Sequential Create------ --------Random Create--------
      -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
   16  4088  48 +++++ +++ 21116  87  6977  41 +++++ +++ +++++ +++

solaris,8G,78785,43,71387,16,47219,11,112413,55,56777,4,652.3,1,16,4088,48,+++++,+++,21116,87,6977,41,+++++,+++,+++++,+++

RDM(仮想互換モード)
RDMも相当速いです。Sequential InputのBlockがなぜかPass-throughより大幅に速くなっています。しかし、データが壊れてしまうのでは使えません。なお、RDMの物理互換モードと仮想互換モードでの違いはほとんどありませんでした。

      ------Sequential Output------ --Sequential Input- --Random-
      -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
 Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
   8G 75219  27 61892  10 49060  11 107661  43 124618   7 656.1   1
      ------Sequential Create------ --------Random Create--------
      -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
   16  2838  24 +++++ +++ +++++ +++  2510  16 +++++ +++ +++++ +++

solaris,8G,75219,27,61892,10,49060,11,107661,43,124618,7,656.1,1,16,2838,24,+++++,+++,+++++,+++,2510,16,+++++,+++,+++++,+++

・VMDK(シン)
ついでにVMDKも測ってみました。シンプロビジョニングなので大幅に遅くなるかと思いましたが意外と健闘しています。Createが妙に速いです。シックプロビジョニングならさらに速いのでしょうが、これだけ出てればひとまず充分です。

      ------Sequential Output------ --Sequential Input- --Random-
      -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
 Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
   8G 65754  36 62901  12 33075   9 57005  24 50956   4 500.1   1
      ------Sequential Create------ --------Random Create--------
      -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
   16 16595  59 +++++ +++ +++++ +++ 28516 100 +++++ +++ +++++ +++

solaris,8G,65754,36,62901,12,33075,9,57005,24,50956,4,500.1,1,16,16595,59,+++++,+++,+++++,+++,28516,100,+++++,+++,+++++,+++

課題

1週間ほど運用してみて今のところ快調に動いているように見えます。3つほど課題があるのでメモしておきます。

ZFS on VMDKはほんとに大丈夫か?
ESXiのLSI Logicコントローラにバグがあるということは、VMDKでも影響が出るかもしれません。運用しながらしばらく様子を見てみる必要がありそうです。
→1ヶ月程度運用してみて問題なし。

・シャットダウン・リブート時のフリーズ
おそらく、Arecaのドライバを入れた後からだと思うのですが、ESXiのシャットダウン・リブート時に必ずフリーズします。いちいち物理的に電源を切るしかありませんが、それほど頻度はないので我慢できる範囲かなと思います。

VMware Toolsが入らない
Solaris 11にVMware Toolsが入りません。これもたいして弊害はないので、対応を待ってみることにします。