sektory mdadm i 4k (format zaawansowany)


10

Serverfault ma wiele pytań na temat wyrównywania dysków 4k sektorów, ale jedno nie jest dla mnie jeszcze jasne.

Z powodzeniem dopasowałem moją macierz RAID1 + LVM. Jedną z rzeczy, które zrobiłem, było użycie mdadm superblock w wersji 1.0 (która przechowuje superblok na końcu dysku).

Strona podręcznika mówi:

Różne podwersje przechowują superblok w różnych miejscach na urządzeniu, na końcu (dla 1.0), na początku (dla 1.1) lub 4K od początku (dla 1.2). „1” odpowiada „1.0”. „default” jest równoważne z „1.2”.

Czy wersja 1.2, która jest domyślna, jest przeznaczona dla dysków sektorów 4k? Z mojego punktu widzenia tak nie jest, ponieważ 4k od początku + długość superbloku nie jest mnożnikiem 4k (superblok ma około 200 bajtów długości, jeśli dobrze pamiętam).

Wszelkie informacje na ten temat są mile widziane.

edytować:

poniżej odpowiedziano, że mdadm superblock 1.1 i 1.2 są przeznaczone do wyrównania 4k. Właśnie stworzyłem nalot na całe urządzenie z:

mdadm --create /dev/md4 -l 1 -n 2 /dev/sdb /dev/sdd

Następnie dodałem do niego wolumin logiczny:

vgcreate universe2 /dev/md4

Tablica synchronizuje się z prędkością 16 MB / s:

md4 : active raid1 sdd[1] sdb[0]
      1465137424 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  0.8% (13100352/1465137424) finish=1471.6min speed=16443K/sec

Wątpię więc, czy jest odpowiednio wyrównany.

(dyski mają 1,5 TB WD EARS. Mam je na komputerze stacjonarnym i synchronizują z prędkością około 80 MB / s.)

Edycja2:

Oto wynik --examine:

# mdadm --examine /dev/sdb
/dev/sdb:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 79843828:7d939cce:1c8f0b32:cf339870
           Name : brick:4  (local to host brick)
  Creation Time : Sat Jul  9 10:47:33 2011
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 2930275120 (1397.26 GiB 1500.30 GB)
     Array Size : 2930274848 (1397.26 GiB 1500.30 GB)
  Used Dev Size : 2930274848 (1397.26 GiB 1500.30 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : active
    Device UUID : dd2e3b5f:33214b96:1cb88169:25deb050

    Update Time : Sat Jul  9 10:49:06 2011
       Checksum : 4f7cd785 - correct
         Events : 1


   Device Role : Active device 0
   Array State : AA ('A' == active, '.' == missing)

Przesunięcie danych wynosi 2048 sektorów, które można podzielić przez 8, więc można by pomyśleć, że jest w porządku. Grupa woluminów ma fizyczny rozmiar 4 MiB, który również można podzielić przez 8. Ale to nie miałoby nawet znaczenia, ponieważ resynchronizacja nie jest związana z zawartością urządzenia.

Kolejna edycja: nie wydaje się, aby była to kwestia wyrównania; ponieważ hdparm -t pokazuje bardzo niską prędkość odczytu dla jednego z dysków (30 MB / s). Coś jeszcze jest nie tak.

Edycja2: Nigdy nie pamiętam, aby zaktualizować ten post, gdy znalazłem odpowiedź. Wszystko jest ładnie dopasowane. Jeden z dysków został uszkodzony. Najwyraźniej był na ostatniej nodze i nawet to pękło w pewnym momencie. Dysk zastępczy działał dobrze.

Odpowiedzi:


13

Tak, jest przeznaczony do wyrównania sektorów 4k.

W superblokach 1.1 i 1.2 przestrzeń jest zarezerwowana na początku każdego dysku, aby superblok nie został zdeptany. Kod tworzenia superbloku zmusza tę zarezerwowaną przestrzeń do wielokrotności 4kB. Wszystkie fizyczne odczyty są przesunięte względem końca tego zarezerwowanego miejsca , a nie od końca superbloku. Dzięki temu zachowane jest wyrównanie dla dowolnego rozmiaru sektora, który dzieli się równomiernie na 4 kB.

Jeśli jesteś zainteresowany, oto dowód z kodu źródłowego mdadm ( super1.c):

/* force 4K alignment */
reserved &= ~7ULL;
sb->data_offset = __cpu_to_le64(reserved);

Ten data_offsetparametr jest wykorzystywany przez kod RAID1 w jądrze w celu kompensacji fizycznych odczytów, np. W ścieżce odczytu:

read_bio->bi_sector = r1_bio->sector + mirror->rdev->data_offset

Jeśli zarówno 1.1, jak i 1.2 nadają się do wyrównania 4k, do czego służy wersja 1.2? Mam na myśli, dlaczego miałbym chcieć, żeby superblok zaczynał 4k od samego początku?
Halfgaar

2
Jest tak, że początek dysku może być zarezerwowany dla bloków rozruchowych, umożliwiając wykorzystanie dysku jako dysku rozruchowego.
Tom Shaw

Właśnie zaktualizowałem swój post. Wygląda na to, że moja nowa tablica nie jest właściwie wyrównana.
Halfgaar,
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.