Co to znaczy „wyrównywać” partycje?

Odpowiedzi:

15

Wyrównanie partycji oznacza wyrównanie jej w celu dopasowania do prawdziwej, podstawowej struktury bloku.

Od dłuższego czasu dyski twarde używają 512-bajtowych bloków. Ponieważ trwało to od dłuższego czasu, zmiana rozmiaru bloku jest teraz prawie niemożliwa. Trzeba będzie naprawić zbyt dużo oprogramowania.

Na dysku SSD rzeczywisty rozmiar bloku może wynosić 128 KB. W macierzy RAID może to być 64 KB. Na dysku w formacie zaawansowanym będzie to 4 KB.

W celu zapewnienia zgodności z poprzednimi wersjami napęd kontynuuje pracę z blokami 512-bajtowymi. Ale ze względu na wydajność Twój system naprawdę powinien znać prawdziwy rozmiar bloku.

Jednym z najłatwiejszych usprawnień w zakresie wydajności jest wyrównanie partycji dysku z rzeczywistym rozmiarem bloku, tak aby system operacyjny zapisywał 4 KB lub 64 KB lub 128 KB i zapisuje pełny blok.

Jeśli partycja nie zostanie wyrównana, wynikiem byłoby zapisanie 512 bajtów w pierwszym bloku i 4K - 512 bajtów w drugim bloku, zmuszając dysk / SSD / RAID do wykonania dwóch cykli odczytu-modyfikacji-zapisu zamiast jednego zapisu.

Zan Lynx
źródło
Czy masz jakieś sugestie na unix.stackexchange.com/questions/248939/…
ART
@AnkurTank: Nie, pytanie wydaje się dobrze ujęte.
Zan Lynx,
Dziękujemy za uwagę. Pozostało tylko potwierdzenie, że partycje są wyrównane. Ponieważ dla mnie parted wciąż narzeka, że ​​partycje nie są wyrównane. Ponadto próbowałem użyć innego narzędzia, np. Gdisk, ale nie jestem w stanie przekreślić kompilacji gdisk. Pomyślałem więc, że jeśli masz jakieś sugestie, jak to sprawdzić, pomoże.
ART
3

Partycje są sekwencjami bloków , a zgodnie z wieloletnią konwencją jeden blok ma 512 bajtów.

Partycja może więc zaczynać się od dowolnej wielokrotności 512 bajtów na dysku, „widzianych” jako bardzo długi ciąg bajtów.

Podstawowy sprzęt dyskowy, który pierwotnie miał ten sam rozmiar sektora 512 bajtów, teraz używa większego rozmiaru dla wydajności. Powiedzmy, że to 4096 bajtów.

Ze względu na kompatybilność oprogramowanie wewnętrzne między systemem operacyjnym a sprzętem nadal „mówi w sektorach”. Pytasz więc pierwszy sektor, a sprzęt pobiera pierwszy blok (4096 bajtów), a oprogramowanie układowe wyodrębnia i dostarcza odpowiedni wycinek. Zadajesz drugi blok, a blok prawdopodobnie został pobrany z pamięci podręcznej.

Jak dotąd niedopasowanie wielkości sektora nie ma wad.

Ale system operacyjny stosuje również bloki (zwykle nazywane klastrami ) w celu zwiększenia wydajności i dopasowuje je do partycji. Tak więc klaster 4-sektorowy będzie się składał z sektorów 5, 6, 7 i 8.

Gdy system operacyjny żąda klastra systemu plików nr 2, oprogramowanie układowe jest pytane o logiczne sektory 5, 6, 7 i 8. Jeśli wszystkie znajdują się w tym samym bloku dysku , dysk musi wykonać JEDEN odczyt.

Ale jeśli partycja rozpocznie się w „niewłaściwym” sektorze, pierwszy klaster w systemie plików skończy, na przykład, upraszczając, w sektorach 2, 3, 4 i 5. I wtedy mogą znajdować się w połowie w pierwszym bloku dysku (1) -2-3-4), połowa sekundy (5-6-7-8).

Potrzebujesz teraz jednego dodatkowego odczytu . W przypadku stosunku OS do dysku 1: 1 jest to to samo, co podwojenie odczytów. Jeśli stosunek OS do dysku wynosi 2: 1, klaster to dwa sprzętowe bloki dysku, będziesz potrzebować 2 + 1 = 3 odczytów, kara 50%:

OS   |--- cluster  12 ---|--- cluster  13 ---|--- cluster  14...
     |                   |                   |
HDD  --|----|----|----|-a--|--b-|-c--|-d--|-e--|----|---        BAD
     |                   |                   |
HDD  |----|----|----|----|-a--|--b-|-c--|-d--|----|----|---     GOOD

Powyżej klaster składa się z 4 bloków sprzętowych (stosunek 4: 1) po 2 sektory każdy. Wyrównanie do „parzystych” sektorów oznacza, że ​​aby odczytać klaster, te 8 odczytów sektorowych przekłada się na 4 odczyty blokowe. Wyrównanie w sektorach nieparzystych oznacza, że ​​te same 8 odczytów sektorowych wymaga 4 + 1 = 5 odczytów blokowych, co stanowi spadek wydajności o 25% (dodajesz jeden odczyt co cztery).

