mdadm raid1 а какой размер куска (или размера блока) на дисках 4k?

13

Я хочу использовать два диска по 3 ТБ в настройке mdadm raid1 (используя Debian Sequeeze).

Диски используют аппаратные сектора 4 КБ вместо традиционных 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

Таким образом, кажется, что ядро ​​имеет некоторое представление о том, что накопитель использует 4 тыс. Секторов.

Страница mdadmman немного загадочна из-за размера чанка и 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.

Почему это не имеет смысла для raid1?

Если посмотреть /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

Это означает, что накопитель не лжет ядру о размере его сектора 4 КБ, а ядро ​​имеет некоторую поддержку сектора 4 КБ (как fstab -lпоказано в предложении).

Погуглив немного, мы получили несколько отчетов о дисках WD, которые не сообщают о размере 4 КБ - к счастью, этот диск WD объемом 3 ТБ этого не делает - возможно, WD исправил свою прошивку с текущими дисками.

maxschlepzig
источник

Ответы:

16

Размер куска не относится к raid1, потому что нет чередования; по сути, весь диск представляет собой один кусок. Короче говоря, вам не нужно беспокоиться о размере физического сектора 4К. Последние версии mdadm используют информацию из ядра, чтобы убедиться, что начало данных выровнено по границе 4 КБ. Просто убедитесь, что вы используете формат метаданных 1.x.

psusi
источник