みたいな。
要件:
ただソフトウェア RAID がやってみたい。それだけ。 root までやるつもりはなく、データ領域だけ redundant であればよい。
どうせやるなら RAID-5 がかっくいい。それっぽく動けばよいのだ。
そして相変わらずバックアップなどしないのであった。
※これのどこらへんが要件なのか。
ハードウェア的には
・資源を有効利用するの〜 ソフトウェア RAID 構築の下準備
・きょーも RAID の道はまったりと。デバイス認識まで。
にてすでに待ち状態。え〜加減はじめますかぁ。
で、とても長くなったので追記行き。
まずは fdisk でパーティションを切るです。といっても全ディスクは FreeBSD スライスとしていただいちゃいます。
# fdisk -BI da2 ******* Working on device /dev/da2 ******* # fdisk -BI da3 ******* Working on device /dev/da3 ******* # fdisk -BI da4 ******* Working on device /dev/da4 *******全ての HDD にデフォルトな BSD ラベルを書いて、
# bsdlabel -w da2s1 # bsdlabel -w da3s1 # bsdlabel -w da4s1BSD ラベルを編集します。
# bsdlabel -e da2s1エディタが起動しまふ。
# /dev/da2s1: 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 17767811 16 unused 0 0 c: 17767827 0 unused 0 0 # "raw" part, don't edit↑これを、こう↓
# /dev/da2s1: 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 17767811 16 vinum 0 0 c: 17767827 0 unused 0 0 # "raw" part, don't edit※ fstype は gvinum って書くと "Warning, unknown file system type gvinum" って怒られます。
# bsdlabel da2s1 > bsdlabel.da2s1 # bsdlabel -R da3s1 bsdlabel.da2s1 # bsdlabel -R da4s1 bsdlabel.da2s1そしておもむろに
# kldload geom_vinumkldload します。これ以降の gvinum コマンドを使う作業はカーネルモジュール geom_vinum.ko がロードされていなければなりません。たぶん。
# gvinum gvinum -> createエディタが起動します。
drive d0 device /dev/da2s1a drive d1 device /dev/da3s1a drive d2 device /dev/da4s1aエディタでドライブ指定を記述して保存すると、その直後に list が実行されます。
3 drives: D d2 State: up /dev/da4s1a A: 8675/8675 MB (100%) D d1 State: up /dev/da3s1a A: 8675/8675 MB (100%) D d0 State: up /dev/da2s1a A: 8675/8675 MB (100%) 0 volumes: 0 plexes: 0 subdisks:なぜかドライブ名が逆順に並んでいるわけだが。
gvinum -> createまたエディタが起動するねん。(←誰?)
# drive d2 device /dev/da4s1a # drive d1 device /dev/da3s1a # drive d0 device /dev/da2s1a volume raid5set plex org raid5 512k sd length 0 drive d0 sd length 0 drive d1 sd length 0 drive d2すると、
3 drives: D d2 State: up /dev/da4s1a A: 0/8675 MB (0%) D d1 State: up /dev/da3s1a A: 0/8675 MB (0%) D d0 State: up /dev/da2s1a A: 0/8675 MB (0%) 1 volume: V raid5set State: down Plexes: 1 Size: 16 GB 1 plex: P raid5set.p0 R5 State: down Subdisks: 3 Size: 16 GB 3 subdisks: S raid5set.p0.s2 State: stale D: d2 Size: 8675 MB S raid5set.p0.s1 State: stale D: d1 Size: 8675 MB S raid5set.p0.s0 State: stale D: d0 Size: 8675 MBあらやだ奥さん! それっぽくできてるじゃあ〜りませんか!
gvinum -> start raid5set 3 drives: D d2 State: up /dev/da4s1a A: 0/8675 MB (0%) D d1 State: up /dev/da3s1a A: 0/8675 MB (0%) D d0 State: up /dev/da2s1a A: 0/8675 MB (0%) 1 volume: V raid5set State: down Plexes: 1 Size: 16 GB 1 plex: P raid5set.p0 R5 State: down Subdisks: 3 Size: 16 GB 3 subdisks: S raid5set.p0.s2 State: I 0% D: d2 Size: 8675 MB S raid5set.p0.s1 State: I 0% D: d1 Size: 8675 MB S raid5set.p0.s0 State: I 0% D: d0 Size: 8675 MBさぁ、 subdisks: の State: が "I 〜〜%" となって initialize が始まりましたっ!
gvinum -> ls 3 subdisks: S raid5set.p0.s2 State: I 45% D: d2 Size: 8675 MB S raid5set.p0.s1 State: I 45% D: d1 Size: 8675 MB S raid5set.p0.s0 State: I 45% D: d0 Size: 8675 MB gvinum -> ls 3 subdisks: S raid5set.p0.s2 State: I 97% D: d2 Size: 8675 MB S raid5set.p0.s1 State: I 97% D: d1 Size: 8675 MB S raid5set.p0.s0 State: I 96% D: d0 Size: 8675 MBあと少しっ! って s0 と s1 でパーセンテージが違う。こんなタイミングもあるのね...
gvinum -> list 3 drives: D d2 State: up /dev/da4s1a A: 0/8675 MB (0%) D d1 State: up /dev/da3s1a A: 0/8675 MB (0%) D d0 State: up /dev/da2s1a A: 0/8675 MB (0%) 1 volume: V raid5set State: up Plexes: 1 Size: 16 GB 1 plex: P raid5set.p0 R5 State: up Subdisks: 3 Size: 16 GB 3 subdisks: S raid5set.p0.s2 State: up D: d2 Size: 8675 MB S raid5set.p0.s1 State: up D: d1 Size: 8675 MB S raid5set.p0.s0 State: up D: d0 Size: 8675 MBめでたく、全ての State: が up となりました。
gvinum -> exit
# newfs /dev/gvinum/raid5set
/dev/gvinum/raid5set: 17351.0MB (35534848 sectors) block size 16384, fragment size 2048
using 95 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.
super-block backups (for fsck -b #) at:
160, 376512, 752864, 1129216, 1505568, 1881920, 2258272, 2634624, 3010976,
3387328, 3763680, 4140032, 4516384, 4892736, 5269088, 5645440, 6021792,
6398144, 6774496, 7150848, 7527200, 7903552, 8279904, 8656256, 9032608,
9408960, 9785312, 10161664, 10538016, 10914368, 11290720, 11667072, 12043424,
12419776, 12796128, 13172480, 13548832, 13925184, 14301536, 14677888,
15054240, 15430592, 15806944, 16183296, 16559648, 16936000, 17312352,
17688704, 18065056, 18441408, 18817760, 19194112, 19570464, 19946816,
20323168, 20699520, 21075872, 21452224, 21828576, 22204928, 22581280,
22957632, 23333984, 23710336, 24086688, 24463040, 24839392, 25215744,
25592096, 25968448, 26344800, 26721152, 27097504, 27473856, 27850208,
28226560, 28602912, 28979264, 29355616, 29731968, 30108320, 30484672,
30861024, 31237376, 31613728, 31990080, 32366432, 32742784, 33119136,
33495488, 33871840, 34248192, 34624544, 35000896, 35377248
newfs する際、以前は -v オプションを付ける必要があったみたいですが、いまは必要ありません。 src/sbin/newfs/newfs.c - view - 1.60 でさっくり remove されてます。# mount /dev/gvinum/raid5set /mnt # df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/gvinum/raid5set 17204942 4 15828544 0% /mntあぁっ! RAID-5 まうんとしてるぅぅっ! まうんとしちゃってましゅぅぅぅ!!!
# vim /etc/fstab # Device Mountpoint FStype Options Dump Pass# /dev/gvinum/raid5set /raid ufs rw 1 1 ↑を追加。
# vim /boot/loader.conf geom_vinum_load="YES" ← を追加。これで再起動してみて、きちんとマウントされたら成功ですよ〜。
というわけで、ソフトウェア RAID-5 の構築までやってみました。ここまで記事にするので疲れたさ。
今後としては、
・ケーブル抜いたりしてアレイをおかしくしてみる。
→ さらに HDD を交換してリビルドしてみる。
・アレイがおかしゅうなったら messages に出るが、メールも飛ぶとよい。
・リムーバブルユニットのついた PC ケースが欲しいなぁ。
などを記事にしようかと妄想しています。はぁはぁ。
...で。ソフトウェア RAID-5 を使ってみての感想というか、あれですが...
・噂通り書き込みが遅い...
実質、ストライピングの 25% は伊達じゃない(vinum(8) より)。
この記事を vim で書いている裏で /usr を RAID-5 領域に書き込ませてますが、 7GB のコピーに 1h かかりました。パリティの計算が頻発するからかリアルタイム系の作業がもたつく感じがします。まぁ速度を求めるもんじゃないからねぇ。速くしたけりゃハードウェア RAID にしろってことで。
・変なことはするもんじゃない。
RAID-5 の初期ビルド中に無理やり gvinum の rm コマンドを発行して subdisk → plex → volume の順で消去、 drive はどうやっても消せないのでそのまま exit して放置してしばらくすると固まった。タイミングからすると、 rm してもビルドは続行していて、ビルド完了直後に固まったようだ。 Xorg 上で作業していたのでマウスもキーボードも利かず。外から ping は通るけど ssh は応答もなく...
・gvinum の help にあって使えないコマンドあり。
resetconfig なんて unknown とか言われましてよ。どういうことかしら。
それ以前に man に gvinum がありませんことよ。
参考リンク:
・vinum編 (FreeBSD覚え書き)
っていうかそのままパクらせていただきました。ほんと、すいますいません。