FreeBSD で atacontrol を使いこなしてみる? †FreeBSD には atacontrol という ATA デバイスをコントロールするプログラムがあります. まずは atacontrol をさらりと触ってみる †まずは簡単にで構いませんので,man atacontrol してみて下さい.様々な利用方法がある事がわかるかと思います. atacontrol list †atacontrol list とコマンドを発行すると,利用可能なコントローラ上の ATA デバイスの一覧が表示されます. geom# atacontrol list
ATA channel 0:
Master: ad0 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4
Slave: ad1 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4
ATA channel 1:
Master: ad2 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4
Slave: ad3 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4
今回の環境の場合,ATA チャネルは 0,1 の 2つがあり,それぞれの Master, Slave に HDD が接続されている事がわかるかと思います.増設の ATA カード等があれば,チャネル数が増えて表示されます. atacontrol attach, atacontrol detach †atacontrol attach 及び atacontrol detach は,ATA チャネルを切り離したり,接続したりする場合に利用します.リムーバブルケースに入れた HDD を後から認識させたい場合等に利用します. geom# atacontrol detach ata1 上記コマンドの場合,ATA チャネル 1 を切り離す事になります.エラーが表示されていなければ成功しています. geom# atacontrol list
ATA channel 0:
Master: ad0 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4
Slave: ad1 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4
ATA channel 1:
Master: no device present
Slave: no device present
前項の状態と違い,ATA チャネル 1 のデバイスが表示されていませんので,切り離された事がわかるかと思います.また,dmesg でも切り離された事を確認出来ます. geom# atacontrol attach ata1 Master: ad2 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4 Slave: ad3 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4 atacontrol detach と違い,成功すると認識したデバイスが表示されます.上記の場合,ad2 と ad3 が認識に成功しました.ここでも atacontrol list で確認を行いましょう. geom# atacontrol list
ATA channel 0:
Master: ad0 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4
Slave: ad1 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4
ATA channel 1:
Master: ad2 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4
Slave: ad3 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4
これで初期の状態まで認識出来ている事が確認出来たかと思います. atacontrol mode †atacontrol mode コマンドは,転送モードの表示及び変更を行います. geom# atacontrol mode ad0 current mode = UDMA33 上記の場合,ad0 のモードは UDMA33 を利用する状態を表しています.転送モードを変更する場合,デバイス名以降に転送モードを追加したコマンドを発行します. geom# atacontrol mode ad0 pio4 current mode = PIO4 上記の場合,デバイス ad0 に転送モード PIO4 を指定し,結果が反映されている事がわかるかと思います. atacontrol cap †atacontrol cap は,接続されているデバイスの詳細情報を表示します.cap 引数に続いて,デバイス名を引数として渡す事で,指定されたデバイスの詳細が表示されます. geom# atacontrol cap ad0 Protocol ATA/ATAPI revision 4 device model VMware Virtual IDE Hard Drive serial number 00000000000000000001 firmware revision 00000001 cylinders 8322 heads 16 sectors/track 63 lba supported 8388608 sectors lba48 not supported dma supported overlap not supported Feature Support Enable Value Vendor write cache no no read ahead no no Tagged Command Queuing (TCQ) no no 0/0x00 SMART no no microcode download no no security no no power management yes yes advanced power management yes no 16384/0x4000 automatic acoustic management no no 0/0x00 0/0x00 上記の場合,ad0 デバイスの詳細を表示しています.VMware の HDD だからか,シリアル,ファームはあまり意味の無い数字になってしまっていまが,通常であれば有意義な情報が表示されるでしょう. ここでのマトメ †atacontrol list は接続されている ATA チャネル,デバイスの一覧を表示する. atacontrol で Software RAID †前述の通り,atacontrol では ATA デバイスの情報表示,管理が出来る事を理解したかと思います. atacontrol で RAID0 †まずは,RAID レベルの少ない順からと言う事で,RAID0 ディスクの作成を行いたいと思います.RAID0 についての詳しい事は 用語集:RAID 又は,やっぱり google 先生に聞いてもらうとして,以下に簡単に説明します. geom# atacontrol create RAID0 512 ad1 ad3 ar0 created 上記のように atacontrol create に RAID0 を付け,インタリーブ間隔 512 を付けてから,RAID0 とするデバイス名を順に並べていきます.インタリーブ間隔とは,複数のディスクを同時に利用するセクタ数です.512 に指定した場合,512 / N でストライプサイズが決定されるようですが,試した限りではストライプサイズは最高で 256 までとなるようでした. geom# atacontrol status ar0 ar0: ATA RAID0 stripesize=256 subdisks: ad1 ad3 status: READY ATA RAID0 ディスクである事がわかり,ストライプサイズが 256byte で ad1,ad3 が RAID0 ディスクのサブディスクとして利用されている事がわかります. geom# atacontrol status ar0 ar0: ATA RAID0 stripesize=256 subdisks: ad1 DOWN status: BROKEN 先にも述べましたが,このような状態になった場合,RAID0 ディスク上のデータは完全に失われます.その際は,作成された arN を削除し,新たに RAID ディスクを作成する必要があります. geom# atacontrol delete ar0 atacontrol delete は atacontrol で作成した RAID ディスクを無効化し,arN を削除するコマンドです.引数には,存在する arN を指定する必要があります. atacontrol で RAID1 †atacontrol による RAID ディスクでは一番利用される形態の RAID レベルかと思われます.詳しい説明はやはり google さんに聞いてもらうとして,簡単に以下に説明します. geom# atacontrol create RAID1 ad0 ad2 ar0 created 成功した場合,arN created が返る点は RAID0 ディスク作成時と同様です.こちらも atacontrol status で RAID ステータスの確認が出来ます. geom# atacontrol status ar0 ar0: ATA RAID1 subdisks: ad0 ad2 status: READY デバイス ar0 が RAID1 ディスクとして利用可能で,サブディスクとして ad0,ad2 が利用されています.ステータスは READY ですので,正常な状態だという事がわかるかと思います. geom# atacontrol status ar0 ar0: ATA RAID1 subdisks: ad0 DOWN status: DEGRADED 上記の場合,ad2 になんらかの不良があり,mirror をとる事が出来ずに DEGRADED 状態である事がわかります.通常はこのままでもオペレーションは可能ですが,片肺運転ですので ad0 が故障したら大事なデータが失われる事になります. geom# atacontrol list
ATA channel 0:
Master: ad0 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4
Slave: ad1 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4
ATA channel 1:
Master: no device present
Slave: ad3 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4
この様な状態の場合,まずは壊れた ad2 を切り離す必要があります.ad2 は ata1 に接続されていますので,まずは ata1 を切り離します. geom# atacontrol detach ata1 こうする事で,ata1 ごと ad2 の切り離しが行われます.この状態で,故障したディスクを交換します.リムーバブルケースの場合は簡単に出来るかと思いますが,ケースを開けなければならない場合,一旦シャットダウンを行うほうが安全でしょう. geom# atacontrol attach ata1 Master: ad2 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4 Slave: ad3 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4 上記のように,ad2 が復活すると,RAID の再構築が可能になります.RAID の再構築は次の手順で行います. geom# atacontrol addspare ar0 ad2 ar0 に ad2 というスペアを追加するコマンドが上記のコマンドになります.atacontrol で確認すると,ディスクが追加されている事がわかるかと思います. geom# atacontrol status ar0 ar0: ATA RAID1 subdisks: ad0 ad2 status: DEGRADED サブディスクとして,ad0,ad2 がありますが,ステータスは DEGRADED の状態です.この後,リビルドコマンドを発行する事によって,RAID の再構築が始まります. geom# atacontrol rebuild ar0 エラーが表示されず,コマンドプロンプトに戻ってきた場合,リビルド処理の要求は成功し,バックエンドでリビルド処理が行われています.リビルドステータスも atacontrol status で確認が可能です. geom# atacontrol status ar0 ar0: ATA RAID1 subdisks: ad0 ad2 status: REBUILDING 19% completed 上記の場合,リビルド中で 19% リビルド処理が完了している事がわかるかと思います. atacontrol で RAID0+1 †RAID には,RAID0 と RAID1 を組み合わせた RAID0+1 (RAID10) というレベルがあります.実現方法は様々あるようですが,FreeBSD の atacontrol での RAID0+1 は,RAID0 ディスクを2つ作成し,その RAID0 ディスク 2つを RAID1 でミラーリングする方式を採用しているようです. geom# atacontrol create RAID0+1 512 ad0 ad1 ad2 ad3 ar0 created 上記コマンドを実行する事で,RAID0+1 が作成出来ます.512 はインタリーブサイズで,RAID0 の時と同様です.また,どのディスクが組みになるかは dmesg 又はコンソール画面に次のように表示される事で把握出来るでしょう. ar0: 8191MB <Intel MatrixRAID RAID0+1 (stripe 128 KB)> status: READY ar0: disk0 READY (master) using ad0 at ata0-master ar0: disk1 READY (master) using ad1 at ata0-slave ar0: disk2 READY (mirror) using ad2 at ata1-master ar0: disk3 READY (mirror) using ad3 at ata1-slave 上記の場合,ad0,ad1 が1ペアで,ad2,ad3 が1ペアになります.atacontrol detach
を行う予定がある場合,組み合わせに注意する必要があります. geom# atacontrol status ar0 ar0: ATA RAID0+1 stripesize=256 subdisks: ad0 ad1 ad2 DOWN status: DEGRADED 上記のように,ad3 デバイスが不調で DEGRADED 状態の場合,RAID1 の再構築と同様にスペアドライブを追加します.その後,atacontrol rebuild で再構築を行います. geom# atacontrol addspare ar0 ad3 geom# atacontrol status ar0 ar0: ATA RAID0+1 stripesize=256 subdisks: ad0 ad1 ad2 ad3 status: DEGRADED geom# atacontrol rebuild ar0 geom# atacontrol status ar0 ar0: ATA RAID0+1 stripesize=256 subdisks: ad0 ad1 ad2 ad3 status: REBUILDING 2% completed と,再構築の方法は RAID1 の場合とまったく同様に行える事がわかると思います. atacontrol で RAID5 †atacontrol では先の RAID レベル以外にも,RAID5 が利用できます.RAID5 は,分散パリティ書込み方式の RAID で,最小で 3つの HDD が必要となります.データ,パリティ共に全てのディスクに分散されて書き込まれ,1つのディスクが不調になっても,残りのディスクにあるデータ,パリティから失われたデータを復元する事が可能です. geom# atacontrol create RAID5 256 ad0 ad1 ad2 ar0 created こちらも今までと変わらず,RAID0+1 と同じように作成出来ます.ディスク不良時の RAID の再構築も同様の手順で行います. geom# atacontrol status ar0 ar0: ATA RAID5 stripesize=256 subdisks: ad0 ad1 DOWN status: DEGRADED geom# atacontrol addspare ar0 ad2 geom# atacontrol status ar0 ar0: ATA RAID5 stripesize=256 subdisks: ad0 ad1 ad2 status: DEGRADED geom# atacontrol rebuild ar0 geom# atacontrol status ar0 ar0: ATA RAID5 stripesize=256 subdisks: ad0 ad1 ad2 status: REBUILDING 0% ompleted RAID ディスクの削除 †RAID0 で使用していて,片方が壊れた場合や,ただ RAID 環境をやめたい場合,RAID ディスクを削除する必要があります.削除しなくてもそのまま使えるのですが,ディスクの先頭に RAID ディスクであるというマークがついており,他の FreeBSD へディスクを移動した際に混乱が生じる可能性がある為です. geom# atacontrol delete ar0 これで,今まで ar0 として利用していた RAID ディスクは削除されました.RAID1 で利用していた場合,データはそのまま adN ドライブから利用が可能です. ここでのマトメ †atacontrol create で RAID を作成する. 最後に †atacontrol による ATA デバイスの確認,設定や RAID ディスクの作成を一通り説明しました.間違い等を発見した方は blog 等で指摘して頂けると助かります. Hiroyuki Seino http://www.seichan.org/ http://www.seichan.org/blog/ |