NTFS

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

NTFS (New Technology File System) je v informatice označení pro souborový systém, který vyvinula firma Microsoft pro svoje operační systémy řady Windows NT. Souborový systém NTFS byl navržen na konci 80. let 20. století jako rozšiřitelný souborový systém, který je možné přizpůsobit novým požadavkům. Microsoft při vývoji NTFS využil poznatky z vývoje HPFS, na kterém spolupracoval s firmou IBM.

Verze[editovat | editovat zdroj]

V současné době existuje pět verzí NTFS, přičemž každá verze přinesla nějaké novinky:

verze NTFS verze Windows NT Rok vydání Poznámka
v1.0 Windows NT 3.1 1993
v1.1 Windows NT 3.5 1994 dlouhá jména na FAT[1]
v1.2 Windows NT 3.51 1995
Windows NT 4.0 1996 též NTFS 4.0 podle verze OS, komprimované soubory, ACL atd.[2]
v3.0 Windows 2000 2000 též NTFS 5.0, diskové kvóty, EFS, sparse files atd.[2]
v3.1 Windows XP 2001 též NTFS 5.1,
Windows Server 2003 2003 též NTFS 5.2
Windows Vista 2007 též NTFS 6.0, transakce, symbolické linky[3]
Windows Server 2008 2008 též NTFS 6.0

Poznámka: Pokud chcete používat NTFS v3.0 ve starším systému Windows NT 4.0, musí v něm být nainstalován Service Pack 4 (servisní balíček číslo 4), který obsahuje aktualizovanou verzi ovladače NTFS. Windows Vista přineslo spíše vylepšení jádra systému, než změny v NTFS, proto se verze NTFS nezměnila.

Vlastnosti[editovat | editovat zdroj]

NTFS byl navržen jako nativní souborový systém pro Windows NT a (zejména oproti zastaralému filesystému FAT) obsahoval spoustu novinek:

  • žurnálování – všechny zápisy na disk se zároveň zaznamenávají do speciálního souboru, tzv. žurnálu. Pokud uprostřed zápisu systém havaruje, je následně možné podle záznamů všechny rozpracované operace dokončit nebo anulovat a tím systém souborů opět uvést do konzistentního stavu.
  • access control list – podpora pro přidělování práv k souborům
  • kompresi na úrovni souborového systému
  • šifrování (EFS - Encrypting File System) umožňuje chránit data uživatele na úrovni souborového systému a je transparentní.
  • diskové kvóty umožňují nastavit maximálně využitelné místo na diskovém oddíle, pro konkrétního uživatele. Do diskové kvóty se nezapočítávají komprimované soubory, ale jejich reálná velikost.
  • dlouhá jména souborů (ve FAT původně nebyla a ve Windows 95 je bylo třeba doplňovat značně komplikovaným způsobem)
  • pevné a symbolické linky – odkazy na soubory na úrovni filesystémů, známé z operačních systému UNIX. Windows pro editaci tohoto typu odkazů nemají standardní uživatelské rozhraní, ale umí je interpretovat a také je používají (Distribuovaný systém souborů na Windows server 2003 apod.).

Struktura NTFS[editovat | editovat zdroj]

NTFS používá 64-bitové adresy clusterů, takže diskový oddíl může být větší než u FAT (která ve své poslední verzi používala efektivně 28bitové adresování) a to konkrétně až 16 EB (což odpovídá přibližně 17 × 10^9 TB). Celý systém je řešen jako obří databáze, jejíž jeden záznam odpovídá souboru.

