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です![[るんるん]](https://blog.ss-blog.jp/_images_e/146.gif)
![[るんるん]](https://blog.ss-blog.jp/_images_e/146.gif)
いちおうスーパーブロックを消去します。
# 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 を読み間違えていて、この設定を間違えてベンチマークしていました。特に赤線あたりを間違えてとっていたので、表から一部抜け落ちてしまいました。。
てきとーにやってちゃダメですね![[たらーっ(汗)]](https://blog.ss-blog.jp/_images_e/163.gif)
![[たらーっ(汗)]](https://blog.ss-blog.jp/_images_e/163.gif)
結果は、
と、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(遅)と言われているようなのですが、
ちょっと微妙な結果です
![[たらーっ(汗)]](https://blog.ss-blog.jp/_images_e/163.gif)
次回、far=2として、chunk size などを変えて、ベンチマークしてみます。
(追記)strideとstripe-width の計算を間違えています。。![[あせあせ(飛び散る汗)]](https://blog.ss-blog.jp/_images_e/162.gif)
![[あせあせ(飛び散る汗)]](https://blog.ss-blog.jp/_images_e/162.gif)
タグ:RAID構築