続・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だということを思い出して調べてみると、AdaptecのRAIDカードは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コントローラにバグがあるらしいという報告がありました。これが直接の原因かはわかりませんが、RDMはSolaris 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が入りません。これもたいして弊害はないので、対応を待ってみることにします。