Czy domyślny 512-bajtowy rozmiar sektora fizycznego jest odpowiedni dla dysków SSD w systemie Linux?


11

GSmartControl oraz wszelkie inne narzędzia linii poleceń (jak fdisk, smartctl, cat /sys/block/sd*/queue/hw_sector_size, cat /sys/block/sd*/queue/physical_block_size) używałem raport taka sama dla obu moich dysków:

Sector Size: 512 bytes logical/physical

Jest to domyślna instalacja systemu Ubuntu 18.10 (później zaktualizowanego do wersji 19.04). Jednak stat -fpolecenie na obu dyskach zgłasza:

Block size: 4096       Fundamental block size: 4096

Oba moje dyski to dyski SSD, a dyski SSD AFAIK wymagają rozmiaru sektora 4K . Czy to w porządku, czy coś mi brakuje? Czy informacje zwracane przez stat(= 4K) zapewniają, że system operacyjny zawsze będzie wysyłał operacje IO na dysk w wielokrotności 4K i te bloki nigdy nie przekroczą granic 4K (bloki IO będą zawsze wyrównywane do 4K)?

Zwróć uwagę na następujące dane wyjściowe ( sdb2to moja partycja główna , sdato mój /homedysk):

# fdisk -l /dev/sd?
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: SanDisk SDSSDH35
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdb: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Disk model: ADATA SU800NS38 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: xxxx....

Device       Start       End   Sectors  Size Type
/dev/sdb1     2048   1050623   1048576  512M EFI System
/dev/sdb2  1050624 500117503 499066880  238G Linux filesystem

# df / /home
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sdb2      244568380  17799136 214276188   8% /
/dev/sda       479670976 129685112 325550152  29% /home

Tak. Zawiera przydatne informacje. Ale nie znalazłem wiarygodnej odpowiedzi na pytanie: czy informacje zwrócone przez stat (4K) zapewniają, że system operacyjny zawsze będzie wysyłał operacje IO na dysk w wielu 4K, a te bloki nigdy nie przekroczą granic 4K (bloki IO zawsze być wyrównany do 4K)?
FedonKadifeli

Nie wiem, co to jest „stat (4K)”. Ale większość współczesnych systemów operacyjnych wie, jak radzić sobie z natywnymi transferami we / wy 4K. I nie, nie oznacza to, że bloki nigdy nie przekroczą granic 4K na dysku, chyba że partycje są odpowiednio wyrównane. Służy fdisk -ldo sprawdzania problemów z wyrównaniem. Najwyraźniej SSD działa nieco inaczej, ze względu na ich budowę fizyczną, ale nie jestem ekspertem w tej dziedzinie.
heynnema

Odpowiedzi:


7

W dawnych czasach 512-bajtowe sektory były normą dla dysków. System używany do odczytu / zapisu sektorów tylko jeden sektor na raz, i to było najlepsze, co mogły zrobić stare dyski twarde.

Teraz, gdy nowoczesne dyski są tak gęste, szybkie i inteligentne, sektory odczytu / zapisu tylko jeden sektor na raz naprawdę spowalnia całkowitą przepustowość.

Sztuczka polegała na ... jak przyspieszyć całkowitą przepustowość, ale nadal zachować zgodność ze starymi / standardowymi podsystemami dyskowymi? Utworzono rozmiar bloku 4096, który składa się z ośmiu 512-bajtowych sektorów fizycznych. 4096 jest teraz minimalnym transferem odczytu / zapisu do / z dysku, ale jest przekazywany w kompatybilnych 512-bajtowych uchwytach do systemu operacyjnego.

Oznacza to, że nawet jeśli system potrzebuje tylko 512-bajtowego sektora informacji, dysk odczytuje osiem 512-bajtowych sektorów, aby je uzyskać. Jeśli jednak system potrzebuje następnych siedmiu sektorów, już je odczytuje, więc nie ma potrzeby pojawienia się dyskowych operacji we / wy ... a zatem wzrost całkowitej przepustowości.

Nowoczesne systemy operacyjne mogą w pełni korzystać z natywnych rozmiarów bloków 4K nowoczesnych napędów.


+1, ale 4096/512 = 8, więc myślę, że powinno być 8 (logicznych) sektorów 512 b w jednym sektorze fizycznym 4096 b. Używam parteddo wyświetlania zarówno logicznego, jak i fizycznego rozmiaru sektora.
sudodus

@sudodus Good catch. Edycja wykonana.
heynnema

Dlatego ważne jest, aby wyrównać partycje do granicy 4k, w przeciwnym razie każde ładowanie / przechowywanie bloku 4k faktycznie dotyka dwóch sektorów sprzętowych. (Systemy plików wewnątrz partycji często używają bloków 4k wyrównanych do początku partycji). Niektóre narzędzia formatujące wyrównują pierwszą partycję o 1 MB, pozostawiając cały MiB nieużywany, z wyjątkiem tabeli partycji. Nowoczesne dyski mają zgłosić swoje fizyczny rozmiar sektora jako 4k, należy oddzielić od ich logicznego rozmiaru sektora, który jest wciąż 512B.
Peter Cordes

