HDD

Problemy z obsługą dysków powyżej 128GB, czyli bariery pojemności

przeczytasz w 5 min.

Często podczas modernizacji dysków twardych w starszych komputerach natrafiamy na pewne niekompatybilności - bariery pojemności dysków twardych. Są one spowodowane limitami adresowymi biosów instalowanych we wczesnych komputerach. Pierwszą taką barierą jest (nie)sławny już limit 504/528MB. Starsi czytelnicy doskonale wiedzą, że takich niekompatybilności było całkiem sporo a do każdego problemu należało podchodzić indywidualnie. Postaramy się zatem przybliżyć wam, na jakie problemy z pojemnością możecie napotka

Czasy antyczne ;)

» 10.9 MB - limit pojemności dla PC/XT - Pierwszy pecet został zaprojektowany do współpracy - co może teraz dziwić - z jednym konkretnym modelem hdd. Był to prastary dysk MFM o pojemności 10.9MB i taka też była pierwsza bariera pojemności.

» 16MB - limit wielkości partycji FAT12 - Pierwszym systemem plików używanym w komputerach PC był 12-bitowy FAT12. System ten potrafił adresować maksymalnie 4096 (2^12) sektorów o pojemności 4096B każdy. To po podliczeniu: 4096*4096 = 16777216, 16777216/1048576 = 16MB. FAT12 jest używany do dziś jako system plików na dyskietkach.

» 32MB - limit DOS 3.0 - Po wprowadzeniu na rynek kolejnych modeli IBM PC/XT, DOS w wersji 3.x został nieco zmodyfikowany. Dodano obsługę nowego systemu plików FAT tym razem 16-bitowego - FAT16. Nie był to jednak FAT16 który w niektórych przypadkach używany jest nawet dziś. FAT16 z DOS 3.x miał pewne ograniczenie. Klaster mógł mieć maksymalnie 2048 Bajty, a tablica alokacji partycji mogła zaadresować ich 16384. To po podliczeniu: 2048*16384 = 33554432B, 33554432/1048576 = 32MB

» 128MB - limit DOS 4.0 - bardzo szybko okazało się, ze wspomniane wyżej 32MB przestało wystarczać. Dlatego DOS 4.0 posiadał ponownie zmodyfikowana wersje FAT16, tym razem pozwalając zaadresować 65536 klastrów. Pojemność pojedynczego klastra nadal była limitowana do 2048 Bajtó. Po podliczeniu daje: 2048*65536 = 134217728, 134217728/1048576 = 128MB

Jak widzicie, pierwsze ograniczenia nie były spowodowane Biosem ale najczęściej problemami programowymi. Czyli po prostu krótkowzrocznością programistów. Tego typu problemy można bardzo łatwo wyeliminować, wystarczy zaktualizować oprogramowanie. Inaczej sprawa wygląda w przypadku BIOSu. O ile teraz mamy możliwość wgrania jego nowej wersji, to kiedyś było to nie możliwe. Jedynym wyjściem była wymiana niekompatybilnego podzespołu.

Czasy zamierzchłe

» 512MB - limit DOS 5.0 - Podobnie jak w przypadku 32MB w DOS 3.x, 128MB w DOS 4.x szybko przestało wystarczać. Znowu nieznacznie podniesiono poprzeczkę. Tym razem czterokrotnie podnosząc maksymalną dostępną pojemność klastra. Po podliczeniu: 8192*65536 dawało 536870912 Bajtów czyli 536870912/1048576 = 512MB. Ta bariera została jednak przyćmiona nieco innym problemem, barierą 504/528MB

* 504/528MB - Limit 1024 cylindrów - Najbardziej (nie)sławnym limitem pojemności dysków był limit 1024 cylindra. Pierwsze problemy tego typu pojawiły się w okolicach początku 1994 roku. Wtedy to właśnie pojemność dysków przekroczyła magiczna barierę 504MB. BIOS aby komunikować się z dyskiem twardym musi go zaadresować, czyli móc odwołać się do dowolnego jego miejsca za pomocą pewnych współrzędnych. W przypadku biosów tymi koordynatami były Cylindry, Głowice i Sektory. Myślę, że niema tutaj potrzeby wyjaśniać jak przebiega ten proces. Warto jednak wiedzieć, iż pierwsza poważna bariera w pojemności dysków wynikała z ograniczeń adresowych Biosów. W ówczesnych czasach potrafiły one zaadresować maksymalnie 1024 cylindry, 16 głowic i 63 sektory. Co po podliczeniu 1024*16*63*512B daje dokładnie 528482304 Bajtów czyli 528482304/1048576 = 504MB. Liczba 512 w obliczeniu to fizyczna pojemność jednego klastra na dysku. Przy okazji widać tez, że tytułowe 528MB wynika z czysto marketingowego przeliczania pojemności dysków. Przypominam: 1MB to 1048576 Bajtów a nie 1000000.

