mdadm raid1 і який розмір (або розмір блоків) на 4K накопичувачах?


13

Я хочу використовувати два накопичувачі 3 ТБ у налаштуваннях mdadm raid1 (використовуючи Debian Sequeeze).

На накопичувачах використовується 4k апаратні сектори замість традиційних 512 байт.

Я трохи розгублений, бо з одного боку ядро ​​повідомляє:

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

Але з іншого боку fdisk:

# 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

Таким чином, здається, що ядро ​​має деяке уявлення, що накопичувач використовує 4k сектори.

Сторінка " mdadmлюдина" трохи розкрита щодо розміру та нальоту1:

   -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.

Чому це не має сенсу для рейду1?

Дивлячись /proc/mdstat, пристрій raid1 md8 має 2930265424 блоки, тобто

3000591794176/2930265424/2 = 512

Чи mdadmвикористовує тоді блочний розмір 512 байт? (/ 2 тому, що це дзеркало двостороннє)

А розмір шматка - це інша концепція, ніж розмір блоку?

Намагаючись дозволити mdadm пояснити пристрій:

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

Де

3000591794176/5860530848 = 512

За умовчанням mkfs.xfsна пристрої md він повідомляє:

sectsz=512
bsize=4096

Я виправив це закликом mkfs.xfs -s size=4096 /dev/md8

Редагувати: трохи тестуючи навколо, я помітив наступні речі:

Здається, що початкове пересинхронізація виконується з розміром блоку 128 к (а не 512 байт):

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.

Відображена швидкість через /proc/mdstatвідповідає тій величині блоку (для 512 байтів можна очікувати досягнення продуктивності):

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

(Наприклад, при відключенні кешу запису відображається швидкість одразу падає до 18 м / сек)

Крім /sysтого, є ще кілька релевантних файлів, окрім hw_sector_size:

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

Це означає, що диск не лежить до ядра про розмір 4k сектору, а ядро ​​має деяку підтримку сектору 4k (як результат fstab -lзапропонованого).

Трохи навколо Googling з'явилося кілька звітів про WD-диски, які не повідомляють про розмір 4k - на щастя, цей диск з 3 W TB цього не робить - можливо, WD виправила свою прошивку поточними дисками.

Відповіді:


16

Розмір шматка не поширюється на рейд1, оскільки немає смуг; по суті, весь диск - це один шматок. Коротше кажучи, вам не потрібно турбуватися про розмір фізичного сектора 4 к. Останні версії mdadm використовують інформацію з ядра, щоб переконатися, що початок даних вирівнюється до межі 4kb. Просто переконайтеся, що ви використовуєте формат метаданих 1.x.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.