RAIDのチャンクのレイアウト

某誌の原稿で採用されなかった説明だけれど、個人的にはやってみて面白かったので。

4KのチャンクでRAIDしておいて、そこに4095バイトのデータをファイルに書き込むと終端子と合わせてちょうど4Kになるから、それをRAIDデバイスに書き込んでからhexdumpしたら、そのまま見えるんじゃないかと考えた。ただし、ファイルシステムはext2にして他のプロセスが書き込まないこととか、noatime付けておくとか、そういったことはちゃんと考慮すること。

4キロバイトのチャンクサイズとレイアウトにleft-symmetricを指定して、RAID 5を作成

# mdadm --create --auto=yes /dev/md2 --level=5 --layout=ls --chunk=4 --raid-devices=3 /dev/sdc1 /dev/sdd1 /dev/sde1

4キロバイトの”1″だけを含むファイルを作成するコマンド例

# for i in `seq 1 4095`; do buf=$buf"1" ; done ;echo $buf > file_1
# cat file_1
[/dev/sdc1]

04100000  03 03 03 03 03 03 03 03  03 03 03 03 03 03 03 03  |................|
*
04100ff0  03 03 03 03 03 03 03 03  03 03 03 03 03 03 03 00  |................|
04101000  33 33 33 33 33 33 33 33  33 33 33 33 33 33 33 33  |3333333333333333|
*
04101ff0  33 33 33 33 33 33 33 33  33 33 33 33 33 33 33 0a  |333333333333333.|
04102000  36 36 36 36 36 36 36 36  36 36 36 36 36 36 36 36  |6666666666666666|
*
04102ff0  36 36 36 36 36 36 36 36  36 36 36 36 36 36 36 0a  |666666666666666.|
04103000  0f 0f 0f 0f 0f 0f 0f 0f  0f 0f 0f 0f 0f 0f 0f 0f  |................|
*
04103ff0  0f 0f 0f 0f 0f 0f 0f 0f  0f 0f 0f 0f 0f 0f 0f 00  |................|


[/dev/sdd1]
04100000  31 31 31 31 31 31 31 31  31 31 31 31 31 31 31 31  |1111111111111111|
*
04100ff0  31 31 31 31 31 31 31 31  31 31 31 31 31 31 31 0a  |111111111111111.|
04101000  34 34 34 34 34 34 34 34  34 34 34 34 34 34 34 34  |4444444444444444|
*
04101ff0  34 34 34 34 34 34 34 34  34 34 34 34 34 34 34 0a  |444444444444444.|
04102000  03 03 03 03 03 03 03 03  03 03 03 03 03 03 03 03  |................|
*
04102ff0  03 03 03 03 03 03 03 03  03 03 03 03 03 03 03 00  |................|
04103000  37 37 37 37 37 37 37 37  37 37 37 37 37 37 37 37  |7777777777777777|
*
04103ff0  37 37 37 37 37 37 37 37  37 37 37 37 37 37 37 0a  |777777777777777.|


[/dev/sde1]
04100000  32 32 32 32 32 32 32 32  32 32 32 32 32 32 32 32  |2222222222222222|
*
04100ff0  32 32 32 32 32 32 32 32  32 32 32 32 32 32 32 0a  |222222222222222.|
04101000  07 07 07 07 07 07 07 07  07 07 07 07 07 07 07 07  |................|
*
04101ff0  07 07 07 07 07 07 07 07  07 07 07 07 07 07 07 00  |................|
04102000  35 35 35 35 35 35 35 35  35 35 35 35 35 35 35 35  |5555555555555555|
*
04102ff0  35 35 35 35 35 35 35 35  35 35 35 35 35 35 35 0a  |555555555555555.|
04103000  38 38 38 38 38 38 38 38  38 38 38 38 38 38 38 38  |8888888888888888|
*
04103ff0  38 38 38 38 38 38 38 38  38 38 38 38 38 38 38 0a  |888888888888888.|