Jeśli masz źle ustawiony dysk o stosunku 4: 1, wyrównanie go przyspieszy o 20% (zapisujesz jeden odczyt co 5).

Aby „wyrównać” partycję, możesz przesunąć / ustawić jej przesunięcie od początku dysku do odpowiedniej wielokrotności sektorów 512b lub (zależnie od narzędzia) możesz wstawić małą partycję na początku dysku, o takim rozmiarze, że następna partycja rozpoczyna się dokładnie na granicy sektora dysku. W tym drugim przypadku, chociaż teoretycznie potrzebujesz co najwyżej sektorów N-1, tj. Bardzo niewielu kilobajtów, w praktyce prawdopodobnie będziesz musiał zmarnować kilkaset kilobajtów, być może całe megabajty, aby wycisnąć jak najwięcej wyników z twojego dysk twardy o pojemności kilku gigabajtów.

(Prawdopodobnie możesz odzyskać to miejsce i wiele więcej, odpowiednio wybierając rozmiar klastra systemu operacyjnego ).

LSerni
źródło
1
Odczyty nie są takie złe, tak, musisz przeczytać trochę dodatkowych danych, ale czytanie trzech sąsiadujących bloków nie kosztuje znacznie więcej czasu niż czytanie dwóch. Prawdziwym problemem jest pisanie, aby napisać sekcję mniejszą niż podstawowy rozmiar bloku, należy odczytać dane, poczekać, aż dysk zakręci pełną rewolucję, a następnie przepisać.
płukanie
1
Nie ma też potrzeby tworzenia dodatkowych partycji, nie ma reguły, że całe miejsce na dysku musi zostać podzielone na partycje.
płukanie
2

Napędy prawie zawsze są podzielone na logiczne sektory o wielkości 512 bajtów, możliwe są inne rozmiary, ale są rzadko używane ze względu na problemy ze zgodnością. W przypadku starszych dysków twardych były to oddzielne sektory, które można było zapisywać indywidualnie.

Do połowy 2000 r. Partycje były tradycyjnie dostosowane do granic „cylindra”. Z przyczyn historycznych „cylinder” zwykle wynosił 63 sektory. Sektor 0 zawiera sektor rozruchowy i tabelę podziału. Późniejsze sektory w cylindrze 0 czasami zawierały dodatkowe informacje dla programu ładującego. Pierwsza partycja zwykle zaczynała się na początku cylindra 1.

Większość systemów plików grupuje sektory w większe bloki (czasem nazywane „klastrami”). Zazwyczaj mają one rozmiar 4KiB.

W pewnym momencie dostawcy dysków zdecydowali się na relację, byłoby bardziej wydajne, gdyby korzystali również z fizycznych sektorów 4K, ale ze względu na kompatybilność utrzymywali rozmiar sektora logicznego na 512 bajtów. Jeśli host odczytuje lub zapisuje cały sektor fizyczny naraz, wszystko działa szybko. Jeśli część z odczytów jest nadal bardzo szybka, ponieważ dysk może po prostu usunąć niechciane dane. Jeśli jednak host zapisuje tylko część sektora fizycznego, dysk musi odczytać sektor fizyczny, połączyć odczytane dane z danymi z hosta, a następnie przepisać zmodyfikowany sektor. Oznacza to, że należy poczekać, aż napęd obróci się w pozycję dwa razy, a nie jeden raz.

Działa to dobrze, jeśli klastry 4K systemu plików są wyrównane do fizycznych sektorów 4K napędu. Niestety tradycyjny sposób partycjonowania dysków oznacza, że ​​pierwsza partycja jest zasadniczo źle dopasowana, a późniejsze partycje miały tylko 1 na 8 szans na wyrównanie. W związku z tym dostawcy napędów w zaawansowanym formacie musieli wybierać narzędzia, które pomogą ludziom ponownie dopasować swoje partycje.

Podobne uwagi mogą mieć zastosowanie do macierzy RAID i dysków SSD. Podczas gdy pasek rajdu jest prawdopodobnie znacznie większy niż pojedynczy klaster systemu plików, niektóre systemy plików mogą mieć regiony lub podobne, które są wyrównane na podstawie mocy dwóch granic.

Obecna normalna praktyka polega na dopasowywaniu paracji do granic 1MiB, co jest wystarczająco dużą siłą dwóch, aby być wielokrotnością wszystkich popularnych rozmiarów bloków.

płyn do płukania
źródło
0

Nie wiem, czy to jest pomocne, ale rozumiem, że wyrównanie partycji ma miejsce, gdy wyrównujesz daną partycję z leżącymi pod nią jednostkami RAID.

Najwyraźniej wydajność może spadać, gdy używasz sprzętowej macierzy RAID lub oprogramowania; problemy mogą pojawić się, jeśli początkowa lokalizacja partycji nie jest wyrównana do granicy jednostki pasków w partycji dyskowej utworzonej w macierzy RAID.

W zależności od faktoryzacji tworzenia klastrów woluminów klaster woluminów może zostać utworzony ponad granicą jednostki pasków zamiast obok granicy jednostki pasków. Takie zachowanie może spowodować nieprawidłową partycję.

Być może jestem daleko, a to nie może mieć nic wspólnego z RAID;)

LuxuryMode
źródło