title
わたしの日記は日々の出来事の鬱憤晴らしの毒だし日記がメインです。 相当病んでいます。くだを巻いています。許容出来る方のみのアクセスをお願いします。 また、この日記へのリンクは原則自由にして頂いても結構ですが、 写真への直リンクを張るのはご遠慮下さい。内容に関しては、一切保証致しません。
カテゴリ一覧 Network, Internet, IPv6, DC, NTT, Comp, Linux, Debian, FreeBSD, Windows, Server, Security, IRC, 大学, Neta, spam, , 生活, 遊び, Drive, TV, 仕事,
過去日記:





2010年01月02日() [晴れ]

[Solaris][Server] ML110 on OpenSolaris Storage Server

以前から 運用していたサーバ
最近、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 延長ケーブル)というケーブルも一応存在するが、怪しいので、使用しなかった。
直ぐにてにはいる分けでも無かったので。


 最終的構成:
 セットアップ:

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 管理ガイドをご覧下さい。

[ コメントを読む(0) | コメントする ]

[FreeBSD] FreeBSD7.2R (i386) でzfs を使う

かなり制限がきつくて、つらいですが、参考にでも。
今回、ずーっと、今使用しているサーバ(OSもHWもEOL)をVPSに置きかえたいとおもい検討していましたが、色々なリソース制限などで、必要なスペックを求めると、Pleskなどが標準でついてくるプランになり、且つ、ライセンス費用等を入れると、専用サーバより高くなってしまいます。
そこで、現在余剰のある IBM @Serve 306 を使用することにしました。
(HWは保守切れの為、2台用意で、ディスク交換のみで復旧出来るようにコールドスタンバイ構成としている)

オンボードのSATA-RAID を使用し、CentOS5.3では、インストーラからは正しくディスクが見つけれるが、GRUBをインストールするところがおかしく、正しく起動出来ないという状況のため、諦めてFreeBSDにしました。
特にOSにはLinuxであっても、FreeBSDであっても、こだわりはないので。
FreeBSD 7系を使用し、freebsd-update でカーネルは面倒を見ることを条件として構築。
すなわち、色々な制約が伴います。
性能評価は今のところしていないので何とも言えないのですが、次のような制限のため、zfsの性能を活かすことは出来ません。
FreeBSD で ZFS を使う為の調整

カーネルに 1GB ものメモリを割り当てるので基本的には amd64 などの 64bit 環境が推奨だ。しかし、i386 などの 32bit 環境でもメモリの割当てを増やすと安定して動いている。ZFS Tuning Guie が、沢山の人の試行錯誤から作られた。これは FreeBSD 7 系を基に作られたもので、8 系にもそのまま当てはまるものも多いが、KVA の限界など改善されたものもある。
調整のやり方は大きく分けて二通りになる。カーネルにメモリを大きく割り当てる方法と ZFS のキャッシュを少なくする方法になる。
i386 の初期設定ではカーネルに 1.5GB のメモリを割り当てることが出来ないので options KVA_PAGES=512 をカーネルの設定に加えて再構築する必要があります。。尚、amd64 ではカーネルの再構築は必要ありません。

そういう事から、カーネルメモリを増やすには、カーネル再構築が必要となりますが、freebsd-update を使用するには、GENERICを使用するため、このあたりのチューニングが出来ません。その為、zfsキャッシュを減らし、メモリ内に納まるようにせざる得ない状態です。このあたりは、次の項目で述べているZFS Tuning Guideに756MBしかないサーバでの使用例を参考にしてみると良いでしょう。。

ZFS Tuning Guideに有るとおり、756MB を参考例に、カーネルメモリの容量を計算し、arc_cache などを調整すれば良です。。

参考例にある値は次のようになっている。

vm.kmem_size="330M"
vm.kmem_size_max="330M"
vfs.zfs.arc_max="40M"
vfs.zfs.vdev.cache.size="5M"

その為、arc_cache を減らした場合、パフォーマンスが低下する可能性がありますが、どの程度低下するのかは、さすがに運用レベルでないと見えないところが大きいと思います。
基本的にzfsを使用したい場合は、x64対応のCPU及びFreeBSD(x64)を使用することを推奨するとのこと。
i386であれば、GENERICカーネルは使用出来ず、freebsd-updateも使用出来ない、手でカーネル再構築をおこなう必要が伴うことを覚悟しておいた方が良いかも知れません....

じぇふ  『SolarisのSCSIデバイスの切り離しは http://docs.sun.com/app/docs/doc/819-0386/devconfig2-13?a=view このへんが参考になるのではないかと。cfgadm -alで接続状態を確認してから、切断。SATAのデバイスもこの手が使えるのかどうかは試してない。 SATAはzfs detachで切り離してくれるし、サポートされてるHBAもそのあたりやってくれるんじゃないかなあ。zfsで切り離したあとで、cfgadmで接続状態を確認してみるのもいいかも知れない。』
じぇふ  『あー、コメントするスレ間違えたっ。下のほうの記事ね。』
tomocha  『えーっと、SCSIはそれでいけるのですが、オンボードのSATAはそれでは扱えなかったのです。。恐らくHBA経由のはそれでいけそうですねぇ。 ちなみにFreeBSDのatacontrolはなんやかんやいっても、動きますが(笑>SATA』
[ コメントを読む(3) | コメントする ]

Diary for 1 day(s)
Powered by hns HyperNikkiSystem Project




(c) Copyright 1998-2014 tomocha. All rights reserved.