* 2016MB - Limit 4096 cylindrów - Poprzedni problem został wyeliminowany poprzez zmianę metody adresowania dysków w Biosie z fizycznej na logiczna, zwanej czasami translacją. Jednak pierwsza implementacja tego sposobu adresowania logicznego miała problem z zaadresowaniem więcej niż 4096 cylindrów. To po podliczeniu 4096*16*63*512B daje limit pojemności do 2113929216B Czyli dokładnie 2113929216/1048576 = 2016MB.

* 2048MB - Limit wielkości partycji FAT16 - Kolejnym limitem, tym razem dla odmiany programowym, był następny limit pojemności partycji FAT16. Pod koniec 1995 roku, po wydaniu Windows 95 FAT16 potrafił obsługiwać klastry o wielkości do 32kB, maksymalna liczba wpisów do tablicy FAT pozostała bez zmian. Co po kolejnym podliczeniu dawało 32768*65536 = 2147483648 Bajtów czyli 2147483648/1048576 = 2048MB. Nie był to jednak limit zbyt dokuczliwy. Po pierwsze na rynku w tym czasie nie było jeszcze zbyt wielu dysków osiągających taka pojemność. Po drugie, Windows NT który istniał na rynku niezależnie potrafił obsłużyć partycje FAT16 z klastrami o pojemności 64kB, co przesuwało granice do 4GB. Inną sprawą jest to, że nikt przy zdrowych zmysłach nie korzystał z tak dużego dysku pod kontrolą FAT16, na rynku istniały inne systemy plików które nie stwarzały podobnych problemów.

* 3111MB - Limit 6322 cylindrów - Kolejny problem z adresowaniem dysków w Biosie. Tym razem niektóre Biosy nie potrafiły poradzić sobie z dyskami o liczbie cylindrów większej niż 6322. Co efektywnie dawało ograniczenie do 6322*16*63*512 = 3262758912 Bajtów, czyli 3262758912/1048576 = 3111MB.

* 3124MB - Błąd w biosach Phoenix v4.03 i 4.04 - Tym razem mamy do czynienia z klasycznym błędem programowym. Biosy Phoenix v4.03 i 4.04 akceptowały maksymalnie 6349 cylindrów. Jeśli ręcznie wprowadziliśmy większa wartość BIOS po prostu się zawieszał. Uaktualnienie Biosu rozwiązywało problem.

* 4032MB - Limit 8192 cylindrów - Oto kolejne ograniczenie przestrzeni adresowej Biosów (mogli by to juz przewidzieć na przyszłość). Tym razem problem sprawiały urządzenia o liczbie cylindrów większej niż 8192. Co po standardowym obliczeniu daje 8192*16*63*512 Bajtów = 4227858432, czyli 4227858432/1048576 = 4032MB.

* 7560MB - Limit 240 głowi - Kolejny problem adresowy Biosu. W niektórych jego wersjach problem adresowania rozwiązano w inny sposób. Nie podnoszono liczby cylindrów, tylko logiczna liczbę głowic za pomocą których BIOS komunikował się z dyskiem. W przypadku takich Biosów Limitem były 1024 cylindry, 255 głowic oraz 63 sektory. Co wyznaczało by barierę na poziomie 8032MB. Jednak ze względu na problemy po stronie systemów operacyjnych, liczbę logicznych głowic ograniczono do 240. Co w przeliczeniu dawało właśnie 1024*240*63*512B = 7927234560, czyli 7927234560/1048576 = 7560MB.

» 8032MB - Limit przerwania Init13h, często zwany barierą 8GB - Ówczesne Biosy do komunikacji z dyskami używały przerwania init13h, co często nazywano interfejsem init13h. Standard ten alokował 10 bitów na liczbę cylindrów (co daje max 1024), kolejne 8 bitów na liczbę głowic (co daje max 255), oraz 6 bitów na liczbę sektorów (co daje max 64, ale ze względu na to, ze cyfra 0 nie jest wykorzystywana, zostaje 63). Teraz jeśli przeliczymy to wszystko 1024*255*63*512B wyjdzie nam liczba 8422686720, czyli dokładnie 8422686720/1048576 = 8032GB.
O ile wcześniejsze problemy można było rozwiązać przy pomocy rożnych metod translacji (logicznego adresowania), tego nie można ominąć w ten sposób. Jest to bowiem ograniczenie wynikające z połączenia wcześniejszych ograniczeń. Jedynym wyjściem w tym wypadku było porzucenie interfejsu init13h na rzecz rozszerzeń init13h.

