Chcę użyć dwóch dysków 3 TB w konfiguracji mdadm raid1 (używając Debian Sequeeze).
Dyski wykorzystują sektory sprzętowe 4k zamiast tradycyjnych 512-bajtowych.
Jestem trochę zdezorientowany, ponieważ z jednej strony jądro zgłasza:
$ cat /sys/block/sdb/queue/hw_sector_size
512
Ale z drugiej strony fdiskraporty:
# 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
Wygląda więc na to, że jądro ma pewne pojęcie, że dysk używa sektorów 4k.
mdadmStrona man jest nieco tajemniczy o wielkość porcji i 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.
Dlaczego nie ma to znaczenia dla raid1?
Patrząc na /proc/mdstaturządzenie raid1 md8 ma 2930265424 bloków, tj
3000591794176/2930265424/2 = 512
Czy mdadmużywa wtedy 512-bajtowego rozmiaru bloku? (/ 2, ponieważ jest to lustro dwukierunkowe)
I czy wielkość fragmentu jest inną koncepcją niż wielkość bloku?
Próba mdadm wyjaśnienia urządzenia:
# 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)
Gdzie
3000591794176/5860530848 = 512
Domyślnie mkfs.xfsna urządzeniu md zgłasza:
sectsz=512
bsize=4096
Poprawiłem to za pomocą wezwania mkfs.xfs -s size=4096 /dev/md8
Edycja: Trochę testując zauważyłem następujące rzeczy:
Wygląda na to, że początkowa resynchronizacja jest wykonywana przy rozmiarze bloku 128k (a nie 512 bajtów):
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.
Wyświetlana prędkość przez /proc/mdstatjest spójna dla tego rozmiaru bloku (dla 512 bajtów można oczekiwać wydajności):
[>....................] resync = 3.0% (90510912/2930265424) finish=381.1min speed=124166K/sec
(Na przykład po wyłączeniu pamięci podręcznej zapisu wyświetlana prędkość natychmiast spada do 18 m / s)
Poniżej /sysznajdują się niektóre bardziej odpowiednie pliki oprócz hw_sector_size:
# cat /sys/block/sdb/queue/physical_block_size
4096
# cat /sys/block/sdb/queue/logical_block_size
512
Oznacza to, że dysk nie kłamie jądra o wielkości sektora 4k, a jądro obsługuje jakieś wsparcie sektora 4k (jak fstab -lsugeruje wynik).
Trochę googlowanie zaowocowało kilkoma raportami o dyskach WD, które nie zgłaszają rozmiaru 4k - na szczęście ten dysk WD o pojemności 3 TB tego nie robi - być może WD naprawił swoje oprogramowanie układowe z bieżącymi dyskami.