md126とかmd127対策 [LinuxでSoftware RAID]
/dev/md0や/dev/md1がいつのまにか、/dev/md126とか/dev/md127になっていることがある。
そんなときには、
# update-initramfs -u
するといい。
/etc/mdadm/mdadm.conf に
# definitions of existing MD arrays
ARRAY /dev/md/0 metadata=1.2 UUID=cbbf090d:dc777920:cb8d028e:35b1f037 name=fs2:0
とか書いておいてあげないとだめ。
UUIDやらは、
mdadm --detail /dev/md127とかで調べてあげる。
Linux Software RAID10のレイアウトについて [LinuxでSoftware RAID]
Linux Software RAID10のレイアウト, far, near, offsetについては、wikipediaがわかりやすい。
RAIDを一旦壊して作り直すとき [LinuxでSoftware RAID]
Software RAIDを止める
# mdadm --misc --stop /dev/md0
スーパーブロックを削除
# mdadm --misc --zero-superblock /dev/sd[abcd]1
新たに構成しなおす
ここで、
# mdadm --detail /dev/md0
すると、
/dev/md0:
Version : 1.2
Creation Time : Tue May 14 17:57:59 2013
Raid Level : raid10
Array Size : 5860267008 (5588.79 GiB 6000.91 GB)
Used Dev Size : 2930133504 (2794.39 GiB 3000.46 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue May 14 17:57:59 2013
State : clean, resyncing (PENDING)
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : fs2:0 (local to host fs2)
UUID : 09543b1b:31b8e9f6:67428c18:5f143b7a
Events : 0
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
2 8 33 2 active sync /dev/sdc1
3 8 49 3 active sync /dev/sdd1
と、PENDINGといわれることがあるので、そんなときにはこれ。
# mdadm --readwrite /dev/md0
フォーマット
# mke2fs -t ext4 -m 0 /dev/md0
RAID check on Ubuntu [LinuxでSoftware RAID]
先日気がついたのですが、日曜深夜にファイルサーバーが高負荷でなにやら動いています。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
296 root 20 0 0 0 0 R 58 0.0 24:37.84 md0_raid10
627 root 20 0 0 0 0 R 6 0.0 2:47.48 md0_resync
調べてみると、どうやら、日曜0:57にRAID Checkが行われているようです。
Check中は、
# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md0 : active raid10 sdc[2] sdb[1] sdd[3] sda[0]
3907026944 blocks 64K chunks 2 near-copies [4/4] [UUUU]
[==>..................] check = 14.2% (556294912/3907026944) finish=271.1min speed=205984K/sec
こんな具合です。
定期的にcheckはした方が良いようなのですが、どうしても止めたい場合は、
# echo idle > /sys/block/md0/md/sync_action
逆にすぐに実行したい場合は、
# echo check > /sys/block/md0/md/sync_action
週イチを月イチに変更するためには、/etc/cron.d/mdadm の、
57 0 * * 0 root [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ] && /usr/share/mdadm/checkarray --cron --all --quiet
の行を#でコメントアウト。(Ubuntu10.04)
# vi /etc/cron.monthly/mdadm
--
#!/bin/sh
test -x /usr/share/mdadm/checkarray || exit 0
/usr/share/mdadm/checkarray --cron --all --quiet
--
# service cron restart
その他設定は、こちらに、/etc/default/mdadm
RAIDアレイを他のマシンで引き継ぐとき [LinuxでSoftware RAID]
RAID10で組んだRAIDアレイを他のマシンで認識させるときには
mdadm --assemble
を使うんだと思うのですが、正直成功していないので、よくわからないです。。
# mdadm --assemble /dev/md0
すると、なぜか
mdadm: WARNING /dev/sdb1 and /dev/sdb appear to have very similar superblocks.
If they are really different, please --zero the superblock on one
If they are the same or overlap, please remove one from the
DEVICE list in mdadm.conf.
とおこられます。
一方、
# mdadm --assemble /dev/md0 /dev/sd[abcd]1
mdadm: /dev/md0 assembled from 3 drives - need all 4 to start it (use --run to insist).
# cat /proc/mdstat
Personalities :
md0 : inactive sda1[0](S) sdd1[3](S) sdc1[2](S)
5860540416 blocks
unused devices: <none>
/dev/sdb1が認識されておらず、、再起動。
# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90
Creation Time : Thu May 20 22:01:02 2010
Raid Level : raid10
Array Size : 3907026944 (3726.03 GiB 4000.80 GB)
Used Dev Size : 1953513472 (1863.02 GiB 2000.40 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Fri May 21 04:20:59 2010
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2, far=1
Chunk Size : 64K
UUID : 80c59bb7:18dbcaed:86b54b3f:1d0c4af0 (local to host fs)
Events : 0.18
Number Major Minor RaidDevice State
0 8 0 0 active sync /dev/sda
1 8 16 1 active sync /dev/sdb
2 8 32 2 active sync /dev/sdc
3 8 48 3 active sync /dev/sdd
正しく/dev/md0が構成されました。
ちなみに、/dev/mdadm/mdadm.conf も自動的に構成されていました。
ただ、/dev/disk/by-uuid にはmd0のシンボリックリンクは作られていませんでした。
ということで、つくろうとしたのですが、
# tune2fs -U --random /dev/md0
tune2fs 1.41.11 (14-Mar-2010)
tune2fs: Bad magic number in super-block while trying to open /dev/md0
Couldn't find valid filesystem superblock.
エラーでつくられません。
このRAIDアレイはもともとext4でフォーマットされていたのですが、
# tune2fs -l /dev/md0
tune2fs 1.41.11 (14-Mar-2010)
tune2fs: Bad magic number in super-block while trying to open /dev/md0
Couldn't find valid filesystem superblock.
ん〜、なんかダメですね。
しかたないので、データは待避ずみなので、フォーマットします。
# mke2fs -t ext4 -m 0 /dev/md0
mke2fs 1.41.11 (14-Mar-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=16 blocks, Stripe width=32 blocks
244195328 inodes, 976756736 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
29809 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
# tune2fs -l /dev/md0
tune2fs 1.41.11 (14-Mar-2010)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: 297ea1d6-fb47-4f6e-bbdd-21f363f7236a
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 244195328
Block count: 976756736
Reserved block count: 0
Free blocks: 961379586
Free inodes: 244195317
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 791
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
RAID stride: 16
RAID stripe width: 32
Flex block group size: 16
Filesystem created: Fri May 21 07:33:16 2010
Last mount time: n/a
Last write time: Fri May 21 07:39:01 2010
Mount count: 0
Maximum mount count: 24
Last checked: Fri May 21 07:33:16 2010
Check interval: 15552000 (6 months)
Next check after: Wed Nov 17 07:33:16 2010
Lifetime writes: 58 GB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: b99a46c2-ad67-4948-9d4a-81934ed64337
Journal backup: inode blocks
これで、
# ls -la /dev/disk/by-uuid/
total 0
drwxr-xr-x 2 root root 100 2010-05-21 07:39 .
drwxr-xr-x 5 root root 100 2010-05-21 06:45 ..
lrwxrwxrwx 1 root root 9 2010-05-21 07:39 297ea1d6-fb47-4f6e-bbdd-21f363f7236a -> ../../md0
lrwxrwxrwx 1 root root 10 2010-05-21 06:45 a1b63b85-b2c1-4073-b812-cb0933a5ab59 -> ../../sde2
lrwxrwxrwx 1 root root 10 2010-05-21 06:45 b4c81fb7-2c89-472b-a9b1-13a10b4ada0f -> ../../sde1
OKです。デバイスファイルもできました。
フォーマットしないといけないんじゃ、意味がないんですよねー。
まだまだ勉強が必要です
なにかいい方法があるはずです。
ubuntu 10.04 (lucid)でRAIDアレイのフォーマット時にstride,stripe widthが自動的に設定される [LinuxでSoftware RAID]
ubuntu 10.04 をインストールして、RAID10を構築して、
アレイをフォーマットするときに気づいたのですが、
# mke2fs -t ext4 -m 0 -b 4096 /dev/md0
mke2fs 1.41.11 (14-Mar-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=16 blocks, Stripe width=32 blocks
244195328 inodes, 976756736 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
29809 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
と明示的に、strideとstripe widthが表示されている。
念のため、
# tune2fs -l /dev/md0
tune2fs 1.41.11 (14-Mar-2010)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: b6635da4-1919-488c-9764-2f7df12956ee
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 244195328
Block count: 976756736
Reserved block count: 0
Free blocks: 961379586
Free inodes: 244195317
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 791
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
RAID stride: 16
RAID stripe width: 32
Flex block group size: 16
Filesystem created: Sun May 16 01:30:25 2010
Last mount time: n/a
Last write time: Sun May 16 01:36:16 2010
Mount count: 0
Maximum mount count: 29
Last checked: Sun May 16 01:30:25 2010
Check interval: 15552000 (6 months)
Next check after: Fri Nov 12 01:30:25 2010
Lifetime writes: 58 GB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: f0d91a46-c6bc-48b8-837b-c9c7a086e9a6
Journal backup: inode blocks
やはり、しかるべき値にちゃんと設定されているようです。
lucidでmke2fsが0.2バージョンアップしたからか、
他に原因があるかは調べていませんが。。
思い当たるところでは、パーティションをfdiskで切り直したくらいかな。
partedすると、
(parted) mkpart
Partition name? []?
File system type? [ext2]?
Start? 0
End? 2000GB
Warning: The resulting partition is not properly aligned for best performance.
とか言われるので、じゃ、ってことで、mklabel で msdos(=mbr)にしておいてから、
fdiskでパーティションを切り直しました。
これをやっておかないと、
WARNING: GPT (GUID Partition Table) detected on '/dev/sda'!
The util fdisk doesn't support GPT. Use GNU Parted.
とか言われますんで。
で、ふつうにfdiskすると、また、
# fdisk /dev/sdaWARNING: DOS-compatible mode is deprecated.
It's strongly recommended to switch off the mode (command 'c') and
change display units to sectors (command 'u').
とか言われるので、
# fdisk -uc /dev/sda
Command (m for help): pDisk /dev/sda: 2000.4 GB,
2000398934016 bytes255 heads, 63 sectors/track, 243201 cylinders,
total 3907029168 sectorsUnits = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004d1e9
Device Boot Start End Blocks Id System
と、-ucオプションをつけて。
RAID構築したと思いきや、degradしていたとき。。 [LinuxでSoftware RAID]
# mdadm --create /dev/md0 --raid-devices=4 --level=raid10 -v /dev/sd[abcd]1
として、RAID10を構築をはじめて、、およそ5時間後、構築できたことを確認してみると。。
# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90
Creation Time : Sat May 15 05:54:27 2010
Raid Level : raid10
Array Size : 3907026944 (3726.03 GiB 4000.80 GB)
Used Dev Size : 1953513472 (1863.02 GiB 2000.40 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Sat May 15 10:53:31 2010
State : active, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 2
Spare Devices : 0
Layout : near=2, far=1
Chunk Size : 64K
UUID : f2c36e62:2b9db247:86b54b3f:1d0c4af0 (local to host fs)
Events : 0.21
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 0 0 1 removed
2 8 33 2 active sync /dev/sdc1
3 0 0 3 removed
4 8 49 - faulty spare /dev/sdd1
5 8 17 - faulty spare /dev/sdb1
え〜。degradeしてるじゃないですか、って。。
いちおsyslogみると、
May 15 09:56:40 fs kernel: [16066.137942] end_request: I/O error, dev sdd, sector 2262970368
May 15 09:56:40 fs kernel: [16066.138010] raid10: Disk failure on sdd1, disabling device.
May 15 09:56:40 fs kernel: [16066.138013] raid10: Operation continuing on 3 devices.
May 15 09:56:40 fs kernel: [16066.138225] sd 5:0:0:0: [sdd] Unhandled error code
May 15 09:56:40 fs kernel: [16066.138228] sd 5:0:0:0: [sdd] Result: hostbyte=DID_OK driverbyte=DRIVER_TIMEOUT
May 15 09:56:40 fs kernel: [16066.138234] sd 5:0:0:0: [sdd] CDB: Write(10): 2a 00 86 e2 34 00
May 15 09:56:40 fs kernel: [16066.138244] md: md0: resync done.
あ〜、なんかイヤなかんじです。
# badblocks -vs -o sdb1.bad /dev/sdb1
# badblocks -vs -o sdd1.bad /dev/sdd1
で、不良セクタのチェックを行ってもいいのですが、時間が掛かりそうなので、
試しに、スーパーブロックを初期化して、リビルドします。
# mdadm --manage /dev/md0 --remove /dev/sd[bd]1
# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90
Creation Time : Sat May 15 05:54:27 2010
Raid Level : raid10
Array Size : 3907026944 (3726.03 GiB 4000.80 GB)
Used Dev Size : 1953513472 (1863.02 GiB 2000.40 GB)
Raid Devices : 4
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Sat May 15 14:17:41 2010
State : active, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Layout : near=2, far=1
Chunk Size : 64K
UUID : f2c36e62:2b9db247:86b54b3f:1d0c4af0 (local to host fs)
Events : 0.23
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 0 0 1 removed
2 8 33 2 active sync /dev/sdc1
3 0 0 3 removed
# mdadm --misc --zero-superblock /dev/sd[bd]1
# mdadm --manage /dev/md0 --add /dev/sd[bd]1
# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90
Creation Time : Sat May 15 05:54:27 2010
Raid Level : raid10
Array Size : 3907026944 (3726.03 GiB 4000.80 GB)
Used Dev Size : 1953513472 (1863.02 GiB 2000.40 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Sat May 15 14:18:28 2010
State : active, degraded, recovering
Active Devices : 2
Working Devices : 4
Failed Devices : 0
Spare Devices : 2
Layout : near=2, far=1
Chunk Size : 64K
Rebuild Status : 0% complete
UUID : f2c36e62:2b9db247:86b54b3f:1d0c4af0 (local to host fs)
Events : 0.25
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
5 8 17 1 spare rebuilding /dev/sdb1
2 8 33 2 active sync /dev/sdc1
3 0 0 3 removed
4 8 49 - spare /dev/sdd1
って、リビルドって、一個ずつなのね(^^;)
5時間後。。
# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90
Creation Time : Sat May 15 05:54:27 2010
Raid Level : raid10
Array Size : 3907026944 (3726.03 GiB 4000.80 GB)
Used Dev Size : 1953513472 (1863.02 GiB 2000.40 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Sat May 15 19:47:59 2010
State : active, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : near=2, far=1
Chunk Size : 64K
Rebuild Status : 0% complete
UUID : f2c36e62:2b9db247:86b54b3f:1d0c4af0 (local to host fs)
Events : 0.42
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
2 8 33 2 active sync /dev/sdc1
4 8 49 3 spare rebuilding /dev/sdd1
さらに5時間後。
# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90
Creation Time : Sat May 15 05:54:27 2010
Raid Level : raid10
Array Size : 3907026944 (3726.03 GiB 4000.80 GB)
Used Dev Size : 1953513472 (1863.02 GiB 2000.40 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Sun May 16 01:21:37 2010
State : active
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2, far=1
Chunk Size : 64K
UUID : f2c36e62:2b9db247:86b54b3f:1d0c4af0 (local to host fs)
Events : 0.59
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
2 8 33 2 active sync /dev/sdc1
3 8 49 3 active sync /dev/sdd1
時間掛かったなぁ〜
ファイルのデータサイズを仕分けてみる [LinuxでSoftware RAID]
RAIDを構成する際の参考として、chunk sizeをいろいろと変えて
ベンチマークを取ってみましたが、まぁ、あまり変わらなかった訳です
そもそもchunk sizeとはLinuxのSoftware RAIDで一度に取り扱う
データブロックのサイズのことを表します。
ファイルシステムとしてのブロックサイズとはまた別です。
最近はext4とかでフォーマットするとデフォルトでは4096Byteが
ブロックサイズとして使われるようです。
# tune2fs -l /dev/md0 などで調べられます。
ですので、chunk sizeは4KB以上で設定し、読み書きスピードや
無駄があまり出ないサイズに設定するのがよさそうです。
とすると、一体、普段ファイルサーバに保存しているデータのサイズは
いかほどに?という疑問がわいてきますので、調べてみました。
今、ファイルサーバは再構築中なので全てのデータはiMac上に
待避中です。
なので、OSXのターミナルからファイルサーバで保存している
ファイルの一覧を取得し、エクセルでちゃちゃっとヒストグラムを
作ってみます。
$ find ./Desktop/St1 -type f -exec ls -la {} \; >> volume.txt
対象とするフォルダ ./Desktop/St1
にあるファイルだけを抽出して、
volume.txtに書き出します。
ls- la コマンドで出力される情報がそのまま出てきますので、
ファイルサイズ以外の情報を削除して、エクセルのfrequency()関数で、
頻度を抽出します。
あまり細かく分けても仕方ないので、わりとおおざっぱです。
ls- la の結果はbyte単位で出力されているので、
4000 |
8000 |
16000 |
32000 |
64000 |
128000 |
256000 |
512000 |
1024000 |
1024000000 |
1.024E+12 |
1.024E+15 |
この12段階に分けます。
結果、こんな感じ。
横軸:ファイルサイズグループ(x)
縦軸:個数
ほとんどのデータが16KB~64KBに集まっていることがわかります。
ですので、ハードディスクの無駄使いを抑えるためには、
chunk size を16KBに設定するのがよさそうですが、一方で、
16KBだと1chunk? に入りきらないので、2~4chunk使うことに
なり、読み書きの効率が悪そうです。
1chunkに納めるためにはchunk sizeを64KBに設定すると、
85%以上のデータが1Chunkに収まることになり、効率は
良さそうです。
ところで、chunk size = 64KB はデフォルト値です。
やっぱり、「デフォルト最適説」がまた検証されました
chunk size と layout を変えてRAID10 を構成してみましたが。。。 [LinuxでSoftware RAID]
前回の反省から、chunk size と layout を変えてRAID10 を構成して
ベンチマークをとればよさそうだということがわかったので、
やってみましたが、結果はどれもそうかわらないという結論です。
ディスクはHGST HDS722020ALA330 なので一本2TBもあるので
先頭50GBを切り出して、50GBx4/2=100GBのRAID10を構成して
ベンチマークしたのですが、100GBくらいだとlayoutの差がそんなに
でないということでしょうか。
HGST HDS722020ALA330は1プラッタ400GBなので、同一
プラッタの前半1/4でしか動かない訳ですし。。
まぁ、いちおう、結果をまとめて見ました。
今回は、最初から計画的に、スクリプトを書いて実行したので
取り間違いもなく、スムースでした
順に、Write Speed, Read Speed, その合計(比較のため)
どれもそんなに差がないですが、比較的よいのは
chunk size =64
Layout = near2
って、デフォルトじゃないですか〜
やはり、デフォルト最適説
ベンチマーク時のマシンスペック
ファイルサーバ側
CPU:Intel E3200
HDD:HGST HDS722020ALA330
ホスト側
iMac MB952J/A
AFP(by netatalk 2.1beta2)で、AJA system testを使って計測。
Linux software RAIDを使って、RAIDを構築。
chunk size=1024, layout=f2 でRAID10を構成してみる [LinuxでSoftware RAID]
数パターンに分けたRAID10の構成方法によるベンチマークの結果
# mdadm --create /dev/md0 --raid-devices=4 --level=raid10 --chunk=1024 --layout=f2 -v /dev/sd[abcd]1
# mke2fs -t ext4 -m 0 -b 4096 -E stride=256,stripe-width=512 /dev/md0
とした場合ローカルディスクアクセスのパフォーマンスが比較的よかったので、
これで構成しました。
これで、ローカルディスクアクセスのパフォーマンスを測定してみると。。
Version 1.03c ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
fs 4G 72909 96 202308 37 101063 25 68007 97 402652 48 162.9 0
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 407 3 +++++ +++ 544 3 353 2 +++++ +++ 540 3
次に、ファイルサーバとしてネットワークアクセスでのパフォーマンス測定を行ってみると。。。
Write : 77.9MB/sec
Read : 61.1MB/sec
と以前の全てデフォルト構成から比べて、パフォーマンスが大幅に低下。
特にReadは100MB/secからですから、40%も低下したことになります。
ローカルディスクアクセスとネットワークディスクアクセスは比例しませんね。。
ベンチマーク時のマシンスペック
ファイルサーバ側
CPU:Intel E3200
HDD:HGST HDS722020ALA330
ホスト側
iMac MB952J/A
AFP(by netatalk 2.1beta2)で、AJA system testを使って計測。
Linux software RAIDを使って、RAIDを構築。
あとで stride stripe-width を変更する [LinuxでSoftware RAID]
mke2fs のフォーマットオプション -E で指定する
stride
stripe-width
ですが、実は、フォーマット後にも変更可能です。
tune2fs -E stride=n,stripe-width=m /dev/mdx
ということは、chunk sizeとlayoutを数パターンに分けて、
ベンチマークを取ればよかったわけです。
タグ:stripe size
RAIDを再構築できない病につける薬 [LinuxでSoftware RAID]
以前も書きましたが、RAIDを再構築する際には、おおざっぱに
アンマウント
RAID停止
スーパーブロックの消去
再度RAID作成
というステップを踏みますが、おそらく、スーパーブロックの消去で失敗
したのか、再度RAIDを作成しようとした際に
# mdadm --create /dev/md0 --raid-devices=4 --level=raid10 --chunk=1024 --layout=f2 -v /dev/sd[abcd]1
mdadm: Cannot open /dev/sda1: Device or resource busy
mdadm: create aborted
と、こんな具合に失敗します。
で、なにをしてもだいたいこんな具合に失敗します。。
原因は不明ですが、
# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md_d0 : inactive sda1[0](S)
1953514432 blocks
unused devices: <none>
おそらく、このあたり。
# mdadm -E /dev/sda1
/dev/sda1:
Magic : a92b4efc
Version : 00.90.00
UUID : 22a9ece6:ae35f69a:86b54b3f:1d0c4af0 (local to host fs)
Creation Time : Sat Apr 17 20:26:56 2010
Raid Level : raid10
Used Dev Size : 1953514432 (1863.02 GiB 2000.40 GB)
Array Size : 3907028864 (3726.03 GiB 4000.80 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Update Time : Sun Apr 18 06:22:24 2010
State : active
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Checksum : 128dccc8 - correct
Events : 14
Layout : near=2, far=1
Chunk Size : 64K
Number Major Minor RaidDevice State
this 0 8 1 0 active sync /dev/sda1
0 0 8 1 0 active sync /dev/sda1
1 1 8 17 1 active sync /dev/sdb1
2 2 8 33 2 active sync /dev/sdc1
3 3 8 49 3 active sync /dev/sdd1
スーパーブロックの残骸や/proc/mdstatの残骸などの影響で、
createに失敗するようです。
正す方法はただ一つ。
mdadm の削除と再インストール
これが確実です。
# apt-get --reinstall install mdadm
では/proc/mdstat が残っているため、ダメです。
ですので、
# apt-get --purge remove mdadm
ここで、再起動してから、確認してみます。
# cat /proc/mdstat
Personalities :
unused devices: <none>
mdadmをインストールします。
# apt-get install mdadm
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
mdadm
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0B/239kB of archives.
After this operation, 676kB of additional disk space will be used.
Preconfiguring packages ...
Selecting previously deselected package mdadm.
(Reading database ... 68219 files and directories currently installed.)
Unpacking mdadm (from .../mdadm_2.6.7.1-1ubuntu13_amd64.deb) ...
Processing triggers for man-db ...
Setting up mdadm (2.6.7.1-1ubuntu13) ...
Generating array device nodes... /var/lib/dpkg/info/mdadm.postinst: 170: /dev/MAKEDEV: not found
failed.
Generating mdadm.conf... done.
Removing any system startup links for /etc/init.d/mdadm-raid ...
update-initramfs: deferring update (trigger activated)
update-rc.d: warning: mdadm start runlevel arguments (2 3 4 5) do not match LSB Default-Start values (S)
update-rc.d: warning: mdadm stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (0 6)
* Starting MD monitoring service mdadm --monitor
...done.
Processing triggers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-2.6.31-20-server
これでOKです
いちおうスーパーブロックを消去します。
# mdadm --create /dev/md0 --raid-devices=4 --level=raid10 --chunk=1024 --layout=f2 -v /dev/sd[abcd]1
mdadm: /dev/sda1 appears to contain an ext2fs file system
size=58593280K mtime=Sun Apr 18 05:55:53 2010
mdadm: /dev/sda1 appears to be part of a raid array:
level=raid10 devices=4 ctime=Sat Apr 17 20:26:56 2010
mdadm: size set to 1953513472K
Continue creating array? yes
mdadm: array /dev/md0 started.
createが待ちきれないので、すぐに止めます。
# mdadm --misc --stop /dev/md0
mdadm: stopped /dev/md0
残骸がないことを確認します。
# cat /proc/mdstat
Personalities : [raid10]
unused devices: <none>
スーパーブロックをきれいにします。
# mdadm --misc --zero-superblock /dev/sd[abcd]1
完了です〜
このあと、createしてあげてください〜
RAID10 のchunk sizeを変えてみる [LinuxでSoftware RAID]
前回は layoutオプションを変えましたが、今回はchunk sizeを変えてベンチマークしてみます。
chunk size = 64,128,256,512,1024 の5パターンです。
また、mke2fs の -E オプションを指定しない場合と、数値を指定した場合も比較してみます。
コマンド的には
# mdadm --create /dev/md0 --raid-devices=4 --level=raid10 --chunk=64 --layout=f2 -v /dev/sd[abcd]1
# mdadm --create /dev/md0 --raid-devices=4 --level=raid10 --chunk=128 --layout=f2 -v /dev/sd[abcd]1
# mdadm --create /dev/md0 --raid-devices=4 --level=raid10 --chunk=256 --layout=f2 -v /dev/sd[abcd]1
# mdadm --create /dev/md0 --raid-devices=4 --level=raid10 --chunk=512 --layout=f2 -v /dev/sd[abcd]1
# mdadm --create /dev/md0 --raid-devices=4 --level=raid10 --chunk=1024 --layout=f2 -v /dev/sd[abcd]1
に対して、標準のフォーマットとしては、
# mke2fs -t ext4 -m 0 /dev/md0
各、チャンクサイズに対しては、
# mke2fs -t ext4 -m 0 -b 4096 -E stride=16,stripe-width=32 /dev/md0
# mke2fs -t ext4 -m 0 -b 4096 -E stride=32,stripe-width=64 /dev/md0
# mke2fs -t ext4 -m 0 -b 4096 -E stride=64,stripe-width=128 /dev/md0
# mke2fs -t ext4 -m 0 -b 4096 -E stride=128,stripe-width=256 /dev/md0
# mke2fs -t ext4 -m 0 -b 4096 -E stride=256,stripe-width=512 /dev/md0
ここで、
stride = chunk / block
stripe-width = stride x (n/2) (RAID10でn台のHDDをRAID10に利用する場合)
となります。
以前のブログでは man mke2fs を読み間違えていて、この設定を間違えてベンチマークしていました。特に赤線あたりを間違えてとっていたので、表から一部抜け落ちてしまいました。。
てきとーにやってちゃダメですね
結果は、
と、Writeはほとんど変わることなく、Readの性能がchunk size に比例しそうな感じです。
RAID10 のlayoutオプションを変えてみる [LinuxでSoftware RAID]
RAID10の構築オプション layout を変えてみて、どの程度パフォーマンスが変化するか見てみます。
ただし、4TBで構築すると、createだけでも1回5時間以上掛かるので、30GBほどパーティションを切り出して、試しました。
(その影響がfarとかであるかも。)
near=2
far=2
offset=2
この3パターンで試します。
コマンド的には、この3パターンです。
# mdadm --create /dev/md0 --raid-devices=4 --level=raid10 --chunk=64 --layout=n2 -v /dev/sd[abcd]1
# mdadm --create /dev/md0 --raid-devices=4 --level=raid10 --chunk=64 --layout=f2 -v /dev/sd[abcd]1
# mdadm --create /dev/md0 --raid-devices=4 --level=raid10 --chunk=64 --layout=o2 -v /dev/sd[abcd]1
で、bonnie++の結果。
mke2fs option
一般的に書き込みは (速)near > offset > far(遅)と言われているようなのですが、
ちょっと微妙な結果です
次回、far=2として、chunk size などを変えて、ベンチマークしてみます。
(追記)strideとstripe-width の計算を間違えています。。
タグ:RAID構築
RAID10 を再構築してみる [LinuxでSoftware RAID]
勘違いから始まったわけですが。。。ファイルサーバのRAID10を再構築してみます。
勘違いといいますのも、、
dmesg を眺めていると
[ 7.130124] raid10: raid set md0 active with 4 out of 4 devices
[ 7.130151] md0: detected capacity change from 0 to 4000797556736
[ 7.131405] md0:
[ 7.133764] md: raid6 personality registered for level 6
[ 7.133767] md: raid5 personality registered for level 5
[ 7.133769] md: raid4 personality registered for level 4
[ 7.134502] unknown partition table
unknown とか言われているのをみつけて、さっそく
# fdisk /dev/sda
WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.
The number of cylinders for this disk is set to 243201.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sda1 1 243202 1953514583+ ee GPT
# parted /dev/sda
GNU Parted 1.8.8.1.159-1e0e
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: ATA Hitachi HDS72202 (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 2000GB 2000GB
実はこのままでもよかったのですが、、ファイルサーバのバックアップを
とっておいて、System typeを変更します。
# fdisk /dev/sda
WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.
The number of cylinders for this disk is set to 243201.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): print
Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sda1 1 243202 1953514583+ ee GPT
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx
5 Extended 42 SFS 86 NTFS volume set da Non-FS data
6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt
9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access
a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT
1e Hidden W95 FAT1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): print
Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sda1 1 243202 1953514583+ fd Linux raid autodetect
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
な、なにかワーニングが。。
/dev/sdb,sdc,sdd も同様に。
そして、再起動すると、確かにdmesgの
[ 7.134502] unknown partition table
は消えましたが。。partedすると。。。
# parted /dev/sda
GNU Parted 1.8.8.1.159-1e0e
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Warning: /dev/sda contains GPT signatures, indicating that it has a GPT table. However, it does not have a valid
fake msdos partition table, as it should. Perhaps it was corrupted -- possibly by a program that doesn't understand
GPT partition tables. Or perhaps you deleted the GPT table, and are now using an msdos partition table. Is this a
GPT partition table?
Yes/No?
こっちでもワーニングがでることに。
結果、MBRにしか対応していない、fdiskでsystem typeを変更したので、GPT table がおかしくなってしまったようです。
そして、GPTはmdから正しく認識されない。
まぁ、いっか。ちゃんと動いていたし、もう一度partedでGPT tableを作り直します。
上のつづき
(parted) mklabel
Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to
continue?
Yes/No? yes
New disk label type? [gpt]? gpt
(parted) print
Model: ATA Hitachi HDS72202 (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
(parted) mkpart
Partition name? []? [Enter]
File system type? [ext2]? [Enter]
Start? 0
End? 2000GB
(parted) print
Model: ATA Hitachi HDS72202 (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 2000GB 2000GB
(parted) set 1 raid on
(parted) print
Model: ATA Hitachi HDS72202 (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 2000GB 2000GB raid
(parted) quit
Information: You may need to update /etc/fstab.
これをsdb,sdc,sdd でも繰り返します。
これで再起動するとはやり現れます。
[ 7.145004] md0: unknown partition table
そして、マウントします。
# bonnie++ -u root -b -d /st1/nao/tmp
Version 1.03c ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
fs 4G 70546 93 206169 34 71823 19 56805 89 225009 27 182.7 0
ここまで乗りかかったので、ついでに、RAIDの構築オプションを変えて
構築し直してみます。
構築し直すためには、
アンマウント
RAID停止
スーパーブロックの消去
RAID作成
のステップを踏みます。
# umount /st1
# mdadm --misc --stop /dev/md0
# mdadm --misc --zero-superblock /dev/sd[abcd]1
# mdadm --create /dev/md0 -v --raid-devices=4 --level=raid10 --chunk=128 /dev/sd[abcd]1
デフォルトでは、chunk size = 64kbですが、128kb にしてみました。
resync完了後、フォーマットします。
chunk size = 128kb にしたので、stride = 128, stripe-width = 512 に指定します。
# mke2fs -t ext4 -m 0 -E stride=128,stripe-width=512 /dev/md0
mke2fs 1.41.9 (22-Aug-2009)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
244195328 inodes, 976757184 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
29809 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
自動的にblock size = 4096 でフォーマットされました。
これでマウントして、
# bonnie++ -u root -b -d /st1/nao
Version 1.03c ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
fs 4G 68201 97 206894 36 71065 18 57637 85 147445 19 169.3 0
と、Readが明らかに低下しました。
そこで、stride = 128, stripe-width = 512 を指定しないでフォーマットし直してみます。
# mke2fs -t ext4 -m 0 /dev/md0
mke2fs 1.41.9 (22-Aug-2009)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
244195328 inodes, 976757184 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
29809 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
そして、再度。。
# bonnie++ -u root -b -d /st1/nao
Version 1.03c ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
fs 4G 73175 97 204599 37 71022 19 60744 88 163908 22 168.0 0
・・と若干Read向上。
やっぱりデフォルト値が最適ですか。。
最近よくハマるパターンです。
あれこれやるより「デフォルト値最適説」
ということで、chunk size = 64 で再度、RAID構築しなおします。
ほんとうは、
layout option も試したかったんだけどな。。
ベンチマーク時のマシンスペック
CPU:Intel E3200
HDD:HGST HDS722020ALA330
Linux software RAIDを使って、RAIDを構築。
ES34069-BK-180 でソフトウェアRAIDを構築しました [LinuxでSoftware RAID]
そういえば、購入前に気にしていた、電源容量の問題は、
大丈夫でした。
ぎりぎりといいますか、ちょっと不足していましたが、
なんとか起動し、RAIDも構築できました
RAID10の構築は普通に mdadm を使います。
/dev/sda,adb,adc,addを使って構築します。
まず、各ディスク目一杯に1つパーティションを切ります。
。。。というところで、このブログを書いていた、iMacが落ちたので、
メモっていた詳細は割愛。
あー、しょっく
たぶん原因は、
I-O DATA Mac用 USB接続 地上デジタル対応TVキャプチャBOX「m2TV」 GV-MACTV
- 出版社/メーカー: アイ・オー・データ
- メディア: エレクトロニクス
これのせい。
よく落ちるので道連れにされたのでしょう。。
全くひどい代物です。
IO DATAの製品でまともなのに当たらないのは偶然?
2TBをぎりぎり超えてるかどうか不明なので、パーティションはpartedで切りました。
2TB以下ならfdiskで切れます。
RAIDを構築してからフォーマットするので、個別のパーティションをフォーマット
する必要はありません。
# mdadm --create /dev/md0 -v --raid-devices=4 --level=raid10 /dev/sd[abcd]1
この呪文で、4つのパーティションでRAID10が構築され、syncが始まります。
寝ている間に終わったのでわかりませんが、5時間くらい掛かった模様です。
man mdadm.conf を見てもよくわからなかったのですが、
# mdadm --examine --scan
ARRAY /dev/md0 level=raid10 num-devices=4 UUID=fa0cdaa4:35dc9145:883fc9c1:0b6673d2
の結果をmdadm.confに書いておけ、とあちこちで言われているので、とりあえず
書いておきます。
あとで詳しく調べます。
構築が終わったら、
# mkfs.ext4 -m 1 /dev/md0
して、フォーマットします。
すべて完了したところで、
# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90
Creation Time : Wed Mar 31 06:07:14 2010
Raid Level : raid10
Array Size : 3907028864 (3726.03 GiB 4000.80 GB)
Used Dev Size : 1953514432 (1863.02 GiB 2000.40 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Thu Apr 1 00:15:00 2010
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2, far=1
Chunk Size : 64K
UUID : fa0cdaa4:35dc9145:883fc9c1:0b6673d2 (local to host ss)
Events : 0.18
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
2 8 33 2 active sync /dev/sdc1
3 8 49 3 active sync /dev/sdd1
OKそうです(^^)
軽くベンチマークをとりましたが、CG-HDC4EU3500でRAID10を
構築したときとほとんど同じパフォーマンスでした。
ちなみに、4基のディスクは
左上 Disk1 右上 Disk3
左下 Disk2 右下 Disk4
となっています(ディスクの上にある小さい●の数で表しているようです)
これに対して、
左上 sdd 右上 sdc
左下 sdb 右下 sda
と割り当てられています。
ま、これはSATAコネクタの接続を変えればなんとでもなりますが。
デフォルトではこんなところです。
とりあえず、なんとか動くところまできたので、バックアップしておいた
ファイルたちを戻すことにします
USBメモリでRAIDに挑戦2 ☆ もちろんLinuxで。 [LinuxでSoftware RAID]
前回は、インストール済みUbuntuをRAID1構成に変更しようとしたのですが、
あえなく、失敗してしまいました(>_<)
理由はよくわかりませんが、起動の初期段階でソフトウェアRAIDが起動し、
/dev/md1が構成されてなければならないはずなのですが、どうやら、うまく
いっていないのが原因のようです。
そこで、発想を切り替えて、といえば聞こえはいいですが、
早い話(^^;)あきらめて、インストール段階でRAIDの設定ができる
ディストリビューションでインストールし直すことにしました ♪
たしか、Fedora11は起動時にRAID構成を選べたはずです。
はい、こんな感じで設定できます↓
このあと、詳細オプションから、ブートローダのインストール先を
指定します。
そして、インストール、再起動。。。。。
。。。
。。。
。。。
あららら、Ubuntuのときと同じように、起動できません。とほほ。
Fedora11もしばらく、レスキューモードから起動して、あれや
これやと試行錯誤しますが、やはりダメです〜
えーっと、他に、インストール時にRAIDを構成できそうな、
ディストリビューションは。。と
おやおや、OpenFilerもRAID構成がインストール時に選べそうです。
OpenfilerはNASに特化したディストリビューション?です。
Openfiler
FreeNASでもよかったのですが、eSATAボードがRC版でしか
対応していないのと、Openfilerの方がファイル転送のスピードが
速いようですので、Openfilerを選びました☆
さて、さて、さっそく。。。
ISOダウンロード
CDつくって
インストールして
再起動して
はい、はい、いつも通り、きどうできません(^^;)
Ubuntu9.04,Fedora11はブートローディングで失敗するのですが、
Openfilerはもう少し先まで起動して、はやり/dev/md1がないよん♪
といって、そこで停止です。
またまた粘ってみましたが、やはーり、無理!
さて、さて、あとは一応CentOSとUbuntuのServer版のISOを
ダウンロードしてあります。(^_^)
準備だけは万全!
では、Ubuntu Server版からいってみましょー
Server版って完全にCUIなんですよね。なつかしいインストーラーです。
Desktop環境が一切ないので、インストール容量が少なくてすみます。
実質、700MBほどでしょうか。
ですので、1GBのUSBメモリでもOKですね。
さてさて、インストールは順調に完了し、もう完全に緊張感のかけらも
なくなってきた、再起動です(^^;)
さてさて。。。。
。。。
。。。
。。。
わっ!
うごいてる!
そっこーで起動です!!
かなりあっさーり、インストール&起動でした。
起動時には↓こんな感じで、2つのUSBメモリが同時に明滅します♪
ダウンロードは🎥こちら
白い方のUSBメモリの明滅がコントラストの関係でよく見えませんが。。
というわけで、USBでRAIDを構成するベストチョイスは
Ubuntu 9.04 Server版
です!!!
もちろん、Desktop環境は一切インストールされていませんので、
完全にサーバー用ですが。。。
ちゃんと、sambaもうごいています(^^)v
あーこれで、かなりすっきりです☆
しかし、まだまだ、やることが、、、
・肝心のファイル転送ベンチマーク
とか
・USBメモリ故障時の対応
とか
もりもりです(^^;)
USBメモリでRAIDに挑戦 ☆ もちろんLinuxで。 [LinuxでSoftware RAID]
さてさて。ふつーにUbuntuをUSBメモリにインストールできた
わけなのですが、
こんなかんじですから、フロントのUSBポートが一つあいています ♪
で、あればもう一つUSBメモリをさしたくたくなっちゃいます。
それで、電源をONすると、こんな感じです↓
すてきじゃないですか〜☆
同じ容量の4GBのUSBメモリです。当然??RAIDをくみたくなります♪
Ubuntuには標準でソフトウェアRAIDのコントロールツールmdadmが
入っていないので、apt-getします。
まずは
mountコマンドと、/devに追加されたファイルから、状況把握。
/dev/sdb → 新たに追加したUSBメモリ
/dev/sdc → UbuntuをインストールしたUSBメモリ
こんな感じで、構成します。
1.
RAID1を構成するために、まずはsdc→sdbへパーティション構成も
全く同じにして、全ファイルをコピーします。
2.
/dev/sdbだけで、/dev/mdを構成します。
3.
/dev/md1から起動します。
4.
/dev/md1に/dev/sdcを追加します。
以下、ほぼ記憶に頼って書いているので、おおいにはしょっています。
ご了承を(^^;)
まずは、/dev/sdcの構成の確認と、システムタイプの変更です。
root@fs:/home/nao# fdisk /dev/sdc
コマンド (m でヘルプ): p
ディスク /dev/sdc: 4016 MB, 4016046080 バイト
ヘッド 255, セクタ 63, シリンダ 488
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
Disk identifier: 0x90909090
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdc1 * 1 451 3622626 83 Linux
/dev/sdc2 452 488 297202+ 82 Linux スワップ / Solaris
コマンド (m でヘルプ): t
領域番号 (1-4): 1
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました
コマンド (m でヘルプ): w
領域テーブルは交換されました!
次に、/dev/sdbも同じ構成にします。
root@fs:/home/nao# fdisk /dev/sdb
このディスクのシリンダ数は 3486 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
(例. DOS FDISK, OS/2 FDISK)
コマンド (m でヘルプ): p
ディスク /dev/sdb: 4016 MB, 4016046080 バイト
ヘッド 90, セクタ 25, シリンダ 3486
Units = シリンダ数 of 2250 * 512 = 1152000 バイト
Disk identifier: 0x00000000
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 4 3487 3917824 b W95 FAT32
ヘッド、セクタ、シリンダ、Disk identifierが異なりますので、
上級者コマンドで変更します。
コマンド (m でヘルプ): x
上級者コマンド (m でヘルプ): m
コマンドの動作
b 領域内のデータの先頭に移動する
c シリンダ数を変更する
d 領域テーブル内の生データを表示する
e 拡張領域をリスト表示する
f 領域の順序を適正化する
g IRIX (SGI) 領域テーブルを作成する
h ヘッド数を変更する
i change the disk identifier
m このメニューを表示する
p 領域テーブルを表示する
q 変更を保存せずに終了する
r メインメニューに戻る
s セクタ数/トラックを変更する
v 領域テーブルを照合する
w テーブルをディスクに書き込み、終了する
上級者コマンド (m でヘルプ): h
ヘッド数 (1-256, 初期値 90): 255
上級者コマンド (m でヘルプ): s
セクタ数 (1-63, 初期値 25): 63
警告: DOS 互換のためのセクタオフセットを設定します
上級者コマンド (m でヘルプ): c
シリンダ数 (1-1048576, 初期値 3486): 488
上級者コマンド (m でヘルプ): i
New disk identifier (current 0x00000000): 0x90909090
Disk identifier: 0x90909090
上級者コマンド (m でヘルプ): r
コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 1
領域 1 は定義済です。まずは削除を行なってください。
コマンド (m でヘルプ): d
選択した領域 1
コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
領域番号 (1-4): 1
最初 シリンダ (1-488, 初期値 1): 1
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-488, 初期値 488): 451
コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 2
最初 シリンダ (452-488, 初期値 452):
初期値 452 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (452-488, 初期値 488):
初期値 488 を使います
コマンド (m でヘルプ): p
ディスク /dev/sdb: 4016 MB, 4016046080 バイト
ヘッド 255, セクタ 63, シリンダ 488
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
Disk identifier: 0x90909090
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 1 451 3622626 83 Linux
/dev/sdb2 452 488 297202+ 83 Linux
コマンド (m でヘルプ): t
領域番号 (1-4): 2
16進数コード (L コマンドでコードリスト表示): 82
領域のシステムタイプを 2 から 82 (Linux スワップ / Solaris) に変更しました
コマンド (m でヘルプ): p
ディスク /dev/sdb: 4016 MB, 4016046080 バイト
ヘッド 255, セクタ 63, シリンダ 488
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
Disk identifier: 0x90909090
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 1 451 3622626 83 Linux
/dev/sdb2 452 488 297202+ 82 Linux スワップ / Solaris
コマンド (m でヘルプ): t
領域番号 (1-4): 1
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました
コマンド (m でヘルプ): p
ディスク /dev/sdb: 4016 MB, 4016046080 バイト
ヘッド 255, セクタ 63, シリンダ 488
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
Disk identifier: 0x90909090
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 1 451 3622626 fd Linux raid 自動検出
/dev/sdb2 452 488 297202+ 82 Linux スワップ / Solaris
コマンド (m でヘルプ): w
領域テーブルは交換されました!
ioctl() を呼び出して領域テーブルを再読込みします。
root@fs:/home/nao# mdadm --create --auto=md --level=1 --raid-devices=2 /dev/md1 /dev/sdb1 missing
root@fs:/home/nao# mkfs -t ext3 /dev/md1
root@fs:/home/nao# mkdir /mnt/root
root@fs:/home/nao# mount /dev/md1 /mnt/root
root@fs:/home/nao# rsync -aH --one-file-system / /mnt/root
root@fs:/home/nao# vi /boot/grub/menu.lst
"root=/dev/sdc1" → "root=/dev/md0"に変更。
UUIDを/dev/sdb1のUUIDに修正。
UUIDの調べ方は、
root@fs:/home/nao#/ lib/udev/vol_id -u /dev/sdb1
root@fs:/home/nao# update-grub
root@fs:/home/nao# viu /etc/fstab
"/dev/sdc1" → "/dev/md0"に変更。
最後に、ブートローダーをインストールします。
root@fs:/home/nao# grub
grub> device (hd0) /dev/sdb
grub> setup --stage2=/boot/grub/stage2 (hd0) (hd0,0)
grub> quit
そして、再起動です。。。
起動しません(;;)
/dev/md1がないと、おこられてしまします。
UbuntuのCDのレスキューモードでの起動にはmdadmが入っていないので、
Fedora11のDVDのレスキューモードで起動して、
/boot/grub/menu.lst
/etc/mdadm/mdadm.conf
など、あらゆるパラメータをいじりましたが、起動しないので。
方向性を変えます。
最初から、RAID1でインストールすることにします。
つづく。