email: darw32@poczta.onet.pl


Linux - 4.Korzystanie z Różnych Mediów

Dyski Twarde

Sekcja wprowadza terminologię związaną z dyskami twardymi. Jeżeli znasz te terminy możesz opuścić ją.

Zobacz Rysunek 4_2.1 aby poznać schematyczny obraz najważniejszych części dysku twardego. Dysk składa się z jednego lub kilku cylindrycznych talerzy (talerze wykonane są z twardej substancji np. aluminium, stąd pochodzi nazwa), których jedna lub obie powierzchnie posiadają naniesioną substancję czynną magnetycznie. Dla każdej powierzchni istnieje głowica zapisująco-czytająca. Talerze mają wspólną oś obrotu, standardowo obracają się ~5000 razy w ciągu minuty (można zakupić dyski z 10000 RPM - rotacjami na minutę). Głowice poruszają się nad powierzchnią talerzy, wzdłuż promienia - dzięki ruchom głowic i rotacji talerzy można otrzymać dostęp do każdego obszaru powierzchni.

Procesor (CPU) i dysk komunikują się poprzez kontroler dysku. Tylko ta część musi wiedzieć w jaki sposób komunikować się z dyskiem twardym, do tego kontrolery mają wspólny interfejs programowy umożliwiając prosty dostęp do dysku - komputer mówi "dawaj czego chcę", zamiast wykonywać serii skomplikowanych przetworzeń sygnałów elektrycznych (w gruncie rzeczy komunikacja z kontrolerem jest również skomplikowana, ale takie podejście znacząco ułatwia współpracę komputer-dysk). Większość nowoczesnych kontrolerów nie poprzestaje na tym - część z nich buforuje dane, zastępuje złe sektory, itd.

Zazwyczaj powyższe informacje wystarczają "śmiertelnikowi", jednak istnieje kilka innych elementów: silnik poruszający talerzami, mechanizm pozycjonowania głowic, elektronika dysku, których nie trzeba znać aby zrozumieć działanie dysku twardego.

Zazwyczaj talerze podzielone są na koncentryczne pierścienie nazywane ścieżkami, te z kolei podzielone są na sektory. Podział ten służy do określania położenia danych oraz allokowania miejsca dla plików. Aby znaleźć odpowiednie miejsce można wskazać: "powierzchnia 3, ścieżka 5, sektor 7". Zazwyczaj liczba sektorów jest stała dla każdej ze ścieżek, jednak zdarza się, że na zewnętrznych ścieżka znajduje się więcej sektorów (wszystkie sektory są takiego samego rozmiaru). Zazwyczaj sektor ma 512 bajtów, nie istnieje możliwość zapisu na dysku mniejszej porcji danych.

Rysunek 4_2.1 Schematyczny obraz dysku twardego.

Każda powierzchnia podzielona w ten sam sposób na ścieżki i sektory. Oznacza to, że gdy głowica znajduje się na danej ścieżce inne głowice również są na odpowiadających jej ścieżkach. Wszystkie odpowiadające sobie ścieżki nazywane są cylindrem. Przesuwanie głowic jest czasochłonne (na inną ścieżkę) - umieszczanie danych na jednym cylindrze jest optymalnym rozwiązaniem. Jednakże nie jest to zawsze możliwe - czasami plik trzeba rozłożyć w kilku różnych miejscach, mówi się wtedy, że doszło do fragmentacji pliku.

Liczba powierzchni (lub głowic, co jest tym samym), cylindrów i sektorów zmienia się z każdym dyskiem; wartości określające te liczby nazywa się geometrią dysku twardego. Geometria przechowywana jest zazwyczaj w zasilanej bateryjnie pamięci zwanej CMOS RAM, stamtąd odczytuje ją system operacyjny.

Niestety BIOS (Basic Input/Output System - system podstawowego we/wy jest wbudowanym oprogramowaniem przechowywanym w pamięci ROM płyty głównej. Zajmuje się m.in. początkową fazą uruchamiania komputera) posiada ograniczenia, które uniemożliwiają wprowadzenie liczby ścieżek większej od 1024 do CMOS RAM, dla dzisiejszych dysków jest to za mało. Aby to obejść kontroler dysku twardego podaje nieprawdziwe informacje o geometrii dysku, po czym tłumaczy adresy podane przez komputer do postaci rzeczywistej. Dla przykładu powiedzmy, że mamy dysk posiadający 8 głowic, 2048 ścieżek i 35 sektorów w danej ścieżce (są to zmyślone liczby). Kontroler mógłby podać, że dysk posiada 16 głowic, 1024 ścieżek i 35 sektorów na ścieżce, dzięki temu limit nie zostaje przekroczony, natomiast kontroler ma trochę więcej roboty. W rzeczywistości matematyka może być bardziej zagmatwana, jednak rzeczywiste wartości nie są nam potrzebne, tworzenie jednego cylindra, itp. są niepraktyczne, nie przynoszą one żadnego wzrostu wydajności.

Tłumaczenie wymagane jest w przypadków dysków IDE. Dyski SCSI używają sekwencyjnych numerów sektorów (kontroler tłumaczy poszczególne liczby: głowica, cylinder, sektor), do tego używa się odmiennego sposobu komunikacji między CPU a kontrolerem - problem nie istnieje. Zauważ, że komputer często nie zna prawdziwej geometrii dysku, nie jest mu ona potrzebna.

Ponieważ Linux często nie zna prawdziwej geometrii dysku nie stara się tworzyć plików na jednym cylindrze. Zamiennie stara się przydzielać plikom sekwencyjne numery sektorów, co zazwyczaj daje podobną prędkość. Sprawa jest komplikowana przez bufory kontrolera, automatyczne przewidywanie akcji, itd.

Każdy dysk twardy reprezentowany jest przez pojedynczy plik urządzenia. Pliki takie mogą nazywać się /dev/hda, /dev/hdb, /dev/hdc, i /dev/hdd dla IDE. Dyski SCSI znane jest pod nazwą /dev/sda, /dev/sdb, itd. Podobne konwencje nazewnictwa obowiązują inne dyski twarde; zobacz listę urządzeń. Zapamiętaj, że plik dysku odnosi się do całej zawartości - nie obowiązuje podział na partycje, itd., urządzenie takie używane jest najczęściej w czasie modyfikacji MBR.