RAID-5, 6あるいは1などでディスクが壊れた際の交換方法を紹介します。
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 62498888 1879716 60619172 4% /
/dev/md0 521580 521580 0 100% /mnt/md0
# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.03
Creation Time : Sat Jan 31 16:05:28 2009
Raid Level : raid5
Array Size : 521600 (509.46 MiB 534.12 MB)
Device Size : 104320 (101.89 MiB 106.82 MB)
(... 略 ...)
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 18 3 active sync /dev/sdb2
4 8 50 4 active sync /dev/sdd2
5 8 34 5 active sync /dev/sdc2
# mdadm --fail /dev/md0 /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0
# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.03
Creation Time : Sat Jan 31 16:15:28 2009
Raid Level : raid5
Array Size : 521600 (509.46 MiB 534.12 MB)
Device Size : 104320 (101.89 MiB 106.82 MB)
(... 略 ...)
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 18 3 active sync /dev/sdb2
4 8 50 4 active sync /dev/sdd2
5 8 34 5 active sync /dev/sdc2
6 8 17 - faulty spare /dev/sdb1
LinuxでソフトウェアRAIDアレイをいじるにはmdadmコマンドを使います。使用中のRAIDアレイ(100MBディスク6本からなるRAID-5アレイ)で故障を発生させます。といっても実際にディスクを破壊するわけにはいきませんので、--failでシステムに故障を伝えます。故障したデバイスはfaulty spareという状態に変更されます。
次に故障したディスクを外します。
# mdadm --remove /dev/md0 /dev/sdb1
mdadm: hot removed /dev/sdb1
# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.03
Creation Time : Sat Jan 31 16:28:28 2009
Raid Level : raid5
Array Size : 521600 (509.46 MiB 534.12 MB)
Device Size : 104320 (101.89 MiB 106.82 MB)
(... 略 ...)
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 18 3 active sync /dev/sdb2
4 8 50 4 active sync /dev/sdd2
5 8 34 5 active sync /dev/sdc2
故障したディスク(faulty spare)を --removeに指定して、アレイから取り除きます。アレイから取り除けるのは、故障している、していないに関わらずスペアディスクのみです。活きているディスクを --removeしようとしても失敗します。
次に新たなディスクを追加します。
# mdadm --add /dev/md0 /dev/sdb1
mdadm: added /dev/sdb1
# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty]
md0 : active raid5 sdb1[6] sdd2[4] sdc2[5] sdb2[3] sdd1[2] sdc1[1]
521600 blocks level 5, 64k chunk, algorithm 2 [6/5] [_UUUUU]
[====>................] recovery = 20.5% (22272/104320) finish=0.0min speed=22272K/sec
unused devices: <none>
# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.03
Creation Time : Sat Jan 31 16:58:28 2009
Raid Level : raid5
Array Size : 521600 (509.46 MiB 534.12 MB)
Device Size : 104320 (101.89 MiB 106.82 MB)
(... 略 ...)
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 18 3 active sync /dev/sdb2
4 8 50 4 active sync /dev/sdd2
5 8 34 5 active sync /dev/sdc2
新たなディスクを --addで加えることでディスクの数が6本に戻ります。するとリカバリが始まります。今まで通り --detailで見ても良いですが、/proc/mdstatにもっとわかりやすい進行表示が出ます。
素晴らしいことにRAID-5アレイを止めなくとも、上記の作業が全てできます。リカバリ処理もI/O帯域を食いつぶさないように加減しますから、ユーザは --removeしてディスク交換して --addすれば、後はシステムがよきに計らってくれるわけです。便利ですね。
この記事にコメントする
SeaMonkeyでVAIO type Gのサイトを見ると100%フリーズします。一方IE7だと正常に表示されます。
SeaMonkeyがクラッシュするなら開発元にレポートを送れるけど、フリーズだとどうしようもないですね。しかもどういう条件で再現するのか試しているうちに、一切フリーズしなくなってしまいました。真相は闇の中です。
もちろん今も正常に表示されます。原因はフラッシュ周りかと思ったけど、IEは動いていたしなあ?一体なんだったんだろうか。キャッシュが壊れたのかなあ?
この記事にコメントする
最近話題の Intel Atom 330を買いました。1.60GHz駆動、デュアルコア&Hyper-Threadingで疑似4コアだそうです。HDDを外付けして静音ファイルサーバにする予定です。
静音性、値段、省スペース性から見て玄箱PROは有力な対立候補でしたが、肝心のPCI Expressスロットは箱から基盤をばらさないと使えなくて不便だし、CPUが非力(ARM9/400MHz)なので見送りました。
Atomプロセッサは単独では販売されておらず、マザーボードとセットで販売されています。価格は1万円くらいです。安いもんですね。
現時点でAtom 330を搭載する製品はIntel D945GCLF2とMSI Wind Board 330です。あとはECSからも出るとか出ないとか。どちらのボードもノースIntel 945GC、サウスICH7です。ネットワークやオーディオ周りが違うので要チェック。
以下、ファイルサーバでやりたいことリスト。
ATA over Ethernetは以前VM上で実験して散々な結果でしたが、実機だとどうかなあ。
この記事にコメントする
EthernetをSANとして使う技術はSCSIプロトコルをTCP/IPでやりとりするiSCSIが有名ですが、ATAプロトコルをEthernetでやりとりする ATA over Ethernet(以降ATAoE)という技術もあります。
ATAoEの売りは複雑なTCP/IPスタックを省略することで、ATAoE対応ストレージ(ターゲットと呼ぶ)がiSCSIターゲットより安く(高速に?)できるという点です。
しかしTCP/IPを捨てたことはATAoEの欠点でもあります。特にルーティングができない…というよりEthernetにはルーティングという概念が元からありませんから、単一のセグメント内でしか使えない、という大きな欠点を抱えています。
個人向けならば別にルーティングなんざ必要ないので、ATAoEの「安さ」という点が活きると思いますが、IETFの標準にまで食い込んだiSCSIをひっくり返すのは難しそうだ…。
Buffaloが個人向けの廉価なiSCSIターゲットを出していますが、ATAoEでは個人向けのターゲットは見かけません。
仕方ないのでLinux PC上でvbladeというソフトウェアを動かしてATAoEターゲットを構築します。
# aptitude install vblade (省略) # dd if=/dev/zero of=file bs=67108864 count=1 # vblade 1 2 eth0 ./file & ioctl returned 0 67108864 bytes pid 1603: e1.2, 131072 sectors
これで1-2という番号のついた64MBのATAoEターゲットがeth0のネットワークに対して公開されます。
今は実験なので適当に作った64MBのファイルをストレージ領域として使っていますが、本番では /dev/hdcなどのブロックデバイスを使います。やり方は同じです。
次にイニシエータ側を構築します。
# aptitude install aoetools
(省略)
# aoe-discover
# aoe-stat
e1.2 0.067GB eth0 up
# ls -l /dev/etherd
total 0
c-w--w---- 1 root disk 152, 3 Jan 25 2009 discover
brw-rw---- 1 root disk 152, 288 Jan 25 04:46 e1.2
cr--r----- 1 root disk 152, 2 Jan 25 2009 err
c-w--w---- 1 root disk 152, 4 Jan 25 2009 interfaces
c-w--w---- 1 root disk 152, 5 Jan 25 2009 revalidate
# fdisk /dev/etherd/e1.2
(省略)
# ls -l /dev/etherd
total 0
c-w--w---- 1 root disk 152, 3 2009-01-25 13:45 discover
brw-rw---- 1 root disk 152, 288 2009-01-25 04:53 e1.2
brw-rw---- 1 root disk 152, 289 2009-01-25 04:53 e1.2p1
cr--r----- 1 root disk 152, 2 2009-01-25 13:45 err
c-w--w---- 1 root disk 152, 4 2009-01-25 13:45 interfaces
c-w--w---- 1 root disk 152, 5 2009-01-25 13:45 revalidate
まずaoe-discoverでターゲットを探し、デバイスファイルを作ります。すると /dev/etherdにe1.2というブロックデバイスが見えるはずです。この数字はターゲットを作ったときにつけた数字です。数字は適当で良いですが、他とかぶらないようにしましょう。
このブロックデバイスにfdiskなどでパーティションを作ると、e1.2p1のようにpと数字がついたデバイスが追加されるはずです。あとは通常のディスクを扱うようにmkfsをして、mountします。
Windowsをイニシエータにするには WinAoE というGPLのドライバを利用します。
サイトにあるwinaoe-0.97g.zipアーカイブを展開します。そして
[コントロールパネル] - [ハードウェアの追加] - [次へ]
- [はい、ハードウェアを接続しています(Y)] - [次へ]
- [新しいハードウェアデバイスの追加](リストの一番下にある) - [次へ]
- [一覧から選択したハードウェアをインストールする(詳細)(M)] - [次へ]
- [SCSIとRAIDコントローラ] - [次へ]
- [ディスク使用(H)] - [参照(B)]
先ほど展開したディレクトリにbinというディレクトリがあるので、その中のaoe.infを指定します。
- [AoE Driver] - [次へ] - [次へ]
署名されていないドライバなので、インストール時に警告が出ます。納得できるならインストールしてください。
> aoe scan Client NIC Target Server MAC Size 00:01:xx:xx:xx:xx e1.2 08:00:xx:xx:xx:xx 64M > aoe mount 00:01:xx:xx:xx:xx 1 2 mounting e1.2 from 00:13:xx:xx:xx:xx
ターゲットを認識させるにはMS-DOSプロンプトからaoe scanを実行してターゲットのMACアドレスを得た後、aoe mountにてクライアントのMACアドレスとターゲットの番号を指定してマウントします。
あとはローカルのディスクを使うときと同じなのですが、一応説明しておくと、
[コントロールパネル] - [管理ツール] - [コンピュータの管理]
- [記憶域] - [ディスクの管理] - [ディスクn](新しくできているはず)
- 右クリックして [新しいパーティション(N)] - [次へ]
- [プライマリパーティション] - [次へ]
- サイズ入力して [次へ]
- ドライブ文字を割り当てて [次へ]
- フォーマットの条件を決めて [次へ]
- [完了]
これでエクスプローラにドライブが出現するはずです。
簡単にベンチマークを取ってみたところ、結果はRead、Writeともに5MB/sという悲しい結果に…。Sambaだと16MB/s位出るのになあ…。
この記事にコメントする
| < | 2009 | > | ||||
| << | < | 01 | > | >> | ||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| - | - | - | - | 1 | 2 | 3 |
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
wiki
Linux JM
Java API
2002年
2003年
2004年
2005年
2006年
2007年
2008年
2009年
2010年
2011年
2012年
2013年
2014年
2015年
2016年
2017年
2018年
2019年
2020年
2021年
2022年
2023年
2024年
2025年
過去日記について
アクセス統計
サーバ一覧
サイトの情報合計:
本日: