1.2メタデータとデフォルトのブロックサイズ(512K)を使用して、Linux 3.16.6-203.fc20.x86_64でソフトウェアRAID-10を設定しました。
$ cat /proc/mdstat
md0 : active raid10 sdc1[4] sdb1[0] sdd1[2] sde1[3]
3907023872 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
bitmap: 4/30 pages [16KB], 65536KB chunk
unused devices: <none>
ファイルシステムは、RAID-10ボリュームグループの上にあるLVMの上にあるext4です。
$ df -k .
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vg_raid10-lv_home 2015734504 810039552 1103278568 43% /home
インストールオプションを含む:
$ mount | grep vg_raid10-lv_home
/dev/mapper/vg_raid10-lv_home on /home type ext4 (rw,relatime,seclabel,stripe=256)
すべてが大丈夫に見えます。 SMARTは、すべてのディスクが再割り当て、保留、またはオフラインのセクタなしで完全に正常であることを意味します。生の同期書き込みスループットはかなり良く見えます。
$ dd if=/dev/zero of=tmp.bin bs=1G count=1 oflag=dsync
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 7.85743 s, 137 MB/s
しかし、小さな100b(編集:答えで指摘したように、100バイトのチャンクではなく512バイトのチャンクを書いています。)をRAIDアレイに追加します。極度に遅い(同期書き込みあたり〜84ms):
$ dd if=/dev/zero of=tmp.bin bs=512 count=1000 oflag=dsync
1000+0 records in
1000+0 records out
512000 bytes (512 kB) copied, 84.2859 s, 6.1 kB/s
私のRAID-10構成では、これは正常ですか?
ベストアンサー1
O_*SYNC
RAID10は、任意の種類のファイル、少なくとも小さなファイルの速度を上げません。一度に512bを書き込み、各書き込み後に強制的にディスクに書き込まれます(ファイルサイズなどの再読み込みに必要なメタデータも含みます)。
これには、少なくとも2つのディスク、可能であれば4つ(つまりすべてのディスク)にRAID 10書き込みが必要です。これらの書き込みはすべてddを返す前に完了する必要があります。これはO_DSYNC
必須保証だからです。