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