obszar na dysku za MBR i przed punktem początkowym partycji

10

Jeśli fdiskużyję schematu partycjonowania MBR i utworzę partycję podstawową lub rozszerzoną za pomocą (wersja 2.20.1), wówczas rozpocznie się on w sektorze 2048. Jeśli dobrze pamiętam, starsze wersje fdiskuruchomiły pierwszą partycję w sektorze 63. Jeśli MBR potrzebuje tylko 512 bajtów, więc dlaczego pierwsza partycja nie rozpoczyna się w sektorze 2? Co jest przechowywane w tych 2047 sektorach? Jakiś etap programu ładującego?

Jaskółka oknówka
źródło
Do twojej wiadomości wprowadzono wyrównanie 1 MiB (sektor 2048) do Linuksa fdiskw util-linux-ng-2.17.1/fdisk/fdisk.c, funkcja update_sector_offset(void), wydany 22 lutego 2010. System Windows Vista został wydany w latach 2006-11.
pkt
Powiązane pytania i odpowiedzi: superuser.com/q/352572/19956 , superuser.com/q/565577/19956 .
pts

Odpowiedzi:

16

Stara luka 32 kB między MBR a pierwszym sektorem systemu plików nosi nazwę regionu zgodności DOS lub luki MBR, ponieważ DOS wymagał, aby partycje rozpoczynały się na granicach cylindra (a każdy cylinder miał 64 sektory, tj. 64 sektory * 512 bajtów / sektor = 32 kB przestrzeni) .

wprowadź opis zdjęcia tutaj

Starsza wersja GRUB (GRUB1) mogła go użyć do zainstalowania 1,5-etapowego programu ładującego GRUB1: http://www.gnu.org/software/grub/manual/grub.html#BIOS-installation .

Dodatkowe linki:

  1. http://www.pixelbeat.org/docs/disk/
  2. /superuser/107235/how-do-boot-sectors-and-multiple-drives-works/108152#108152
  3. http://www.dedoimedo.com/computers/grub.html
Boris Burkov
źródło
1
Ok, dzięki za wyjaśnienie tego! Wygląda na to, że GRUB2 używa tego samego obszaru między MBR a przed partycją dla swojego kodu rozruchowego. Zgodnie z tym, grub-install -vże mam zainstalowany GRUB2 i jeśli wykonam, dd if=/dev/sda obs=1 ibs=1 skip=512 count=2047 2>/dev/null | strings -n4to w tym obszarze są „ładowanie”, „Geom”, „Odczyt”, „Błąd” i powinny one należeć do GRUB2.
Martin
@Martin Hm, ciekawe spostrzeżenie. Mam tam tylko „^ @”, grub2. Wygląda na to, że mój etap 2 znajduje się w systemie plików. :)
Boris Burkov
1
@ Martin: Jeśli wcześniej miałeś zainstalowany GRUB 0.99, może nadal znajdować się w tym obszarze, nawet jeśli twój bieżący program ładujący to GRUB 2.x i nie używa go.
Ben Voigt,
6

Jest to optymalizacja wydajności i wcale nie jest związana z Linuksem, tylko ze sprzętem. Nowoczesne dyski (tak zwane dyski „4K”) wykorzystują sektory fizyczne o wielkości 4096 bajtów zamiast 512. Nadal możesz adresować pojedyncze sektory 512-bajtowe, ale może to poważnie wpłynąć na wydajność, jeśli partycje (a raczej: systemy plików) nie są wyrównane do 4K .

Początkowy sektor 64 byłby wystarczający dla tego wymagania. Wzrost do 2048 wydaje się zapobiegawczy (np. Pozwala na umieszczenie tam partycji rozruchowej UEFI, jeśli dysk zostanie później przekonwertowany na GPT).

Hauke ​​Laging
źródło
Poprzez optymalizację wydajności masz na myśli to, że jeśli system plików zaczyna się w środku sektora 4K, wówczas wszystkie dane w tym systemie plików również są niewspółosiowe, a to oznacza, że ​​jeśli zmieni się nawet bajt w pliku w systemie plików, to dwa fizyczne sektory 4K muszą zostać odczytane i zmodyfikowane? Jeśli system plików jest wyrównany, to tylko jeden sektor 4K musi zostać zmodyfikowany, o ile wszystkie bajty znajdują się w tym samym sektorze fizycznym 4K?
Martin
2
@Martin Problem polega na tym, że jądro zawsze zapisuje na dysku bloki 4K (rozmiar strony) (ponieważ strony są buforowane). W przeciwieństwie do jednego sektora strona 4K może być częścią dwóch sektorów. W takim przypadku należy zapisać nie 4K, ale 8K. Co gorsza: być może najpierw musi zostać odczytany jeden lub oba bloki 4K na dysku.
Hauke ​​Laging