Základ tvoří 11 systémových souborů, tzv. metadat, které vznikají bezprostředně po naformátování svazku.

  • $Logfile je již výše zmíněné žurnálování;
  • $MFT (Master File Table) je tabulka obsahující záznamy o všech souborech, adresářích a metadatech (jelikož $MFT je soubor, je i informace o něm v této tabulce); Nachází se hned za boot sektorem; jelikož se jedná o soubor, lze jej teoreticky fragmentovat (prakticky je tomu zamezeno), avšak aby se tomu předešlo, systém kolem něj udržuje zónu volného místa. Uložení informací v těchto záznamech umožňuje, aby MFT mohla růst nebo zmenšovat se. NTFS vnitřně určuje soubory a adresáře podle pozice jejich záznamů v MFT, které označují začátek jejich metadat. Soubory metadat v tabulce 2 mají určené první záznamy v MFT. Velikost záznamu je obvykle 1kB, ale může být i větší.
  • $MFTMirr je soubor, zajišťující bezpečnost dat; nachází se uprostřed disku, obsahuje prvních 16 záznamů $MFT; pokud je $MFT z nějakého důvodu poškozená, použije se tato kopie. Bootovací záznam NTFS disku obsahuje pozici MFT i její kopie. Rychlost přístupu do MFT hraje rozhodující roli v celkovém výkonu NTFS, proto se NTFS snaží tento přístup maximálně zrychlit. Protože MFT je soubor, který může růst a zmenšovat se, může být fragmentovaný (rozdělený do více částí). Tato fragmentace vzniká, protože NTFS nemůže přidělit souvislý prostor pro MFT, protože velikost MFT nelze dopředu určit.
  • $Badclus drží seznam známých vadných clusterů, které znovu nebudou použity; pokud nastane chyba při čtení dat, systém označí clustery za špatné a $Badclus se aktualizuje;
  • $Bitmap je jednorozměrné pole bitů, které slouží ke sledování volného místa; když je bit 0, je volný a v opačném případě použitý;
  • mezi další patří $Boot, $Volume, $AttrDef, $Quota, $Upcase a . (kořenový adresář disku);

NTFS je flexibilní – všechny jeho soubory (včetně speciálních, s výjimkou boot sektoru) se dají přesunout.

Zajímavé atributy souborů[editovat | editovat zdroj]

Soubory mohou mít mnoho atributů; jejich definice obsahuje soubor $AttrDef. V různých verzích se atributy liší, teoreticky je dokonce možné přidávat si vlastní.

Klasický soubor má mj. tyto atributy:

  • $FILE_NAME – struktura pro jméno souboru. Kromě něj obsahuje i velikost, reference na nadřízený adresář a různé příznaky.
  • $SECURITY_DESCRIPTOR – přístupová práva k souboru
  • $DATA – vlastní obsah souboru

Adresáře[editovat | editovat zdroj]

Adresáře jsou v NTFS pojaty jako speciální druh souborů; používají jiné druhy atributů. Na disk jsou vkládány jako B-stromy (což zrychluje vyhledávání) se jmény souborů a odkazy na jejich záznamy v MFT. NTFS používá tento atribut k uložení jmen souborů a kopií atributů standardních informací pro soubory v tomto adresáři. To zrychluje procházení adresářů, protože není potřeba číst MFT záznamy souborů v adresáři.

Záznamy v MFT[editovat | editovat zdroj]

Záznam obsahuje malou hlavičku, ve které jsou základní údaje o tomto záznamu. Za hlavičkou následuje jeden nebo více atributů, které popisují data nebo typ souboru či adresáře odpovídajícímu záznamu. Hlavička obsahuje čísla, která NTFS používá pro ověření integrity, ukazatel na první atribut v záznamu, ukazatel na první volný bajt v záznamu a číslo prvního (hlavního) záznamu v MFT, jestliže záznam není první.

Limity NTFS[editovat | editovat zdroj]

