mdadm raid1 dan apa chunksize (atau blocksize) pada drive 4k?

13

Saya ingin menggunakan dua drive 3 TB dalam pengaturan mdadm raid1 (menggunakan Debian Sequeeze).

Drive menggunakan sektor perangkat keras 4k, bukan yang tradisional 512 byte.

Saya agak bingung karena di satu sisi kernel melaporkan:

$ cat /sys/block/sdb/queue/hw_sector_size
512

Tetapi di sisi lain fdiskmelaporkan:

# fdisk -l /dev/sdb
Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Jadi, tampaknya kernel memiliki beberapa gagasan bahwa drive menggunakan sektor 4k.

The mdadmHalaman manusia adalah sedikit samar tentang ukuran chunk dan RAID1:

   -c, --chunk=
          Specify chunk size of kibibytes.  The default when  creating  an
          array  is 512KB.  To ensure compatibility with earlier versions,
          the default when Building and array with no persistent  metadata
          is  64KB.   This  is  only  meaningful  for RAID0, RAID4, RAID5,
          RAID6, and RAID10.

Mengapa itu tidak berarti untuk raid1?

Melihat /proc/mdstat, perangkat raid1 md8 memiliki 2930265424 blok, yaitu

3000591794176/2930265424/2 = 512

Apakah mdadmkemudian menggunakan bloksize 512 byte? (/ 2 karena itu cermin dua arah)

Dan apakah chunk-size konsep yang berbeda dari blocksize?

Mencoba mdadm menjelaskan perangkat:

# mdadm -E /dev/sdb -v -v
Avail Dev Size : 5860531120 (2794.52 GiB 3000.59 GB)
Array Size : 5860530848 (2794.52 GiB 3000.59 GB)

Dimana

3000591794176/5860530848 = 512

Dengan default mkfs.xfspada perangkat md, ia melaporkan:

sectsz=512
bsize=4096

Saya mengoreksi ini dengan panggilan mkfs.xfs -s size=4096 /dev/md8

Sunting: Menguji sedikit sekitar saya perhatikan hal-hal berikut:

Tampaknya sinkronisasi ulang awal dilakukan dengan ukuran blok 128k (dan bukan 512 byte):

md: resync of RAID array md8
md: minimum _guaranteed_  speed: 1000 KB/sec/disk.
md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for resync.
md: using 128k window, over a total of 2930265424 blocks.

Kecepatan yang ditampilkan melalui /proc/mdstatkonsisten untuk ukuran blok itu (untuk 512 bit, orang akan mengharapkan kinerja yang baik):

[>....................]  resync =  3.0% (90510912/2930265424) finish=381.1min speed=124166K/sec

(Misalnya ketika menonaktifkan cache tulis, kecepatan yang ditampilkan segera turun menjadi 18 m / detik)

Di bawah /syssebenarnya ada beberapa file yang lebih relevan selain hw_sector_size:

# cat /sys/block/sdb/queue/physical_block_size
4096
# cat  /sys/block/sdb/queue/logical_block_size
512

Itu berarti bahwa drive tidak berbohong kepada kernel tentang ukuran sektor 4k dan kernel memiliki dukungan sektor 4k (seperti yang fstab -ldisarankan oleh output ).

Googling sedikit sekitar menghasilkan beberapa laporan tentang disk WD, yang tidak melaporkan ukuran 4k - untungnya disk WD 3 TB ini tidak melakukan itu - mungkin WD memperbaiki firmware mereka dengan disk saat ini.

maxschlepzig
sumber

Jawaban:

16

Ukuran chunk tidak berlaku untuk raid1 karena tidak ada striping; intinya seluruh disk adalah satu potongan. Singkatnya, Anda tidak perlu khawatir tentang ukuran sektor fisik 4k. Versi terbaru mdadm menggunakan informasi dari kernel untuk memastikan bahwa awal data selaras dengan batas 4kb. Pastikan Anda menggunakan format metadata 1.x.

psusi
sumber