» 32GB - Limit wielkości partycji Windows 95 - W 1999 roku Microsoft ogłosił, iż Windows 95 nie obsługuje i nigdy nie będzie obsługiwał dysków większych niż 32GB. O ile wcześniejsze ograniczenia mogliśmy wytłumaczyć w jakiś sposób, na temat tego nie posiadamy żadnych danych. Microsoft milczy jak zaklęty na ten temat.

Czasy obecne

» 31.5GB - Limit 65535 cylindra - Powoli docieramy do ograniczeń, które nawet młodsi czytelnicy mogą pamiętać. Znowu mamy do czynienia z limitem wynikającym z problemów adresowych biosów. Tym razem problem stanowi zaadresowanie więcej niż 65535 cylindrów. Co po naszych rutynowych ograniczeniach daje 65535*16*63*512 = 33822867456, 33822867456/1048576/1024 = 31.5GB.

Komputery kupione po czerwcu 1996 nie powinny cierpieć z powodu tego ograniczenia. Jeśli jednak tak by się stało, wystarczy zaktualizować BIOS na płycie głównej.

» 128GB - Limit standardu ATA - Tym samym dotarliśmy do obecnie obowiązującego limitu pojemności dysków twardych. W obecnych czasach dyski juz nie są adresowane poprzez ich dane geometryczne (cylindry, głowice, sektory) tylko poprzez rożne metody adresowania logicznego oraz numeracje sektorów. Bariera 128 GB wynika z ograniczenia standardu ATA, w którym na liczbę sektorów przewidziano zmienną 28-bitową. Daje to maksymalnie 2^28 czyli 268435456 sektorów. Jeśli pomnożymy to przez 512 czyli pojemność pojedynczego sektora dostaniemy liczbę 137438953472, czyli 137438953472/1048576/1024 = 128GB.

W przypadku szeregowego ATA problem rozwiązano w specyfikacji ATA-133 przez powiększenie liczby sektorów do liczby 48 bitowej. SerialATA od początku posługuje się adresowaniem 48-bitowym.

Jak sobie radzić z tymi barierami

Na początek proponujemy trochę trzeźwego myślenia. Po pierwsze zaktualizujmy bios płyty głównej, bądź kontrolera do którego podłączony jest dysk, do najnowszej wersji. To w zdecydowanej większości powinno rozwiązać problem. Jeśli kłopoty występują po stronie systemu operacyjnego, również należy zaktualizować go najnowszymi łatkami.

W przypadku bariery 128GB i Windows XP problem rozwiązuje instalacja dodatku Service Pack 1.

No dobrze, ale co jeśli mamy już najnowsze biosy/sterowniki + zaktualizowany system operacyjny a problem nadal występuje? Tutaj sprawa nieco komplikuje się. Jeśli w biosie komputera dysk wykrywany jest ze zmniejszoną pojemnością, należy sprawdzić czy w systemie operacyjnym to ograniczenie nie znika. Czasami trafia się sytuacja, w której bios obcina dysk do jakiejś tam pojemności, ale Windows widzi ją w pełni. Jeśli ma to być nasz jedyny dysk w komputerze, można spróbować założyć na nim osobna, systemową partycję, która będzie mniejsza od pojemności wykrywanej przez BIOS. Następnie na tej partycji, znajdującej się koniecznie na początku dysku instalujemy system. Gdy ten już się uruchomi za jego pomocą zakładamy pozostałe partycje i przenosimy na nie dane. Jeśli system operacyjny również widzi ograniczoną pojemność, wtedy pozostaje nam właściwie tylko kupno osobnej karty PCI kontrolera ATA. Wyżej wymienione problemy nie występują w przypadku dysków Serial ATA i SCSI.

Komentarze

1
Zaloguj się, aby skomentować
avatar
Komentowanie dostępne jest tylko dla zarejestrowanych użytkowników serwisu.
  • avatar
    assistant
    -1
    Ciekawy artykuł.