Názvy adresářů a souborů
Maximální délka je 255 znaků v kódování Unicode (UTF-16). V Posixovém namespace lze použít jakýkoliv UTF-16 znak (case sensitive) kromě znaku NULL a lomítko (/). Ve Win32 namespace lze použít jakýkoliv UTF-16 znak (case insensitive) kromě znaku NULL, lomítko (/), zpětné lomítko (\), dvojtečka (:), hvězdička (*), otazník (?), uvozovky ("), menší než (<) větší než (>) a svislá čára (|)[4]. Nelze použít jména, která se používají pro jména speciálních souborů na každém svazku: $MFT, $MFTMirr, $LogFile, $Volume, $AttrDef, . (tečka), $Bitmap, $Boot, $BadClus, $Secure, $Upcase, a $Extend[5] (tečka a $Extend jsou adresáře, zbytek soubory).
Maximální velikost svazku
Teoreticky je maximální velikost NTFS svazku 264-1 alokačních jednotek, avšak podle implementace ve Windows XP je to jen 232-1 alokačních jednotek. Při použití 64 KiB je to 256 TiB mínus 64 KiB, při použití implicitní velikost 4 KiB to je 16 TiB mínus 4 KiB. Protože je velikost klasického oddílu (MBR) limitována velikostí 2 TiB, musí být pro větší oddíly použit dynamický disk nebo GPT.
Maximální velikost souboru
Teoreticky: 16 EiB mínus 1 KiB (2^{64} - 2^{10} bajtů). Implementováno je 16 TiB mínus 64 KiB (2^{44} - 2^{16} bajtů)
Maximální délka cesty
Absolutní délka cesty až 32767 znaků[6]; relativní délka cesty je limitována na 255 znaků.
Rozlišení času
NTFS používá pro rozlišení času stejnou metodu, jako Windows NT, tj. 64bitové číslo s rozsahem od 1. ledna 1601 do 26. května 60056 s rozlišením 10 miliónů tiků na sekundu (10−7, tj. desetina mikrosekundy).
Alternativní datové proudy
Systémová volání Windows mohou, avšak nemusí podporovat datové proudy[5] v závislosti na operačním systému, nástrojích a vzdáleném systému souborů. Přenos souboru může tiše přerušit datový proud[5], proto je bezpečný způsob pro kopírování a přesun souborů pouze použití systémových volání BackupRead a BackupWrite, které umožňují sledovat datový proud a zjistit tak, zda přenos do cíle proběhl v pořádku a eventuálně přeskočit přerušené proudy.[5]

Problémy[editovat | editovat zdroj]

Fragmentace
Souborový systém NTFS již od svého počátku velice trpí svou nepříjemnou vlastností - s oblibou fragmentuje soubory. Čtení takto fragmentovaných souborů je pak zbytečně pomalé a čím více je takovýto soubor fragmentován, tím je čtení pomalejší. Proto je ve Windows 7 implicitně nastavena defragmentace automaticky jednou týdně.

Linux a NTFS[editovat | editovat zdroj]

Nejlepší podporu NTFS v Linuxu v současné době poskytuje ovladač NTFS-3G, který běží v uživatelském prostoru (využívá modul FUSE). Přímo v jádře se nachází ovladač, který podporuje čtení a omezeně i zápis (tzv. Linux-NTFS). K dispozici jsou však i ovladače poskytující plnou podporu čtení i zápisu.

Stále je samozřejmě možné spustit v emulátoru Captive-NTFS ovladače z originální instalace MS Windows (jde o dva soubory, které se dají získat buď ze systému Windows XP SP1, nebo přímo z instalačního balíčku SP1 pro Windows XP). Tento způsob je však výrazně pomalejší.

Reference[editovat | editovat zdroj]

  1. Recovering Windows NT After a Boot Failure on an NTFS Drive [online]. Microsoft, November 1, 2006. Dostupné online.  
  2. a b Mark Russinovich. Inside Win2K NTFS, Part 1 [online]. Microsoft Developer Network, [cit. 2008-04-18]. Dostupné online.  
  3. LOVEALL, John. Storage improvements in Windows Vista and Windows Server 2008 [PowerPoint]. Microsoft Corporation, [cit. 2007-09-04]. Dostupné online.  
  4. Richard Russon and Yuval Fledel. NTFS Documentation [online]. [cit. 2007-07-01]. Dostupné online.  
  5. a b c d Microsoft Corporation. How NTFS Works [online]. [cit. 2008-01-27]. Dostupné online.  
  6. Přesněji je to 32767 resp. 255 kódů v unikódovém kódování UTF-16. Některé neobvyklé a řídce se vyskytující znaky vyžadují dva kódy.

Externí odkazy[editovat | editovat zdroj]