Я хочу використовувати два накопичувачі 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 виправила свою прошивку поточними дисками.