Partitsioonid

From EIK wiki

Sissejuhatus

Partitsioon on kõvaketta või muu andmekandja loogiline jagu, mis on eelnevalt kindlaks määratud partitsioonitabelis. Ilma partitsioonita on andmekandja operatsioonisüsteemi kasutamatu - sinna ei saa luua failisüsteemi ja ilma failisüsteemita andmeid. Kõik andmed kirjutatakse partitsioonile loodud failisüsteemile, mitte partitsioonile. Failisüsteemi tüüp kirjutatakse partitsioonitabelisse. Ajaloolistel põhjustel on partitsioone mitut liiki: primaarsed, laiendatud ja loogilised. Primaarseid partitsioone saab olla andmekandjal neli, laiendatud partitsioone üks. Laiendatud partitsioon võib aga sisaldada endas kuni 24 loogilist partitsiooni.

Master Boot Record

Master Boot Record (MBR) on alglaadimissektor mille ajalooliste piirangute pärast on andmekandjal maksimaalselt neli primaarset partitsiooni [1] [2]. Teda asendab uuem alglaadimissektor tüüp GPT. MBR on 512 baiti suur ning asub andmekandja esimesel sektoril. Tema piiratuse tõttu on MBR alglaadimissektoriga andmekandjate partitsiooni maksimaalne suurus 2 TiB. Klassikaline MBR koosneb:

Aadress Selgitus Suurus
baitides
Hex Dec
+000hex +0 alglaadimiskood 446
+1BEhex +446 Partitsiooni kirje №1 Partitsiooni tabel
(primaarsetel partitsioonidele)
16
+1CEhex +462 Partitsiooni kirje №2 16
+1DEhex +478 Partitsiooni kirje №3 16
+1EEhex +494 Partitsiooni kirje №4 16
+1FEhex +510 55hex Alglaadimis signatuur 2
+1FFhex +511 AAhex
Suurus kokku: 446 + 4×16 + 2 512

Partitsiooni tabeli kirje koosneb:

Element (offset) Suurus Selgitus
0 bait Alglaadimise flag: 0 = ei, 0x80 = alglaetav (aktiivne)
1 bait Alguse pea
2 6 bitti Alguse sektor (Bitid 6-7 on kaks kõrgemat bitti Alguse silindri kirjele)
3 10 bitti Alguse silinder
4 bait Süsteemi ID
5 bait Lõpu pea
6 6 bitti Lõpu sektor (Bitid 6-7 on lõpu silindri kaks ülemist bitti)
7 10 bitti Lõpu silinder
8 uint32 (4 baiti) Esimese sektori LBA number
12 uint32 (4 baiti) Sektorite summa partitsioonis

Tabelist on näha MBR puudused:

  • partitsioonitabelis saab olla ainult neli kirjet
  • partitsioonikirjes maksimaalne partitsiooni suurus on (2^32-1) * 512 = 2 TiB

Partitsioonid

MBR sisu linuxil saab vaadata käsuga [3]

dd if=/dev/sdb bs=512 count=1 | hexdump -C -s 446

Näidiseks on valitud virtuaalmasin, mille ühel kettal asub üks partitisioon ja mis ei ole alglaetav. Saadud hexdump on:

000001be 00 20 21 00 83 35 70 05   00 08 00 00 00 00 40 00  
000001ce 00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00
000001fe 55 aa

Luues fdiskiga juurde veel ühe 2GB partitsiooni on tulemuseks:

000001be 00 20 21 00 83 35 70 05   00 08 00 00 00 00 40 00  
000001ce 00 34 81 52 83 00 0a 36   00 08 40 00 ca 9a 3b 00
000001ce 00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00
000001fe 55 aa

Muutes teise partitsiooni tüüpi linuxist EFI peale on tulemuseks (83 -> ef)

000001ce 00 34 81 52 ef 00 0a 36   00 08 40 00 ca 9a 3b 00

Partitsiooni tabel võib sisaldada ka ühte laiendatud partitsiooni. Linuxile võib MBR partitsioonitabelit kasutades lisada kuni 24 loogilist partitsiooni. Iga loogilise partitsiooni alguses on MBR, mis võib sisaldada ka alglaadimiskoodi. Loogilise partitsiooni partitsioonitabeli esimene kirje on partitsiooni enda kohta, teine kirje aga viide järgmisele loogilisele partitsioonile.

Linuxil käib partitsioonide haldamine vahenditega fdisk ja part. Näide ühe 2GB primaarse partitsiooni loomisest /dev/sdb

fdisk
n
p
1
(default valik enteriga)
+2GB
w

Loodud partitsiooni võib vaadata parted-ga

parted -l /dev/sdb

Kokkuvõte

MBR on püsinud muutumatuna aastast 1983. See on kaasa toonud eelmises peatükis mainitud piirangud. MBR-i alguse ja lõpu adresseerimine pea, sektori ja silindri abil on samuti jäänuk vanematest aegadest. Näiteks SSD andmekandja puhul ei oma need parameetrid mingisugust tähendust. MBR-i järeltulijal GPT-l neid puudusi ei ole.

Kasutatud materjalid

1. https://wiki.archlinux.org/index.php/Master_Boot_Record
2. https://msdn.microsoft.com/en-us/library/windows/desktop/aa363785(v=vs.85).aspx
3. http://www.cyberciti.biz/faq/howto-copy-mbr/

Autor

Arvi Kangas

DK41