mdadm raid1 i jaki fragment (lub rozmiar bloku) na dyskach 4k?


13

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.

Odpowiedzi:


16

Rozmiar porcji nie dotyczy raid1, ponieważ nie ma pasowania; zasadniczo cały dysk to jedna porcja. Krótko mówiąc, nie musisz martwić się o rozmiar sektora fizycznego 4k. Najnowsze wersje mdadm używają informacji z jądra, aby upewnić się, że początek danych jest wyrównany do granicy 4kb. Upewnij się tylko, że używasz formatu metadanych 1.x.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.