@PeterCordes, nie tylko sektor rozruchowy i tablica partycji (w pierwszych 512 bajtach) są przechowywane w pierwszym Mibibyte. W tabeli partycji MSDOS grubwstawia dodatkowy kod do pierwszego Mibibyte w celu uruchomienia w trybie BIOS. (W GPT grubpotrzebuje małej partycji z bios_grubflagą, aby ten kod mógł się uruchomić w trybie BIOS).
sudodus

4

Według Wikipedii „Advanced Format (AF) to dowolny format sektora dyskowego używany do przechowywania danych na dyskach, który przekracza 512, 520 lub 528 bajtów na sektor, taki jak 4096-bajtowe sektory napędu Advanced Format Drive (AFD)”. Advanced Format (AF) to format dysku, który natywnie wykorzystuje sektor o wielkości 4096 bajtów zamiast 512 bajtów. Aby zachować zgodność ze starszymi systemami, dyski AF emulują rozmiar sektora 512 bajtów.

Mam takie same wyniki jak masz uruchamiając stat -fi smartctlna dwóch dyskach SSD. Oba dyski SSD zostały automatycznie rozpoznane przez system operacyjny po ich zainstalowaniu i wymagały zerowej konfiguracji, więc wydaje się, że otrzymane dane są domyślnymi ustawieniami rozmiaru bloku i rozmiaru sektora.


@heynnema Nie mogę nic zrobić z „sektorami 4096-bajtowymi”, ponieważ są one kopiowane z Wikipedii, więc muszę zostawić to samo, co w Wikipedii.
karel

2
@heynnema: Rozmiar fizyczny jest znacznie większy. Dyski SSD są zbudowane z pamięci flash NAND, która jest fizycznie podzielona na tak zwane „bloki kasowania”. Mogą być znacznie większe, 4 MB jest zdecydowanie możliwe.
MSalters

1

Czy domyślny 512-bajtowy rozmiar sektora fizycznego jest odpowiedni dla dysków SSD w systemie Linux?

Oba moje dyski to dyski SSD, a dyski SSD AFAIK wymagają rozmiaru sektora 4K. Czy to w porządku, czy coś mi brakuje?

Stary sprzęt i systemy operacyjne używały 512-bajtowych sektorów, od 2011 r. (Prawie) cały sprzęt do przechowywania ma 4096 (lub więcej ) sektorów bajtów; ale niektóre urządzenia obsługują emulację 512-bajtowych sektorów dla starszych systemów. Istnieją wyjątki, dysk SSD Samsung 840 EVO ma bloki o rozmiarze 2048 KB .

Error Correcting Code (ECC) oblicza się dla każdego kawałka 512 bajtów, i jak można sobie wyobrazić, dane ECC wymaga również miejsca. Nie trzeba dodawać, że jeden sektor 4096 bajtów wymaga mniej informacji ECC niż osiem porcji 512 bajtów, jeśli algorytmy ECC pozostają niezmienione. Ostatecznie całkowita pojemność dysku twardego wzrasta w wyniku mniejszego obciążenia danych ECC.

Korzystanie z sektorów 4K ma sens z architektonicznego punktu widzenia, ponieważ inne kluczowe dane (takie jak strony pamięci x86 i wiele klastrów systemu plików) również stosują rozmiar 4 KB. Zaawansowany format pozwala na zastosowanie bardziej niezawodnych algorytmów ECC, co jest ważne w świetle stale rosnących możliwości. Kontrolery stosują dodatkowe techniki poza korekcją błędów poprzez zrozumienie charakterystyki błędów pamięci flash NAND i zachowania obciążenia.

Advanced Format (AF) to dowolny format sektora dysku używany do przechowywania danych na dyskach magnetycznych w dyskach twardych (HDD), który przekracza 512, 520 lub 528 bajtów na sektor, takich jak 4096, 4112, 4160 i 4224 bajtów ( 4 KB) sektory napędu Advanced Format Drive (AFD). Większe sektory umożliwiają integrację silniejszych algorytmów korekcji błędów w celu utrzymania integralności danych przy wyższych gęstościach pamięci.

W przypadku dysków SCSI (SAS) rozmiar bloku RAID jest większy niż rozmiar bloku JBOD ze względu na znormalizowane pola integralności danych SCSI T10 wraz z logicznym sprawdzaniem złych bloków przechowywanych w każdym bloku z danymi. Adaptery SAS RAID obsługują bloki dyskowe oparte na 512 bajtach danych lub 4K bajtach danych. Rozmiar bloku RAID dla 512 dysków wynosi 528 bajtów na sektor, a rozmiar bloku RAID dla dysków 4K wynosi 4224 bajtów na sektor.

Ponieważ piszesz do pamięci, a rozmiar fizycznego sektora nie obracającego się dysku ma mniejszy wpływ niż zapewnienie, że partycje są wyrównane z rozmiarem bloku wymazywania . Mimo to najlepiej mieć aktualne oprogramowanie i sprzęt oraz używać rozmiaru sektora 4K.

Większy rozmiar sektora jest zalecany przez firmę Intel - „ Zyskaj optymalną wydajność dzięki zmianom rozmiaru fizycznego sektora SSD ”.

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.