fc2ブログ

我が家のストレージサーバーをリプレイスしたら結構ハマった話

ざるそば

新しいサーバーを買った

我が家のストレージサーバーは、こちらとかこちらでも書いている、HP の MicroServer N36L です。

いただきもので構築してから 2 年半くらい動いていましたが、いよいよ天に召されてしまったようで、起動できなくなってしまいました。
しかし、このサーバーは我が家のメインサーバーでもあり、たくさんのデータが詰まっていて復活させなければなりません。

そこで、ヤフオクで壊れてしまったサーバーよりも世代が新しく、かつ中古価格がこなれてきた HP MicroServer Gen 8 をゲットしたのでした。今度は標準で iLO もついててよりサーバーっぽくなってます。



起動ができない

購入した MicroServer Gen 8 には、壊れてしまった N36L と同様 4 本の 3.5 インチベイ (SATA) がついており、それとは独立した SATA ポートが 1 基あり、それは DVD-ROM ドライブに繋がっています。

光学ドライブは不要なので、この DVD-ROM ドライブの代わりに起動用 SSD を接続することにしました。ついでに SSD も新しい SSD に交換します (現行 Intel 80GB から Crucial 120GB へ)。

というわけで、適当な Linux マシンを立ち上げ、ddrescue コマンドでディスクをコピーしました。

# ddrescue -v -f /dev/sdb /dev/sdc
コピーしたディスクを MicroServer の DVD-ROM ドライブの代わりにつけようとしたら…あれ、電源コネクタが FDD 用で小さい…仕方ないので秋葉原で買った変換コネクタを挟んで、さらに SATA 用電源に変換して SSD に繋ぎました。


AINEX 電源変換ケーブル [ 6.5cm ] WA-081B
AINEX (2015-05-29)
売り上げランキング: 25,946

ではいよいよ起動!と思ったら、起動できません。画面ではどうも OS が見つからないとか言っています。なんでだ?

こういうときは切り分け作業です。この切り分け方法がよくなく、よりハマってしまったのですが…。

まず、電源を切ってサーバーに装着されているすべてのディスクを外します。
3.5 インチの 4 ベイには、購入時に元々ついていた 2 本の HDD が装着されており、これもついでに外しました (これが事態を複雑にしました…)。

次に、ddrescue でコピーした「元の」SSD を装着して起動します。あっさり起動できた…ということは、コピー失敗?

ということで試しに、USB で新ディスクをつけて、zpool attach で mirror 化してみることに。

ディスクはちゃんと認識しましたが、attach ができない…。

$ iostat -En 
c4t4d0           Soft Errors: 0 Hard Errors: 0 Transport Errors: 0 
Vendor: ATA      Product: INTEL SSDSA2CW08 Revision: 0362 Serial No:  
Size: 80.03GB <80026361856 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0 
Illegal Request: 5 Predictive Failure Analysis: 0 Non-Aligned Writes: 0 
c5t0d0           Soft Errors: 0 Hard Errors: 0 Transport Errors: 0 
Vendor: CT120BX5 Product: 00SSD1           Revision: 8101 Serial No: *** 
Size: 120.03GB <120034123776 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0 
Illegal Request: 18 Predictive Failure Analysis: 0 Non-Aligned Writes: 0 

$ sudo zpool attach rpool c4t4d0 c5t0d0
vdev verification failed: use -f to override the following errors:
/dev/dsk/c5t0d0s1 is part of active ZFS pool rpool. Please see zpool(1M).
Unable to build pool from specified devices: device already in use
-f をつけても同じでした。

そこで、色々調べつつ fdisk やら何やらやってみましたが、どうにも上手く行かず (僕の知識が足りないだけな気もしますが)。USB との mirror はできないのかなぁ?でも SATA の 3.5 インチベイに SSD つけるマウンタは持っていないし…。

ここまで半日… zpool attach は諦めることにしました。

そんなわけで、もう一度 ddrescue でコピーし、今度はコピー先の新 SSD を装着して起動してみることに。

問題なく起動しました。やっぱりコピー失敗しただけなのか…?

問題なさそうなので、zpool autoexpand で使える領域を広げます。ZFS って便利だなぁ。
$ zpool get autoexpand rpool 
NAME   PROPERTY    VALUE  SOURCE
rpool  autoexpand  off    default

$ sudo zpool set autoexpand=on rpool

$ zpool list                        
NAME   SIZE  ALLOC   FREE  CAP  DEDUP   HEALTH  ALTROOT
dpool     -      -      -    -      -  FAULTED  -
rpool  112G  15.0G  96.5G  13%  1.00x   ONLINE  -
あっさり広がりました。念のため zpool scrub もかけて問題ないことを確認。

やっぱり起動できない

これでだいたい準備は整ったので、データ用の HDD を N36L から移して装着します。Gen 8 の電源を落として、3.5 インチベイに装着しました。

さあ起動!…またできない。また OS が見つからないとか言い出しています。どういうこと?

仕様だった

頑張って検索したところ、こんな記事こんな記事が…。

なんですと!どうも SATA コントローラーを AHCI にしていると 5 番目の SATA ポートである DVD-ROM ドライブからは起動できないとのこと。なんと…。

回避方法としては、Dynamic Smart Array B120i RAID にすることらしいのですが、元々 RAID-Z で組まれている HDD なので、それは不可。

もう少し調べると、SATA コントローラーを Legacy Mode にすることで Boot Priority を変更できるようになることがわかりました (参考)。

そこで、BIOS で Legacy Mode に変更して再起動したところ、SATA コントローラーが 2 つに増え、2 番目を優先することで 5 番目の SATA ポートから起動できるようになりました。

が、起動しない…正確に言うと、OS 起動開始直後に再起動が入ります。これもうわかんねーなー。

Solaris って素敵

結局、AHCI のホットスワップを使って起動することにしました。手順としては以下です。

  1. 3.5 インチベイから HDD を外して起動
  2. Solaris 11 が起動したら HDD を装着
  3. (たぶん cfgadm コマンドで認識させればよいけど面倒なので) init 6 で再起動
  4. iostat -En でデバイスが見えていることを確認
  5. zpool import
この手順で、問題なくデータ領域用 ZFS をマウントすることができました。

さて、次にこの zpool に入っていた zone の復活ですが、これも zoneadm -z ZONE_NAME attach であっさり復活。起動ももちろん問題なし。

起動して認識さえすれば、Solaris って便利で楽だなぁと思いました。

でも面倒なので、あまり電源切れて欲しくないサーバーになりました (サーバーなので当たり前ですが…)。



Posted byざるそば

Comments 0

There are no comments yet.

Leave a reply