4kセクターのディスクのアラインメントに関してServerfaultには多くの質問がありますが、1つだけはまだはっきりしていません。
RAID1 + LVMの調整に成功しました。私がしたことの1つは、mdadmスーパーブロックバージョン1.0(ディスクの最後にスーパーブロックを保存する)を使用することでした。
マンページはこれを言っています:
異なるサブバージョンは、デバイスの異なる場所にスーパーブロックを保存します。つまり、末尾(1.0の場合)、先頭(1.1の場合)、または先頭から4K(1.2の場合)のいずれかです。 「1」は「1.0」と同等です。 「デフォルト」は「1.2」と同等です。
デフォルトの1.2バージョンは4kセクタードライブ用に作成されたものですか?最初から4k +スーパーブロックの長さは4kの多数ではないため(私が正しく覚えていれば、スーパーブロックの長さは約200バイトです)、私がそれを見る方法ではありません。
これについての洞察は大歓迎です。
編集:
mdadmスーパーブロック1.1と1.2は4kアラインメント用であると、以下に回答しました。私はデバイス全体のレイドを作成しました:
mdadm --create /dev/md4 -l 1 -n 2 /dev/sdb /dev/sdd
次に、それに論理ボリュームを追加しました。
vgcreate universe2 /dev/md4
アレイは16 MB /秒で同期しています。
md4 : active raid1 sdd[1] sdb[0]
1465137424 blocks super 1.2 [2/2] [UU]
[>....................] resync = 0.8% (13100352/1465137424) finish=1471.6min speed=16443K/sec
だから私はそれが適切に調整されているとは思いません。
(ディスクは1.5 TB WD EARSです。デスクトップPCにあり、約80 MB /秒で同期しています。)
Edit2:
これが--examine出力です:
# mdadm --examine /dev/sdb
/dev/sdb:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 79843828:7d939cce:1c8f0b32:cf339870
Name : brick:4 (local to Host brick)
Creation Time : Sat Jul 9 10:47:33 2011
Raid Level : raid1
Raid Devices : 2
Avail Dev Size : 2930275120 (1397.26 GiB 1500.30 GB)
Array Size : 2930274848 (1397.26 GiB 1500.30 GB)
Used Dev Size : 2930274848 (1397.26 GiB 1500.30 GB)
Data Offset : 2048 sectors
Super Offset : 8 sectors
State : active
Device UUID : dd2e3b5f:33214b96:1cb88169:25deb050
Update Time : Sat Jul 9 10:49:06 2011
Checksum : 4f7cd785 - correct
Events : 1
Device Role : Active device 0
Array State : AA ('A' == active, '.' == missing)
データオフセットは2048セクターで、8で割り切れるので、問題ないと思います。ボリュームグループの物理エクステントサイズは4 MiBで、これも8で割り切れます。ただし、再同期はデバイスに含まれているものとは関係がないため、問題はありません。
別の編集:配置の問題ではないようです。 hdparm -tは、いずれかのディスクの読み取り速度が非常に遅い(30 MB /秒)ためです。他の何かがおかしい。
Edit2:答えを見つけたとき、私はこの投稿を更新することを覚えていません。すべてがうまく調整されています。ディスクの1つが壊れています。どうやらそれは最後の足にあり、それがどこかの時点で壊れました。交換用ディスクは問題なく動作しました。
はい、4kセクターアライメント用に作成されています。
1.1および1.2のスーパーブロックでは、スーパーブロックが踏みにじられないように、各ディスクの開始時にスペースが予約されます。スーパーブロック作成コードは、この予約されたスペースを強制的に4kBの倍数にします。すべての物理読み取りはオフセットされますこの予約されたスペースの終わりから、スーパーブロックの終わりからではありません。したがって、これにより、4kBに均等に分割されるセクターサイズの配置が保持されます。
興味があれば、ここに mdadmソースコード (super1.c
):
/* force 4K alignment */
reserved &= ~7ULL;
sb->data_offset = __cpu_to_le64(reserved);
この data_offset
パラメータは カーネルのRAID1コード によって使用され、物理的な読み取りをオフセットします。読み取りパス:
read_bio->bi_sector = r1_bio->sector + mirror->rdev->data_offset