以前から
運用していたサーバ。
最近、DISKIOが追いつかず、NFSがタイムアウトするなど結構問題が出ていたので、作り直した。
vmware のイメージは、SASディスクに格納、各種homeなどは、SATAディスクという構成。
今まではオンボードのSATAポートでzfs mirror していたが、このオンボード。
かなり癖があり、ホットスワップ対応ベイを付けても、SATAコントローラが対応していないため、結局無理。
デバイスのdetach, attach できない。
そこで、以前ディスク障害が発生し、サーバの再起動等を余儀なくされたが、今回、LSI LogicのRAIDカード及び、SASディスク+SATAディスクという4台構成にした。
希望的内容として、SASディスク(2.5inch 新品で導入)は耐久性があるのでそう簡単には死なないだろうということ。
SATAディスクは年に1回ぐらいは死ぬだろうという計算。
その為、SASディスクは内蔵シャドーベイに2.5inch <-> 3.5inch 変換マウンターを搭載。
起動ディスクは、zfs mirror で起動するにも、色々と厄介なので、ここはHW-RAID1を使用。
データプールは、SATAディスクを使用しzfsのソフトウェアミラー。
ML110/ML115は、5インチベイが2つしかないので、
3代目 技あり!楽ラック!(CWRS3-BK)を使用。これで、3.5インチが3台搭載。
今回SAS2台、SATA2台なので、ベイが足りないし、コントローラをまたぐ必要が出てしまう。
5インチが3つあると、
5代目 技あり!楽ラック!(CWRS5-BK)を使用し、2.5インチ<->3.5インチ変換マウンターを使用して、SAS*2、SATA*3 を考えていたが、難しい。
そこで、先ほど書いた内容になった。
★ 導入した物:
で、今回導入した物として、LSI Logic SAS3042EL 2枚、SAS(SFF-8484) to 4ポートSATA 及び SAS(SFF-8484) to SAS(SFF-8482) 。
LSI Logicの板は、5000円程度で手にはいるし、OpenSolarisが正式に対応しているRAIDカードであるので、何も苦にならないし、raidctlコマンドで問題なく使用可能。この価格帯では、一番実績があり確実な物だ。
一枚は、楽ラックに装着し、SATAディスク専用、一枚は、SASディスク専用と分ける事にした。合計5チャンネル必要なので。
ちなみに、SASコネクタ(SFF-8482)は下位互換のため、SATAディスクでもそのまま使用出来るし、楽ラックはSASホットスワップ対応で、M/Bとかにお馴染みのSATAポートが出ているため、そんまま使用できる(わざわざ、SFF-8482みたいな物を用意しなくても良い)。
★ LSI Logic SAS3042EL はSATA/SAS混在可能:
また、SASコネクタは、下位互換ということで、実験・検証用マシンで実験してみたが、次のようなことが出来た。
SASでRAID1 or RAID0 を作る、残りの2ポートで、JBODでSATAディスクを装着(ただし、合計4台まで)。
ちゃんと認識することが出来た。
今回他に予備ディスクを持ち合わせていなかったので、SASでRAID1, SATAでRAID1という構成が作れるかは確認出来ていない。
しばらくは4台なので、SAS(SFF-8484) to SATA2ポート、SFF-8482 2ポートというのでも良かったが、そんな都合の良いケーブルなんかは無い。
また、SFF-8484 to 4port SATA(Targetベース4 x Internal 7pin)+
GIC-STA29-22 SMART SATA CABLE (SAS-SATA 延長ケーブル)というケーブルも一応存在するが、怪しいので、使用しなかった。
直ぐにてにはいる分けでも無かったので。
★ 最終的構成:
- LSI Logic SAS3042EL *2 (SATA JBOD用及びSAS RAID1用)
- SAS Seagate 73GB *2
- SAS(SFF-8484) to 4ポートSATA (Targetベース4 x Internal 7pin)
- SAS(SFF-8484) to SAS(SFF-8482)
- 楽ラック3代目 SATA zfs 用
- 2.5inch to 3.5inch 変換マウンタ
★ セットアップ:
OpenSolaris を予備機でセットアップし、完了後に、旧来のサーバをシャットダウン、HBA*2及び各種ケーブル、ディスクを装着。
事前に、方系統のディスクをホットスワップベイから取り外ししておく。
インストール完了後、旧ディスクをマウントすると、rpool で重複するので、次のようにして回避。
# zpool import -R /mnt/old-rpool rpool old-rpool
そうするとマウントポイントが、/mnt/old-rpool に全てずれてくれる。
で、必要な物を改名、mountpoint を調整するのも良いが、今回は、旧ディスクにはOS等が入っているので、厄介ということ、GRUB等も入っていると言うこともあり作り直すことにした。
予備のディスクを取り付け、datapool1 という名前にし、ドライブ全体をzfsとして使用。
# zpool create datapool1 c9t3d0
後は、zfs send / recv でしこしこと、必要な物を転送。
vmwareのイメージはSASディスクにうつすので、そのまま複製。
それ以外は、sendして終わり。
最後に、旧ディスクのzpoolをdestroy し、 mirrorにする形で完了。
尚、LSI LogicのHBAだと、zpool を detach してしまえばそのままディスクを取り外しても問題は無かった。
(明示的にディスクをコントローラから切り離す方法も有るはずですが、、、見つけれず。)
その後ディスクを追加すれば、直ぐに見つけてくれて認識してくれます。
きちんと、手順を踏まない場合は次のようにエラーが出てしまいます。
また、接触不良やデータエラーが発生すると同様に下記の内容が出てきます。
scsi: [ID 243001 kern.warning] WARNING: /pci@0,0/pci8086,2944@1c,2/pci103c,322b@0 (mpt1): mpt_handle_event_sync: IOCStatus=0x8000, IOCLogInfo=0x31120403
c9t1d0 Soft Errors: 0 Hard Errors: 24141 Transport Errors: 12959 Vendor: ATA Product: ST31000528AS Revision: CC34 Serial No: Size: 1000.20GB <1000204886016 bytes> Media Error: 0 Device Not Ready: 0 No Device: 2653 Recoverable: 0 Illegal Request: 0 Predictive Failure Analysis: 0
しかし、zpool に伝わるまでに再送で通信出来ているため、zpool status ではエラーが検出されませんでした。
ただし、パフォーマンスは障害レベルといえるぐらいまで、がた落ちしますが。。。
そう言うときは問題のディスクをzpool detach zpool dev でdetach、ディスクを交換して、zpool attach zpool dev でおこなえば、mirrorが始まります。
尚、mirror完了後、detach して、あらためて、attach すると、差分ではなく1からmirrorを取り直すようなので、非常に時間がかかります。
詳しくは、 Solaris ZFS 管理ガイドをご覧下さい。