sektor mdadm dan 4k (format lanjutan)

10

Ada banyak pertanyaan di Serverfault tentang menyelaraskan disk sektor 4k, tapi satu hal belum benar-benar jelas bagi saya.

Saya berhasil menyelaraskan RAID1 + LVM saya. Salah satu hal yang saya lakukan adalah menggunakan mdadm superblock versi 1.0 (yang menyimpan superblock di akhir disk).

Halaman manual mengatakan ini:

Sub-versi yang berbeda menyimpan superblok di lokasi yang berbeda di perangkat, baik di akhir (untuk 1.0), di awal (untuk 1.1) atau 4K dari awal (untuk 1.2). "1" setara dengan "1.0". "default" sama dengan "1.2".

Apakah versi 1.2, yang merupakan default, dibuat untuk drive sektor 4k? Cara saya melihatnya, bukan, karena 4k dari awal + panjang superblok bukan banyak 4k (superblok sekitar 200 byte, jika saya ingat dengan benar).

Setiap wawasan tentang hal ini disambut baik.

edit:

di bawah ini dijawab bahwa mdadm superblock 1.1 dan 1.2 dimaksudkan untuk penyelarasan 4k. Saya baru saja membuat serangan seluruh perangkat dengan:

mdadm --create /dev/md4 -l 1 -n 2 /dev/sdb /dev/sdd

Lalu saya menambahkan volume logis untuk itu:

vgcreate universe2 /dev/md4

Array disinkronkan pada 16 MB / s:

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

Jadi saya ragu itu benar selaras.

(disk WD EARS 1,5 TB. Saya memilikinya di PC desktop saya dan disinkronkan sekitar 80 MB / s.)

Sunting2:

Inilah - periksa keluaran:

# 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)

Data offset adalah 2048 sektor, yang dapat dibagi dengan 8, jadi orang akan berpikir itu ok. Grup volume memiliki ukuran luas fisik 4 MiB, yang juga dapat dibagi dengan 8. Tapi itu bahkan tidak masalah, karena sinkronisasi ulang tidak terkait dengan isi perangkat.

Suntingan lain: sepertinya bukan masalah pelurusan; karena hdparm -t menunjukkan kecepatan baca yang sangat rendah untuk salah satu disk (30 MB / s). Sesuatu yang lain salah.

Sunting2: Saya tidak pernah ingat untuk memperbarui posting ini ketika saya menemukan jawabannya. Semua disejajarkan dengan baik. Salah satu disk rusak. Rupanya itu pada kaki terakhirnya dan bahkan itu pecah di beberapa titik. Disk pengganti bekerja dengan baik.

Halfgaar
sumber

Jawaban:

13

Ya, ini dibuat untuk penyelarasan sektor 4k.

Dengan superblok kunci 1.1 dan 1.2, ruang dicadangkan di awal setiap disk sehingga superblok tidak terinjak. Kode penciptaan superblock memaksa ruang yang disediakan ini menjadi kelipatan 4kB. Semua pembacaan fisik diimbangi dari akhir ruang yang disediakan ini , bukan dari ujung superblok. Oleh karena itu hal ini menjaga perataan untuk ukuran sektor apa pun yang membagi secara merata menjadi 4 kB.

Jika Anda tertarik, berikut ini bukti dari kode sumber mdadm ( super1.c):

/* force 4K alignment */
reserved &= ~7ULL;
sb->data_offset = __cpu_to_le64(reserved);

Dan data_offsetparameter ini digunakan oleh kode RAID1 di kernel untuk mengimbangi pembacaan fisik, misalnya di jalur baca:

read_bio->bi_sector = r1_bio->sector + mirror->rdev->data_offset
Tom Shaw
sumber
Jika 1.1 dan 1.2 cocok untuk penyelarasan 4k, apa gunanya versi 1.2? Maksud saya, mengapa saya ingin memiliki superblok mulai 4k dari awal?
Halfgaar
2
Begitulah awal disk dapat dicadangkan untuk blok boot, memungkinkan disk untuk digunakan sebagai disk boot.
Tom Shaw
Saya baru saja memperbarui posting saya. Dari tampilannya, array baru saya tidak selaras dengan benar.
Halfgaar