GPT

From ICO wiki
Pilt
GPT visuaalne skeem

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.

GPT header format
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)

GUID partition entry format
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

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:

print
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.

Screenshot-1.png

7 primaarse partitsiooniga andmekogu

Antud näites on tehtud 7 primaarset partitsiooni, millest 4 on 100 gigabaiti ja 2 4 terabaiti.

Screenshot-4.png

MBR konverteerimine GPT'ks

Viimasel pildil on näha, kuidas konverteerida ümber MBR'i GPT'ks

Screenshot-3.png

Vaata lisaks

Kasutatud kirjandus

  • QNX Power-safe filesystem