Volymen på en hårddisk (begreppen storlek och kapacitet används också) är den maximala mängd information som en hårddisk kan innehålla .
I takt med att hårddiskar har utvecklats har deras maximala kapacitet skjutit i höjden. Det har funnits hinder för denna tillväxt från tid till annan - begränsningar av allmänt använda mjukvaru- och hårdvarugränssnitt, använda adresseringsmetoder, såväl som mjukvaruegenskaper . Den här listan ger gränser (mest historiska) som finns eller har funnits i persondatorer för storleken på hårddiskar, partitioner och/eller filsystem .
Begränsning | Beskrivning |
---|---|
8 MB | Diskgräns i CP/M OS (när det totala antalet inte är mer än 16 diskar). |
10,4 MB | Fast skivstorlek i PC/XT : 306 cylindrar, 4 huvuden, 17 sektorer per spår. |
15 MB | Maximal partitionsstorlek för MS-DOS 1 och 2 vid standardsektorstorlek. [ett] |
16 MB | Storleksgräns för FAT12 . [2] |
32 MB | Gräns för partitionsstorlek för MS-DOS 3 för FAT16 -filsystem : 2 KB klusterstorlek, högst 16 384 kluster. [2] |
128 MB | FAT16 storleksgräns i MS-DOS 4: upp till 65 526 kluster, 2 KB klusterstorlek. [2] |
504 MB | CHS-adresseringsschemabegränsning (se nedan ). |
2 GB | Den maximala storleken på ett FAT16-filsystem för ett 32-KB-kluster. För Windows NT är detta värde på grund av 64-KB-kluster 4 GB. [3] |
2,1 GB | Vissa moderkort tilldelade 12 bitar för att lagra antalet cylindrar (4095 × 16b × 63 → 2,1 GB). [fyra] |
3,2 GB | En bugg i vissa Phoenix-bios (4.03 och 4.04) som orsakar stopp i CMOS-installationen om disken är större än 3277 MB. [fyra] |
4 GB | FAT16-partitionsstorleksgräns i Windows NT. |
Partitionsgräns skapad av Windows NT 3.51/4.0 Workstation under installationen [5] (beroende på att under installationen skapas en FAT16-partition, som sedan konverteras till NTFS ). | |
4,2 GB | Direktöverföring av antalet sektorer/huvuden genom att successivt minska antalet cylindrar med 2 gånger och fördubbla antalet huvuden (den så kallade Large eller ECHS (Extended CHS)) ledde till en gräns på 1024 huvuden: 1024 × 128 × 63 × 512 → 4,2 GB . [fyra] |
7,8 GB | Windows NT 4.0 systemdiskstorleksgräns . [6] |
7,9 GB | När antalet huvuden reducerades till 15 tillät ECHS-läget (reviderad ECHS) dubbleringsmetoden att erhålla en konfiguration med 15 × 2 × 2 × 2 = 240 huvuden, vilket gav en gräns på 7,9 GB. |
8,4 GB | BIOS-begränsning (se nedan ). |
32 GB | Artificiell begränsning av FAT32-partitionsstorlek i Windows 2000 , XP . Systemet vägrade att formatera större partitioner. [7] [8] Anledningen är den rationella användningen av resurser: FAT32 med en större partitionsstorlek förlorar prestanda, och NTFS, tvärtom, med en liten partitionsstorlek (~10 GiB) är för slösaktigt. |
Maximal diskstorlek som stöds Windows 95 . [9] | |
33,8 GB | Stora skivor rapporterar 16 huvuden, 63 sektorer och 16 383 cylindrar. När det används för att beräkna det verkliga antalet cylindrar (kapacitet dividerat med 16 × 63), är antalet cylindrar större än 65 535, vilket gör att vissa BIOS fryser. Det var på grund av detta problem som många enheter på den tiden hade byglar för att begränsa kapaciteten till 32 GB. |
128 GB 137 GB [4] |
Begränsning av standarder från ATA-1 till ATA/ATAPI-5 (se nedan ). |
Begränsa storleken på en NTFS-partition i Windows XP SP1 (fast i SP2). | |
Maximal FAT32-storlek skapad av Windows 98. [7] | |
Den maximala storleken på SFS i Amiga-familjen OS. | |
2 TB | Den maximala storleken på hela disken (exklusive partitioner) som stöds av MBR . MBR-gränser: partitionsstorlek, såväl som avståndet från början av partitionen till behållaren (till början av disken i fallet med en primär partition, till början av en utökad partition i fallet med logiska volymer) - ett 32-bitars antal sektorer, det vill säga båda parametrarna får inte vara mer än 2 TB. |
Den maximala storleken på ett ext3 - filsystem på en 32-bitars arkitektur. | |
Maximal partitionsstorlek för uppstart av Windows XP, Windows Vista, Windows 7 (på grund av MBR-begränsningar). | |
4 TB | maximal storlek på mdraid-arrayelementet vid användning av metadataformat 0.9 (2^32-1 sektorer) |
8 TB | FAT32- gräns . [åtta] |
16 TB | Den maximala storleken på ext3 på en 64-bitars arkitektur (4-KB-block), på Alpha med ett 8-KB-block kan vara upp till 32 TB. |
Maximal NTFS-storlek för ett 4-KB-kluster. | |
Den maximala storleken på ett ReiserFS -filsystem är 3.6. [tio] | |
Den maximala storleken på ett ISO 9660 -filsystem (används på optiska skivor). | |
64 TB | Begränsning av storleken på en spänd diskarray i Windows 2003 . [elva] |
256 TB | Den maximala storleken på NTFS-filsystemet (för ett 64-KB-kluster) i befintliga 32-bitars implementeringar. [7] [11]
En 48-bitars LBA kan adressera upp till byte, vilket är 256 TiB. I slutet av 2011 fanns det inte mer än 4 TB interna hårddiskar på marknaden. |
512 TB | Den rekommenderade maximala storleken för ett exFAT -filsystem . [12] |
4 PB | JFS - gräns vid 4-KB-block. [tio] |
8 PB | NFS- gräns . [tio] |
137 PB | ATA-6-sektoradresseringsgräns (48-bitars LBA). |
1 EB | Den maximala storleken på ext4 . [13] |
8 EB | XFS- gräns . [tio] |
16 EB | HFS+ -gräns . |
64 EB | Den teoretiska maximala storleken för ett exFAT -filsystem . [12] |
256 ZiB | Den maximala storleken på ett ZFS -filsystem . |
1 IB | Teoretisk NTFS -gräns vid 64-KB-block och 64-bitars adressering (för närvarande används 32-bitars). [7] |
MS-DOS- gränsen för det tillåtna antalet huvuden är 16 (1024 cylindrar, 63 sektorer per spår, 16 huvuden, 512 byte per sektor). [4] [14]
Programvara från tidigt 1990 -tal , som MS-DOS, använde Int 13h -anropet för att arbeta med hårddisken .
Adresseringen av diskblock i Int 13h-anropet ser ut som numren på cylindern ( engelsk cylinder ), huvud ( huvud ) och sektor ( sektor ) - C/H/S. Samtidigt tilldelas 10 bitar till C , 8 till H och 6 till S.
Int 13h-hanteraren i BIOS skriver dessa siffror i IDE -styrenhetens kontrollregister . I dessa register tilldelas 16 bitar till C, 4 till H och 8 till S.
Kombinationen av båda leder till en allmän begränsning på C/H/S = 10/4/6 bitar (totalt 20 bitar), vilket tillåter adresseringssektorer [ 15] . Med en sektorstorlek på 512 byte ger detta 528 482 304 byte (504 MB).
Maximal | BIOS | ID | Allmän begränsning |
---|---|---|---|
Sektorer per spår | 63 | 255 | 63 |
Ytor (huvuden) | 256 | 16 | 16 |
Spår | 1024 | 65536 | 1024 |
Volym | 8 064 MB | 127,5 GB | 504 MB |
Denna begränsning blev märkbar 1994-1995, runt tiden för de första Pentium- mikroprocessorerna . För att kringgå det uppfanns översättningen av CHS -värden i Int 13h-hanterarkoden i BIOS . Bland översättningsalgoritmerna fanns LBA ( English Linear Block Addressing ), när CHS-adressen konverteras till en linjär adress, som redan har överförts till diskkontrollern.
Teoretiskt sett borde olika översättningsmetoder ge samma resultat, men på grund av särdragen hos vissa översättningsimplementeringar, såväl som organisationen av datastrukturer ( partitioner ) på diskar, kunde information skriven till disken i en översättning inte vara tillgänglig i andra översättningar . För att ändra disköversättningsläget var det nödvändigt att "partitionera om" disken (återskapa partitionstabellen ), vilket innebar förlust av information som redan skrivits till disken.
Maximalt möjliga värde för att avbryta INT 13 är 1024 cylindrar, 63 sektorer, 255 huvuden. En begränsning av många dåtidens BIOS (P1-P2), när man försöker detektera en enhet större än 8 GB, skulle sådana BIOS:er hänga sig eftersom antalet huvuden måste vara mindre än 256. [4]
I Int 13h-gränssnittet tilldelas 10 bitar för cylindernumret , 8 för huvudnumret och 6 för sektornumret , totalt 24 bitar. Detta tillåter adressering av sektorer [15] , vilket för en sektorstorlek på 512 byte ger 8 455 716 864 byte (8064 MB, 7,875 GB).
När detta blev ett problem - runt 1997-1998 - var fullfjädrade multitasking- operativsystem som GNU/Linux, FreeBSD och Windows NT i utbredd användning. Eftersom Int 13h-koden i BIOS aldrig designades med multitasking i åtanke (särskilt laddar den processorn med en ändlös loop medan den väntar på ett avbrott från styrenheten), kunde dessa OS inte använda Int 13h i sitt arbete. Istället inkluderade de - som Novell NetWare tidigare - en IDE- drivrutin som direkt kommer åt styrenhetens hårdvara. Detta tog bort begränsningarna förknippade med Int 13h när man körde ett redan laddat OS, men problemet med uppstart (att starta systemstarthanteraren från en diskpartition utanför BIOS-tillgänglig gräns) kvarstod.
För att lösa problemet utökade BIOS-utvecklarna Int 13h med nya underfunktioner som accepterade sektornumret som ett 64-bitars heltal ( LBA ) utan att dela det med C/H/S. OS-utvecklare introducerade stöd för denna innovation i starthanterare (i Windows är detta ett av servicepaketen för Windows NT 4.0 1997 ), varefter problemet upphörde att existera.
Hårdvaruregistergränssnittet för en IDE -styrenhet från ATA-1 till ATA/ ATAPI -5 använder 16 bitar för C-numret, 4 för H och 8 för S, för totalt 28 bitar. Detta gör att sektorer kan adresseras [15] , vilket med en sektorstorlek på 512 byte ger 136 902 082 560 byte (127,5 GB).
Lösningen på problemet med en sådan begränsning är endast möjlig på hårdvarunivå (och uppdatering av drivrutiner för att använda nya hårdvarufunktioner). Det antogs i ATA/ATAPI-6-standarden i form av att adressen skickades till styrenheten två gånger i en viss sekvens (48-bitars LBA). [16]
I Windows-familjen lades 48-bitars LBA-stöd till i SP4 för Windows 2000 och SP2 för Windows XP . Windows 2000 kräver dessutom att du uttryckligen aktiverar detta stöd genom en registerredigering . [17]
Utöver begränsningarna för IDE- och BIOS-gränssnitten fanns det andra barriärer - buggar och begränsningar i program, OS och BIOS-kod.
DOS stöder till exempel inte mer än 255 huvuden, så en geometri med 256 huvuden är inte acceptabel på detta operativsystem.Detta betyder att på datorer där BIOS inte stödde översättning från 256 till 255 till diskar större än sektorer var tveksamt. Med en sektorstorlek på 512 byte ger detta 4 227 858 432 byte (4032 MB, 3,94 GB).