na dysku - Linux Magazine

Transkrypt

na dysku - Linux Magazine
TEMAT MIESIĄCA
Wprowadzenie do NTFS
Dostęp do partycji NTFS w Linuksie
NA DYSKU
Nieważne, czy usuwasz problemy,
czy też konfigurujesz system pod
kątem większej wydajności pracy,
dobrze byłoby, gdybyś miał możliwość
dostępu z Linuksa do swoich plików
na partycjach systemu Windows.
OLIVER TENNERT
I JOE CASAD
O
gromna przewaga liczebna instalacji systemu Windows to wystarczający powód, aby administratorzy próbowali uzyskać dostęp z Linuksa do
danych na systemach plików NTFS. A istnieją o wiele ważniejsze powody, jak działania
związane z odzyskiwaniem danych po poważnych awariach systemu, czy próby przywrócenia partycji Windows do pracy po infekcji wirusowej.
Wymiana danych w komputerze z zainstalowanym systemem Windows bardzo często
wiąże się z koniecznością obsługi systemu
plików NTFS. NTFS to nowoczesny system
plików, a co się z tą nowoczesnością wiąże,
dość mocno skomplikowany. Aby uzyskać
dostęp do danych w ramach takiego systemu
plików potrzebne są odpowiednie narzędzia
i dość spory bagaż wiedzy.
Linux już od dłuższego czasu miał możliwość odczytu danych z partycji NTFS, lecz
niedawno pojawiły się narzędzia nowej generacji, udostępniające możliwość zapisu na
partycjach NTFS, dodatkowo uzupełnione
o możliwości wykonywania zadań diagnostycznych i usuwania problemów. Temat
przewodni tego numeru LinuxMagazine dotyczy właśnie dostępu z Linuksa do danych
na partycji NTFS.
Jak się wkrótce dowiecie, dostęp do partycji NTFS jest obsługiwany przez sporą rodzinę narzędzi. Na początek rzucimy okiem na
pakiet narzędzi ntfsprogs, rozwijany w ramach projektu Linux-NTFS. Pakiet
16
NUMER 36 LUTY 2007
ntfsprogs to kolekcja narzędzi na licencji
Open Source obsługiwanych z konsoli, służących do montowania i zarządzania woluminami NTFS. Przyjrzymy się też Captive,
obiecującemu narzędziu wykorzystującemu
technologię Wine, umożliwiającemu dostęp
do partycji NTFS z zastosowaniem oryginalnego sterownika z systemu Microsoft Win-
dows. Choć Captive jest projektem na wolnej
licencji, do jego wykorzystania jest koniczna
licencja na system Windows, ponieważ wykorzystuje własnościowy sterownik systemu
plików NTFS właśnie z systemu Windows.
Jednak, jak dowodzą autorzy artykułu, Andreas Köller i Ian Travis, jeśli nie posiadasz
licencji na system Windows, po co potrzebny
»$STANDARD_ »$FILE_NAME«
INFORMATION «
»$INDEX_ROOT« (rezydentny)
$MFT
Wpis MFT
Wpisy indeksu
Nagłówek atrybutu
"$INDEX_ROOT" po 16 bajtów
»$INDEX_ALLOCATION« (nierezydentny)
Wpisy indeksu
Rekordy indeksu
Nagłówek
wpisów indeksu
"#FILE_NAME" po 65 bajtów
+ przestrzeń nazw
Rysunek 1: NTFS jest znacznie bardziej zaawansowany, niż poprzedzający do FAT. Na tym rysunku specjalny znacznik w nagłówku wpisu w MFT oraz atrybut $FILE_NAME sygnalizują, że
dany wpis dotyczy katalogu.
WWW.LINUX-MAGAZINE.PL
Wprowadzenie do NTFS
Tabela 1. Metadane MFT
Atrybut
Opis
$MFT
Sam MFT
$MFTMirr
Kopia pierwszych czterech wpisów w MFT
$LogFile
Dziennik na potrzeby transakcji na metadanych
$Volume
Informacja o woluminie, jak etykieta, identyfikator, wersja itp.
$AttrDef
Informacje związane z atrybutami, jak ID, nazwa, rozmiar itp.
.
Katalog główny systemu plików
$Bitmap
Statusy alokacji dla każdego kastra w systemie plików
$Boot
Boot sektor i kod rozruchowy systemu plików
$BadClus
Klastry zawierające uszkodzone sektory
$Secure
Informacje dotyczące bezpieczeństwa i kontroli dostępu
$UpCase
Wersja wielkiej litery dla każdego znaku Unicode
$Extend
Katalog zawierający pliki na potrzeby opcjonalnych, przyszłych rozszerzeń
Ci dostęp do partycji NTFS? W artykule opisany jest test mechanizmu Captive w typowej
konfiguracji z dwoma systemami operacyjnymi na jednym, niskobudżetowym komputerze.
Na zakończenie rozważań o obsłudze systemu plików NTFS pod Linuksem, nasz guru od
dystrybucji live (i twórca artykułów do Linux
Magazine), Klaus Knopper, ma kilka wskazówek dotyczących dostępu do partycji NTFS
z poziomu dystrybucji typu Live Linux.
mu plików, jak superblok (w nomenklaturze
firmy Microsoft nazywany boot sektorem)
lub główna tabela plików (Master File Table)
są zapisane wielokrotnie, co upraszcza operacje przywracania systemu w przypadku błędów. W odróżnieniu od różnych odmian systemu FAT, NTFS obsługuje model własności
plików oraz listy kontroli dostępu (access
control lists, ACL), które są dobrze dopasowane do modelu bezpieczeństwa systemu
Windows.
Nieco informacji
Klastry w stylu Windows
New Technology File System (NTFS) firmy
Microsoft jest standardowym systemem plików dla Windows NT, Windows 2000, Windows XP i Windows Server 2003. Microsoft
rozwija format NTFS jako system plików dla
wszystkich wariantów swojego systemu operacyjnego. W Windows XP zastosowano
NTFS w wersji 3.1. W dalszej części tego artykułu będziemy odwoływać się właśnie do tej
wersji NTFS. Przestarzały już znacznie format FAT zawdzięcza swoje przetrwanie głównie urządzeniom przenośnym i kartom pamięci, w których jest stosowany. Co się z tym
wiąże nadal odgrywa ważną rolę w wymianie
danych między systemami operacyjnymi.
System plików NTFS jest znacznie bardziej skomplikowany, niż FAT i posiada poważny zbiór cennych cech. NTFS odzwierciedla semantykę systemu, która jest znacznie odmienna od znanej semantyki standardu Posix, stosowanej powszechnie w systemach klasy Unix. Proste zamontowanie partycji NTFS nie udostępnia jeszcze wszystkich jego możliwości.
Z drugiej strony NTFS posiada kilka cech
wspólnych z nowoczesnymi systemami plików Linuksa. Na przykład jest kronikowanym systemem plików i obsługuje operacje
na metadanych. Krytyczne metadane syste-
W systemie Windows pojęcie klaster odnosi
się do bloku logicznego na dysku, czyli jednostki alokacji miejsca na dysku, której rozmiar wynosi od 512 bajtów do 64 kilobajtów,
w zależności od rozmiaru partycji. Bez dodatkowej ingerencji Windows zakłada system plików o rozmiarze jednostki alokacji
równym co najwyżej 4 kilobajtom. NTFS jest
w pełni 64-bitowym systemem, dzięki czemu
obsługiwane rozmiary plików i partycji
znacznie przekraczają współczesne potrzeby.
Jednakże nawet najnowsze implementacje
do adresowania wykorzystują jedynie mniej
znaczące 32 bity, co powoduje, że rozmiar
systemu plików jest ograniczony do 256 terabajtów, a maksymalny rozmiar plików wynosi około 16 terabajtów. Podobnie, jak większość nowoczesnych systemów plików dla
Uniksów (XFS, JFS i Reiser4), NTFS obsługuje adresowanie plików w postaci tzw.
extents. Wspomniany extent to liczba ciągłych bloków logicznych zajmowanych przez
plik. W nomenklaturze Windows extent to
tzw. cluster run.
Matka (wszystkich tabel)
jest tylko jedna
Master File Table (MFT) to centralny
punkt całego systemu plików NTFS. Tabe-
WWW.LINUX-MAGAZINE.PL
TEMAT MIESIĄCA
la MFT to uporządkowana lista zapisów dla
wszystkich plików w systemie. MFT to odpowiednik Inode Allocation Map z systemów Unix. Każdy zapis dotyczący pliku
(w nomenklaturze Microsoft file record)
w systemie plików NTFS posiada ustalony
rozmiar 1 kilobajta, niezależnie od zastosowanego rozmiaru klastra. W teorii możliwe
jest zastosowanie innego rozmiaru, ponieważ rozmiar wpisu w MFT jest zapisany
w boot sektorze.
W Uniksie odpowiednikami wpisów
w MFT są i-węzły z tą różnicą, że w i-węźle
nie jest zapisywana nazwa pliku, dzięki
czemu można zaimplementować dowiązania trwałe za pomocą połączenia kilku
wpisów w katalogu z jednym numerem i-węzła. W przypadku systemu NTFS obsługa trwałych i miękkich dowiązań wymaga znacznie bardziej skomplikowanych
zabiegów.
Jak na ironię NTFS jest znacznie bliższy
typowo uniksowej koncepcji „wszystko jest
plikiem”, niż większość uniksowych systemów plików. Tabela MFT zawiera listę
wszystkich struktur metadanych, definiujących system plików w postaci zbioru plików
w ustalonych lokalizacjach. Wszystkie nazwy
plików metadanych, z jednym wyjątkiem,
rozpoczynają się od znaku dolara. MFT zawiera nawet wpis dotyczący samego siebie,
pod indeksem zero o etykiecie $MFT. Najważniejsze metadane tabeli MFT zostały zebrane w tabeli 1.
Aby zamontować system plików – w Windows lub Linuksie – sterownik NTFS musi
dowiedzieć się o lokalizacji pierwszego klastra MFT na wolumenie. Informację tę odczytuje z pierwszego sektora (a dokładnie
z sektora 0), 8 kilobajtowego bloku, lub inaczej: boot sektora woluminu. W boot sektorze istnieje również kolejny wpis MFT, czyli
$Boot (zobacz tabela 1). Oprócz metadanych
systemu plików, z których wszystkie mieszczą się w sektorze 0, boot sektor zawiera kod
rozruchowy odpowiedzialny za rozpoczęcie
procedury ładowania systemu Windows.
Podsumowanie
Wyposażony w te podstawowe informacje jesteś Czytelniku gotów, aby poznać dokonania programistów Open Source w celu udostępnienia danych na partycjach NTFS użytkownikom Linuksa. Zainteresowanych również komercyjną stroną tej układanki
z NTFS-em w tle odsyłamy również do naszej recenzji komercyjnego pakietu Paragon
NTFS for Linux. ■
NUMER 36 LUTY 2007
17