mdadmおよび4kセクター(高度なフォーマット)


10

Serverfaultには4kセクターのディスクの調整について多くの質問がありますが、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 EARです。デスクトップ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は、1つのディスクの読み取り速度が非常に遅い(30 MB /秒)ためです。他の何かがおかしいです。

Edit2:答えを見つけたときに、この投稿を更新したことを覚えていません。すべてがうまく調整されています。ディスクの1つが壊れました。どうやらそれは最後の足にあり、それがどこかの時点で壊れました。交換用ディスクは問題なく動作しました。

回答:


13

はい、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

1.1と1.2の両方が4kアライメントに適している場合、1.2バージョンは何に適していますか?つまり、スーパーブロックを最初から4kにしたいのはなぜですか?
Halfgaar、

2
これにより、ディスクの先頭をブートブロック用に予約して、ディスクをブートディスクとして使用できるようになります。
Tom Shaw、

投稿を更新しました。見た目では、私の新しい配列は適切に配置されていません。
Halfgaar 2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.