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 fdisk
raporty:
# 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.
mdadm
Strona 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/mdstat
urządzenie raid1 md8 ma 2930265424 bloków, tj
3000591794176/2930265424/2 = 512
Czy mdadm
uż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.xfs
na 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/mdstat
jest 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 /sys
znajdują 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 -l
sugeruje 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.