GPT
Mis asi on GPT
GPT (ingl.k. GUID Partition Table) on partitsioonitabel mis on osa Intel'i arendatavast arvuti alglaaduri projektist nimega EFI (ingl.k. Extensible Firmware Interface). GPT on üldiselt uuendus MBR ehk Master boot record'i partitsioonitabelile ja erineb põhiliselt sellepoolest, et võimaldab hoida üle 2 terabaidiseid partitsioone andmekandjal (HDD, SSD, virtuaalmasina andmekandja).
2011 aasta seisuga, enamus tänapäevaseid operatsioonisüsteeme toetavad GPT partitsioonitabeleid.
Ajalugu
Lailalt levinud MBR partitsiooni skeem, mis oli üks viimastest IBM’poolt 1980 aastate alguses arendatud PC standardidest mis leiab kasutust senimaani, omab limiteeringuid mis piiravad kaasaegse riistvara kasutamist. Üks põhipiirang on suurus mida kasutatakse plokkide aadresside ja koguste salvestamiseks kuni 32 bitti. Kettastel sektori suurusega 512 baiti , MBR partitsiooni tabel lubab luua partitsioonid maksimaalse suurusega kuni 2.2TB (232 x 512 baiti). Seetõttu 1990 aastate lõpus Intel arendas uue partitsiooni tabeli standardi, mis lõpuks sai UEFI osaks. Alates 2010 aastast GPT moodustab alamgrupi UEFI spetsifikatisoonis. GPT allokeerib 64 bitti, mis 512-baitise sektori suuresega ketta puhul lubab maksmiaalse partitsiooni suurust kuni 9.4ZB.
Omadused
MBR’i kasutatavas skeemis primaarsete partitsioonide informatsioon on salvestatud MBR’is, samas BIOS põhinevates süsteemides MBR’s ka salvestatakse binaarkood mis käivitub BOOT protsessi – identifitseerimine ja aktiivse partitsiooni käivitamine(bootloader). GPT’s ketta esimene sektor on reserveeritud MBR’i jaoks selleks, et oleks võimalik bootida BIOS põhineva süsteemi GPT kettalt, aga sellisel juhul bootloader ja OS peaksid olema teadlikud, et ketas kasutab GPT`d. Sõltumata sektorite suurusest GPT päismiku algus asub ketta teises loogilises plokis (LBA1). Täpselt nagu uuemad MBR’i versioonid, GPT kasutab Logical Block Addressing ketta adresseerimiseks (vanemas MBR’s kasutatakse adresseerimiseks CHS – cylinder-head-sector tehnoloogia). Kaitsev MBR (ing. Protective MBR) asetatakse plokis LBA0 ja GPT päismik blokis LBA1. GPT päises salvestatud osutaja (ingl. pointer), mis näitab kus algab partitsioonide tabel, on tavaliselt LBA2. Partitsioonide arv standardi poolt ei ole piiratud ja sõltub OS’st (tehniliselt piiratud arvuga 264). Näiteks MS Windows operatsiooni süsteemide partitisoonide tabelis reserveeritakse ruumi 128 kirje jaoks (iga kirje 128 baitise suurusega). GNU/Linux tuum (kernel) toetab 256 partitsiooni. Selliselt Windows’is partitsiooni tabeli jaoks reserveeritakse 16 384 baiti (32 sektorit suurusega 512 baiti), millega esimeseks kasutatavaks sektoriks kettal saab plokk LBA34.
GPT üks tähtsamatest omadustest on dubleerimine. GPT päismik ja partitisoonide tabel on kirjutatud ketta alguses kui ka ketta lõpus.
Teoreetiliselt GPT lubab moodustada partitsioonid suurusega kuni 9,4 ZB ((9,4 × 1021 bait)(sektori suurusega 512 baiti. Kui sektori suurus on suurem kui 512 siis partitsiooni suurus võib olla suurem), kuid MBR saab töötada ainult 2,2 TB (2,2 x 1012 bait).
GPT annab võimalust partitisoonidele juurde määrata GUID (globally unique identifier), nimed ja atribuudid - sõltumata sisestest failisüsteemide UUID’st ja tähemärkidest. Tänu unicode toetusele, partitsioonid saab nimetada erinevates keeltes ja grupeerida kaustadesse.
Kaitsev MBR
Põhieesmärk, miks MBR on asetatud ketta algusesse on puhtalt kaitsev. MBR`i orienteeritud kettahalduse utiliidid võivad GPT kettaid mitte tunnistada ja halvemal juhul GPT ketta üle kirjutada. Selle probleemi vältimiseks MBR’is määratakse kettal ühe suure partitsiooni olemasolu mis on kogu GPT ketta ulatuses. Süsteemi identifikaator (System ID) väärtuseks selle partitisooni jaoks pannakse 0xEE, mis teavitab EFI’t, et GPT on kasutusel. Seetõttu EFI ignoreerib MBR`i. Mõned 32-bitised operatsiooni süsteemid, näiteks Windows XP, mis ei ole loodud GPT ketaste lugemiseks, siiski tunnistavad selle süsteemi ID (system ID) ja näitavad ketast nagu ligipääsmatu GPT ketas. Veelgi vanemad OS’id tavaliselt näitavad ketast ainukese tundmatu tüübi partitsiooniga, kus ei ole vabu ruumi ja reeglina ei lubata selliseid kettaid muuta. Partitsiooni kustutamine on võimalik ainult juhul, kui kasutaja seda algatab kästisi ja kinnitab valiku. Sellisel moel takistatakse juhuslik GPT ketta kustutamine.
Hybrid MBR (LBA 0 + GPT)
Operatsiooni süsteemides mis toetavad GPT alglaadimist mitte läbi EFI vaid BIOS kaudu, esimene sektor samuti kasutatakse bootloader’i hoiustamiseks aga see on kohandatud GPT partitsioonide tunnistamiseks.
Partitsioonide tabeli päis
Partitsioonide tabeli päis näitab loogilised plokid kettal, mis on kasutatavad lõppkasutaja poolt. Samuti see näitab arvu ja suurust partitsioonide kirjede jaoks, millest koosneb partitsiooni tabel. Vaikimisi Microsoft Windows’is reserveeritakse 128 kirjet. Selliselt saab luua 128 partitsiooni ühe ketta peale. Päismik sisaldab ketta GUID`i (Globally Unique Identifier). Päismik sisaldab ka oma suurust ja asukohta (alati plokk LBA1), samuti sekundaarse päismiku suurust ja asukohta (alati ketta viimased sektorid). Oluline on ka see, et päismikus on salvestatud CRC32 kontrollsummasid päismiku ja partitsiooni tabeli jaoks. Need kontrollsummad kontrollitakse EFI protsesside poolt alglaadimise ajal. Kontrollsummade tõttu on vastuvõtmatu ja mõttetu GPT sisu kohandamine HEX-redaktorites. Redakteerimine rikub sisu vastavust kontrollsummale, mille parandamiseks EFI kirjutab üle primaarse GPT sekundaarsega. Kui mõlemad GPT’d sisaldavad valesid kontrollsummasi, siis kettale ligipääs muutub võimatuks.
Offset | Length | Contents |
---|---|---|
0 (0x00) | 8 bytes | Signature ("EFI PART", Template:Mono or Template:MonoTemplate:Efn on little-endian machines) |
8 (0x08) | 4 bytes | Revision (for GPT version 1.0 (through at least UEFI version 2.3.1), the value is Template:Mono) |
12 (0x0C) | 4 bytes | Header size in little endian (in bytes, usually Template:Mono or 92 bytes) |
16 (0x10) | 4 bytes | CRC32 of header (offset +0 up to header size), with this field zeroed during calculation |
20 (0x14) | 4 bytes | Reserved; must be zero |
24 (0x18) | 8 bytes | Current LBA (location of this header copy) |
32 (0x20) | 8 bytes | Backup LBA (location of the other header copy) |
40 (0x28) | 8 bytes | First usable LBA for partitions (primary partition table last LBA + 1) |
48 (0x30) | 8 bytes | Last usable LBA (secondary partition table first LBA - 1) |
56 (0x38) | 16 bytes | Disk GUID (also referred as UUID on UNIXes) |
72 (0x48) | 8 bytes | Starting LBA of array of partition entries (always 2 in primary copy) |
80 (0x50) | 4 bytes | Number of partition entries in array |
84 (0x54) | 4 bytes | Size of a single partition entry (usually Template:Mono or 128) |
88 (0x58) | 4 bytes | CRC32 of partition array |
92 (0x5C) | * | Reserved; must be zeroes for the rest of the block (420 bytes for a sector size of 512 bytes; but can be more with larger sector sizes) |
Partitsioonide kirjed (ingl. Partition entries)
Offset | Length | Contents |
---|---|---|
0 (0x00) | 16 bytes | Partition type GUID |
16 (0x10) | 16 bytes | Unique partition GUID |
32 (0x20) | 8 bytes | First LBA (little endian) |
40 (0x28) | 8 bytes | Last LBA (inclusive, usually odd) |
48 (0x30) | 8 bytes | Attribute flags (e.g. bit 60 denotes read-only) |
56 (0x38) | 72 bytes | Partition name (36 UTF-16LE code units) |
GPT päis kirjeldab partitsiooni tabeli algaadressi ja iga partitsiooni tabeli kirje suurust. Partitsioonide kirjed asuvad partitsiooni tabelis ja kirjeldavad partitsioone, kasutades miinimum suurust 128 baiti iga kirjeploki jaoks. Esimesed 16 bait`i määravad partitsiooni tüübi GUID (globally unique identifier). Näiteks GUID EFI süsteemse partitsiooni jaoks on: C12A7328-F81F-11D2-BA4B-00A0C93EC93B. Järgmised 16 bait`i sisaldavad antud partitsiooni GUID`i. Edasi kirjutatakse 64-bitise LBA plokkide jaoks (kui need on olemas) alg- ja lõppaddressid), partitsioonide atribuudid ja partitsiooni nimi (maks. 36 tähemärki) Unicode`is.
Puudused
- Vastuoluline GPT toetuse rakendamine tarkvaras, mis võibolla põhjustatud sellest, et enamik standardist on kinnine. (näiteks, GUID „Linux data“ partitsiooni tüübi jaoks oli muudetud, utiliidi parted vanemates versioonides kasutatakse ebastandartset nimede kodeerimist)
- Ei ole võimalust määrata oma nimi kogu kettale (vaatmata sellele, et kettal on olemas oma GUID)
- Senimaani on väga tugev seos partitsiooni ja tabelis asuva partitisooni numbri vahel (näiteks paljud OS alglaadijat eelistavad kasutada partitsiooni numbrit, mitte nime või GUID`i)
- Tabeli duplikaatide kogus on piiratud kahega ja nende positisoonid on fikseeritud. Selline lähenemine ei ole piisavalt paindlik ketta kahjustamise, administreerimis vigade või programmide vigade puhul.
- GPT koopiad ei luba teise koopia annulleerimist juhul, kui koopia on rikutud aga omab õiget kontrollsummat (ehk ei ole kaitset rikutud plokkide vastu)
Partitsiooni tüüpide identifikaatorid (GUID)
Platform | Partitsiooni tüüp | Globaalselt Unikaalne Identifikaator (GUID) |
---|---|---|
(Ei ole) | Kasutamata andmete kirje | 00000000-0000-0000-0000-000000000000 |
MBR partitsiooni tabel | 024DEE41-33E7-11D3-9D69-0008C781F39F | |
EFI süsteemne partitsioon | C12A7328-F81F-11D2-BA4B-00A0C93EC93B | |
BIOS Boot partition | 21686148-6449-6E6F-744E-656564454649 | |
Partitsioon Intel Fast Flash (iFFS) (tehnoloogia Intel Rapid Start jaoks) | D3BFE2DE-3DAF-11DF-BA40-E3A556D89593 | |
Alglaadimis partitsioon Sony | F4019732-066E-4E12-8273-346C5641494F | |
Alglaadimis partitsioon Lenovo | BFBFAFE7-A34F-448A-9A5B-6213EB736C22 | |
Windows | Windows'i reseveeritud partitsioon (Windows reserved) | E3C9E316-0B5C-4DB8-817D-F92DF00215AE |
Põhiandmete partitsioon | EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 | |
Loogiliste partitisoonide manageerimine, meta-andmete partitsioon | 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3 | |
Loogiliste partitisoonide manageerimine, andmete partitsioon | AF9B60A0-1431-4F62-BC68-3311714A69AD | |
Taastamis partitsioon (recovery partition) | DE94BBA4-06D1-4D40-A16A-BFD50179D6AC | |
HP-UX | Andmete partitsioon | 75894C1E-3AEB-11D3-B7C1-7B03A0000000 |
Servis partitsioon | E2A1E728-32E3-11D6-A682-7B03A0000000 | |
Linux | Andmete partitsioon | 0FC63DAF-8483-4772-8E79-3D69D8477DE4 |
RAID partitsioon | A19D880F-05FC-4D3B-A006-743F0F84911E | |
Swap partitsioon | 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F | |
Loogiliste partitisoonide manageerimine (LVM) | E6D6D379-F507-44C2-A23C-238F2A3DF928 | |
Partitsioon /home | 933AC7E1-2EB4-4F13-B844-0E14E2AEF915 | |
Partitsioon /srv (serveri andmed) | 3B8F8425-20E0-4F3B-907F-1A25A76F98E8 | |
Partitsioon dm-crypt | 7FFEC5C9-2D00-49B7-8941-3EA10A5586B7 | |
Partitsioon LUKS | CA7D7CCB-63ED-4C53-861C-1742536059CC | |
Reserveeritud | 8DA63339-0007-60C0-C436-083AC8230908 | |
FreeBSD | Alglaadija partitsioon | 83BD6B9D-7F41-11DC-BE0B-001560B84F0F |
Andmete partitsioon | 516E7CB4-6ECF-11D6-8FF8-00022D09712B | |
Swap partitsioon | 516E7CB5-6ECF-11D6-8FF8-00022D09712B | |
Partitsioon UFS (Unix File System) | 516E7CB6-6ECF-11D6-8FF8-00022D09712B | |
Partitsioonde manageerimise partitsioon Vinum | 516E7CB8-6ECF-11D6-8FF8-00022D09712B | |
Partitsioon ZFS | 516E7CBA-6ECF-11D6-8FF8-00022D09712B | |
Mac OS X | Partitsioon HFS+ (Hierarchical File System) | 48465300-0000-11AA-AA11-00306543ECAC |
Apple UFS | 55465300-0000-11AA-AA11-00306543ECAC | |
ZFS | 6A898CC3-1DD2-11B2-99A6-080020736631 | |
Apple RAID partitsioon | 52414944-0000-11AA-AA11-00306543ECAC | |
Apple RAID partitsioon, offline | 52414944-5F4F-11AA-AA11-00306543ECAC | |
Alglaadimis partitsioon Apple | 426F6F74-0000-11AA-AA11-00306543ECAC | |
Apple Label | 4C616265-6C00-11AA-AA11-00306543ECAC | |
Partitsioon Apple TV Recovery | 5265636F-7665-11AA-AA11-00306543ECAC | |
Partitsioon Apple Core Storage (то есть Lion FileVault) | 53746F72-6167-11AA-AA11-00306543ECAC | |
Solaris | Alglaadimis partitsioon | 6A82CB45-1DD2-11B2-99A6-080020736631 |
Juur partitsioon (root) | 6A85CF4D-1DD2-11B2-99A6-080020736631 | |
Swap partitsioon | 6A87C46F-1DD2-11B2-99A6-080020736631 | |
Backup-partitsioon | 6A8B642B-1DD2-11B2-99A6-080020736631 | |
Partitsioon /usr | 6A898CC3-1DD2-11B2-99A6-080020736631 | |
Partitsioon /var | 6A8EF2E9-1DD2-11B2-99A6-080020736631 | |
Partitsioon /home | 6A90BA39-1DD2-11B2-99A6-080020736631 | |
EFI_ALTSCTR | 6A9283A5-1DD2-11B2-99A6-080020736631 | |
Reserveeritud partitsioonid | 6A945A3B-1DD2-11B2-99A6-080020736631 | |
6A9630D1-1DD2-11B2-99A6-080020736631 | ||
6A980767-1DD2-11B2-99A6-080020736631 | ||
6A96237F-1DD2-11B2-99A6-080020736631 | ||
6A8D2AC7-1DD2-11B2-99A6-080020736631 | ||
NetBSD | Swap partitsioon | 49F48D32-B10E-11DC-B99B-0019D1879648 |
Partitsioon FFS | 49F48D5A-B10E-11DC-B99B-0019D1879648 | |
Partitsioon LFS | 49F48D82-B10E-11DC-B99B-0019D1879648 | |
Partitsioon RAID | 49F48DAA-B10E-11DC-B99B-0019D1879648 | |
Ühinenud partitsioon (merged) | 2DB519C4-B10F-11DC-B99B-0019D1879648 | |
Krüpteeritud partitsioon | 2DB519EC-B10F-11DC-B99B-0019D1879648 | |
ChromeOS | Tuum ChromeOS | FE3A2A5D-4F32-41A7-B725-ACCC3285A309 |
ChromeOS rootfs | 3CB8E202-3B7E-47DD-8A3C-7FF2A13CFCEC | |
Tulevase kasutamiseks ChromeOS | 2E0A753D-9E48-43B0-8337-B15192CB1B5E | |
QNX | Power-safe (QNX6) file system[1] | CEF5A9AD-73BC-4601-89F3-CDEEEEE321A1 |
Põhilised erinevused MBR'iga
- Partitsiooni maksimaalne suurus 9.4 ZB (1.00931731 × 1010 terabaiti)
- Teoreetiliselt piiramatul hulgal partitsioone (praktiliselt 128, MBR'il kõigest 4 primaarset partitsiooni)
- GPT tagab parema tervikluse, kuna partitsioonitabelitega seotud informatsiooni kirjutatakse andmekandja algusesse kui ka lõppu
Piirangud Windows'is
- GPT'lt ei ole võimalik laadida operatsioonisüsteemi juhul kui arvutil puudub BIOS EFI alglaadur
- GPT'lt suudavad laadida operatsioonisüsteemi ainult teatud 64 bit'ised Windows'i versioonid (Windows Vista SP1, Windows 7,Windows Server 2003 SP1 (Itanium), Windows Server 2008 /R2)
Näide Linux
Oletame, et meil on 8 Gibibaitiline kõvaketas ja me soovime sellele luua uued partitsioonid.
parted
Alustame sellega et vaatame kettad mis on masinas kättesaadav. Seda võib teha erinevalt.
lsblk - f
või
lshw -C disk
Valime ketta ja paneme käima parted utiliidi valitud ketta jaoks. Saab utiliidi käima panna ilma ketta määramata, siis tuleb ketta valida juba utiliidi sees.
NB! Parted on väga võimas utiliit, aga sellel on väga tähtis omadus, millest tuleb mäletada töötegemisel: kõik tegevused mis teete diskiga, kohe diskile rakendatakse!
sudo parted sdb
Parted utiliidi switch'id on järgmised:
- -h
- help
- -v
- programmi versioon
- -s
- scripti reziim
- -i
- interaktiivne reziim, kasutaja sisetab käskud interaktiivses reziimis
Peamised käsud, mida me kasutama hakkame meie näideses on järgmised:
- help käsu- abi valitud käsuga
- mkpart tüüp failisüsteem algus lõpp - linux partitsiooni loomine valitud failisüsteemiga
- mktable tüüp - partitsiooni tabeli loomine
- print - partitsioonide tabeli ekraanil näitamine
- quit - väljumine
- resize partitsioon - partitsiooni suuruse muutmine
- rm partitsioon - partitsiooni kustutamine
- select partitsioon - valida partitsioon aktiivseks
- set partitsioon flag seisund - määrata flag partitsioonile, seisund võib olla sees (on) või välja (off)
Esimese sammuna loome partitsiooni tabeli:
mktable gpt
Nüüd loome esimese partitisooni EXT4 failisüstemiga ja suurusega 1GiB(kuna GPT's ei ole piirangu primaarsete partitsioonide koguse suhtes, siis loome kõik partitsioon primaarseks):
mkpart primary ext4 0 1GiB
Kuna see on esimene partitsioon alustame partitsiooni nullist ja lõpetame meile vajaliku suurusega 1 GiB.
Vaatame partitsioonide tabeli:
Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 17,4kB 5GiB 5GiB primary
Loome veel ühe partitsiooni, see kord swap:
mkpart primary swap 5G -0
-0 tähendab et arvutust tuleb alustada ketta lõpust. Niipiidi me kasutame kettas ülejäänud vaba ruumi.
Vaatame mis tuli välja
Number Start End Size File system Name Flags 1 17,4kB 5Gib 5GiB primary 2 5GiBMB 8GiB 3GiB primary
Töö partitisoonidega toimbu numbri järgi. Näiteks kui tahetakse partitsiooni suurust muuta, teeme nii:
resize 2 1GiB
Kustutamisel:
rm 2
Paneme partitsioonide nimed:
name 1 boot name 2 swap
Seadistame esimest partitiooni alglaadimiseks (paneme lippu (ingl. flag)):
set 1 boot on
Saab panna järgmised lipud: boot, root, swap, hidden, raid, lvm, lba, hp-service, palo, prep, msftres, bios_grub, atvrecv, diag, legacy_boot, type, irst
Sellega ketastele on loodud partitsioonid. Partitisoonide kasutamise alustamisek tuleb neid formateerida (või swap'iks teha) ja haakida.
Näide Windows
Oletame, et meil on 128 terabaidine kõvaketas ja me soovime sellele luua uue partitsiooni.
Näites on kasutatud Windows 7 Proffesional SP1 64 bit operatsioonisüsteemi.
Diskpart
Uuele kettale GPT partitsioonitabeli loomine diskpart'iga ja täies ulatuses NTFS partitsiooni lisamine
select disk N convert gpt create partition primary format quick
Kontrollime tulemust
DISKPART> list disk Disk ### Status Size Free Dyn Gpt -------- ------------- ------- ------- --- --- Disk 0 Online 40 GB 0 B * Disk 1 Online 128 TB 0 B *
DISKPART> list partition Partition ### Type Size Offset ------------- ---------------- ------- ------- Partition 1 Reserved 128 MB 17 KB * Partition 2 Primary 127 TB 129 MB
Olemasoleva ketta partitsioonitabeli konverteerimine GPT'ks käib järgnevalt:
select disk N convert gpt
GUI
Uuele kettale GPT seadistamine
Disk Management tunneb ära arvutile lisatud ketta ja pakub kohe välja, et initaliseerida uus ketas. Valides GPT initaliseeritakse ketas ära GPT tabeli vormingus ning peale seda saab lisada kettale uusi partitsioone.
7 primaarse partitsiooniga andmekogu
Antud näites on tehtud 7 primaarset partitsiooni, millest 4 on 100 gigabaiti ja 2 4 terabaiti.
MBR konverteerimine GPT'ks
Viimasel pildil on näha, kuidas konverteerida ümber MBR'i GPT'ks