NT File System

NTFS
開発者 Microsoft
正式名 NT File System
導入 1993年7月 (Windows NT 3.1)
パーティション識別子 0x07 (MBR)
EBD0A0A2-B9E5-4433-
87C0-68B6B72699C7
(GPT)
構造
ディレクトリ B+木
領域管理 ビットマップ/Extents
不良ブロック ビットマップ/Extents
限度
最大ファイル サイズ (実装上)16TiB
(理論上)16EiB
最大ファイル数 232 (4,294,967,295)
最大ファイル名長 255文字
最大ボリューム サイズ (実装上)256TiB
(理論上)264-1 クラスタ
ファイル名の文字 一文字以上,
/, \(表示は\または¥), *, :, ?, <, >, ", | 以外使用可能
特徴
タイムスタンプ アクセス,
作成,
修正,
POSIX変更
日付範囲 1601年1月1日 - 60056年5月28日
日付解像度 100ナノ秒
フォーク 可能
属性 読み取りのみ (R),
隠し (H),
システム (S),
アーカイブ (A)
パーミッション ACL
透過的圧縮 ファイル毎, LZ77
透過的暗号化 ファイル毎,
DESX: (Windows 2000)
トリプルDES: (Windows XP)
AES: (Windows XP SP1, Windows Server 2003以降)
対応OS Windows NT 3.1から4.0,
Windows 2000,
Windows XP,
Windows Server 2003,
Windows Vista,
Windows Server 2008,
Windows 7
  

NT File System (NTFS) とは、Windows NT系OSの標準ファイルシステム

目次

[編集] NTFSの歴史

[編集] バージョン

  • NTFS v1.0
  • NTFS v1.1
  • NTFS v1.2 (v4.0) - NT 3.51とNT 4.0まで使用されたバージョン
  • NTFS v3.0 (v5.0) - 2000で使用されたバージョン
  • NTFS v3.1 (v5.1) - XP以降で使用されているバージョン

括弧内はそれぞれが実装されたWindows NTのバージョン。NTFSのバージョンとして呼ばれることがある。

[編集] 互換性

Windows NT 4.0のNTFS 1.2とWindows 2000/XP以降のNTFS 3.xは互換性が無く、Windows NT 4.0上からWindows 2000/XP以降で作成したNTFSボリュームにアクセスするには、Service Pack 4以上を適用する必要がある。また、2000以降で自身以前のバージョンのNTFSにアクセスするとその時点で自身のバージョンに変換する。

PC/AT互換機パーティションテーブルIDがOS/2HPFSと同じであるため、登場当初は一部ディスクユーティリティが誤動作を起こす事があった。

[編集] NTFSの特徴

大容量化
1ボリューム当たりのサイズの推奨最大サイズは2TiBであるがそれ以上のファイルシステムも作成可能である(理論的には264-1 クラスタまで可能だが、コンピュータの性能上制限してある)。
検索の高速化
ファイルの管理は B+木で行われ、大量のファイルが存在していても、検索やアクセス速度の低下が少ない。
ロングファイルネーム
MS-DOSのファイル名8バイト+拡張子3バイトから、ファイル名・拡張子にとらわれず、UNICODEで255文字のファイル名がつけられる様になった(ドットもファイル名の一部となった)。ディレクトリ深さを制限する最大パス長も255バイトから32767文字に変更された。
POSIXサポート
アメリカ合衆国政府のコンピュータ納入の条件としてPOSIXサポートが必須条項であったため、NTFSはPOSIX.1仕様の環境を提供する。これには、ファイルやディレクトリ名の大文字小文字の区別やアクセス権、ハードリンクや互換性を持つタイムスタンプのサポートが含まれる。Vistaからは、POSIX.1に加えて公式にシンボリックリンクもサポートした。
代替データストリーム(マルチデータストリーム)
NTFSは、一つのディレクトリエントリに対して、複数のデータストリームを持つことができる。これはMacintoshで使われるHFS+におけるマルチフォークに相当する機能で、ファイルの概要情報やアクセス制御リストなどはこの機能を利用してディレクトリエントリに結び付けられている。

[編集] 頑健性とセキュリティ

堅牢性の向上
突然の電源停止などの障害が発生した場合、トランザクションログから、実行した処理をロールバックし、ファイルシステムの不整合を発生させないジャーナルファイルシステムをサポートしている。
耐障害性
ハードディスク内のエラーセクタ、不良セクタを認識する。以降そのセクタを含むクラスタへのアクセスは別のクラスタへリマップされるようになる。冗長性のあるダイナミックボリュームで使用していなかった場合、不良セクタにあったデータは回復されない。
セキュリティの向上
各ファイルやディレクトリごとにACLによるアクセス権の設定が可能である。また、ファイルアクセスの監視を行う設定も可能である。
クォータ
Windows 2000以降のNTFSは、各ユーザごとのディスクの使用量の上限を設定できる。Windows Server 2003 R2からは、ディレクトリごとのディスクの使用量の上限を設定することができるようになった。
暗号化
Windows 2000以降のNTFSはEFSをサポートし、NTFSボリューム上のファイルやフォルダの透過的な暗号化をサポートしている。これは圧縮機能の一実装であり、暗号化されたファイルやフォルダは常に圧縮されている。暗号化を利用した場合、自分自身の証明書を失うとシステム管理者を含め誰も永久にアクセスできなくなる。
スナップショット
Windows XPおよびWindows Server 2003以降では「シャドーコピーサービス」と称するスナップショット機能が導入[1]された。Windows付属のバックアップユーティリティはシャドーコピーサービスを利用しており、ある時点のボリュームの状態を正確にバックアップできる。またWindows Server 2003やVistaにおいては、シャドーコピーサービスによってファイルの世代別保存を実現する。[2][3]
変更ジャーナル
ファイルに対する変更を記録する。

[編集] 容量効率の向上

圧縮等より、容量の利用効率が向上している。

Windows NT 3.51からサポートされたファイル圧縮をNTFSもサポートしている。LZ77アルゴリズムを使用したファイル単位での透過的な圧縮をサポートし、ディスクの空き領域を拡張できる。

くわえて、スパースファイルもサポートする。ファイルの一部が0で埋められている場合、アロケーションユニットサイズ単位で0で埋められている領域をスキップし、ディスク容量を節約する。これはデータベースのハッシュテーブルファイルや仮想マシンモニタの仮想ハードディスクファイルなど大部分が0で埋められているファイルで有効に働く。

NTFSはアロケーションユニットサイズをボリュームのサイズに関係なく設定する事ができる。小さなファイルを大量に収納する用途であれば、最小のアロケーションユニットサイズ512バイトを選択する。ファイル数は少ないが巨大なファイルを格納したいと思うなら、最大64KiBのアロケーションユニットサイズを選択できる。これにより、フラグメンテーションの問題、管理領域とデータ領域の比率など、ファイルシステム性能を左右するトレードオフを解決する。ただし、16TiBを超えるボリュームには4KiBを超えるアロケーションユニットサイズが必要になり、その場合圧縮機能が利用できない。

[編集] 後方互換性

仮想DOSマシン上で動作するソフトウエアに対して、ファイルシステム上でユニークなパス名である事を保証した8.3形式ファイル名を保存する事ができる。この機能は任意にオン・オフする事が出来るのでNTFSのファイルシステム最適化の代表的なものとされるが、非推奨の変更である。

原則としてファイル名の大文字小文字は区別されるが、サブシステムがこの機能の有効無効を選択している。Win32サブシステムではファイルの大文字小文字は区別されず、大文字小文字が異なるファイルを上書きした場合最後に使われたファイル名が保存される。POSIX・Interixサブシステムでは大文字小文字は区別され、大文字小文字が異なるファイルは上書きされず別のファイルとして保存される。

さらに高度な応用としてファイルシステムフィルターを備え、ファイルシステム機能やファイルシステム上の名前空間を任意のソフトウエアでオーバーライドできる。この機能をもとに圧縮機能・暗号化機能・ファイル変更ジャーナル・スナップショット機能・クオータ機能をサブシステムを含むユーザープロセスからは何ら変更の無いアクセスで利用できる透過的な実装が行われた他、サードパーティによるファイルシステムへのフォレンジック監査の実装等に活用されている。

[編集] チェックと修復

NTFSの論理エラーまたは物理エラーの確認コマンドとして、「chkdsk <対象ドライブ>」コマンドが用意されている[4]

実際にNTFSの修復を行うには、「chkdsk /f <対象ドライブ>」とし、さらに不良クラスタの修復を試みるには、「chkdsk /r <対象ドライブ>」を実行する。

また、NTFSはMFTの「$BadClus」ファイルに不良クラスタの情報を記録しているため、不良クラスタを含むパーティションをパーティションコピーツールなどで丸ごと他の新ハードディスクにコピーすると、「$BadClus」ファイルもそのままコピーされてしまい、新ハードディスクには不良クラスタが存在しないにもかかわらず、chkdskによって不良クラスタが確認されてしまうことがある。これを修復してリセットするには、「chkdsk /b <対象ドライブ>」を実行する(ただしWindows VistaまたはWindows Server 2008以降のみ)。

注意すべき点なのはNTFSのバッドクラスタ($BadClus)SMARTバッドセクタ全くの別物である。

なお、chkdskによるNTFSの修復により、ディスクエラーの状況が悪化する場合があるため、修復の前に重要なファイルはバックアップしておくことが推奨される。

chkntfsコマンドを使用することで、Windows起動時に自動的にchkdskを実行したり、自動実行をキャンセルすることができる[5]

[編集] 欠点

[編集] フラグメンテーション

フラグメンテーションの量はアロケーションユニットサイズに反比例し、最も小さなアロケーションユニットサイズ512バイトで最も顕著になる。マイクロソフトはNTFS発表当初フラグメンテーションは発生しにくいと主張していたが、FAT32よりは低いもののフラグメンテーションは発生する。

Executive Software(現在はDiskeeper Corporation)がNTFS用のデフラグメンテーションソフトウエアDiskeeperを開発しフラグメンテーション度合いを表示する機能からNTFSはフラグメンテーションが起きる事を一般に知らしめた。

Windows2000以降で搭載されているOS標準のデフラグツールは、このDiskeeperの簡易版である。

[編集] 未サポートの機能

  • ボリュームをマウント状態にしたままでメンテナンスする事ができない。
  • POSIX.1仕様ではシンボリックリンクが明記されていないことから、シンボリックリンクをサポートしていない。その代わり、ジャンクションという類似の機能があるが、これはボリューム・フォルダに対してのみ提供される。ハードリンクはサポートされており、Windows XPではコマンドラインから操作できる。Windows Vistaからシンボリックリンクにも対応するようになった。ジャンクションやシンボリックリンクは、リパースポイントと呼ばれる機能によって実現されている。

[編集] NT系OS以外からのアクセス

[編集] 直接

NTFSは元々Windows NT系OSにおけるサーバ用途を目的として開発されたファイルシステムであり、MS-DOSから使われてきたFATと互換性を持たない。そのため、クライアントOSであるWindows 9x系列からのアクセスはできない。その後のWindows XP以降ではHome Editionのような家庭向けパッケージでもNTFSが採用されるようになったが、これは従来のFATがセキュリティや機能面で劣るためと考えられる[6]

Windows上では規模を拡大するNTFSだが、マイクロソフトの戦略やセキュリティにより、その仕様が一般には公開されていないという問題がある。このため、他のOSからNTFSを「安全確実に」読み書きすることは事実上不可能である。しかし、現在では有志によって不完全ながらもNTFSにアクセスするための手段が用意されている。以下のものは、PCに直接接続されたNTFSドライブ(USB接続の外付けHDD含む)にアクセスするためのソフトである。

mount
Mac OS XLinuxのカーネル2.4以降とFreeBSD等は、「mount -t ntfs」コマンドによって読み取りのみサポートしている。
NTFS-3g[7]
NTFS-3gは、NTFSパーティションの読み書きに対応。各Linux、FreeBSD、Mac OS X、BeOS上で動作する。オープンソースかつフリー。実際にはユーザアクセス手段の実装であるFilesystem in Userspace(FUSE)も併せてインストールする必要がある。
Captive NTFS[8]
Captive NTFS は、NTFSパーティションの読み書きに対応。使用するにはWindows内のドライバが必須。
NTFS for Windows98[9]
NTFS for Windows98 は、Windows98からNTFSにアクセスするソフトであったが、Windows9x系サポート終了に伴い提供を終えた。
partimage[10]
partimage は、パーティションのイメージを作成するツールである。Linux上で動作する(KNOPPIXやSystemRescueCdなどに同梱されている)。NTFS領域のイメージ作成・復旧に不完全ではあるが対応している。ただし操作性には少々慣れが必要であり、またイメージからファイルを単体で抽出することはできない。使用する前にはデフラグを行うことが推奨されている。またNTFS圧縮機能を解除しておく必要がある。
ntfsclone[11]
ntfscloneは、ntfsに特化したパーティションイメージを作成するツールである。「--rescue」オプションを付加することで、不良セクタを読み飛ばしてイメージの作成が可能である。
市販のパーティションイメージ作成ソフト
多くがNTFSパーティションの読み書きをサポートする。またイメージの中からファイルを抽出できたり、WindowsのようなGUIで操作できるものもある。市販ツールでは、プラットフォームにWinPEを採用することでNTFS対応やGUI処理を解決している場合がある。
市販のアクセスドライバソフト
「Paragon NTFS for Mac OS X 7」(ネットジャパン)[1] Mac OS X 10.4.11 以降対応。

[編集] 間接

NT系OS以外からの直接的なNTFSドライブへのアクセスは、必ずしも安全が保証されているとは言えない。そのため、他OSからNTFS内のデータを読み書きする方法として、CIFSSMBによるネットワーク共有を使うことが考えられる。ただしこの場合、NTFS上の共有ファイルを他OSの方へコピーすれば、そのファイルはNTFS特有のアクセス権、ファイル圧縮、暗号化などの機能が解除されることに注意が必要である。

  • NTFSが動いているOS(つまりWindows)でファイル共有(役目としてはサーバ)設定を行い、LinuxやMac OSなどの他OS(役目としてはクライアント)からWindowsの共有フォルダへアクセスする、というネットワーク経由の間接的な方法が考えられる。
    • LinuxやFreeBSDなどは、mountコマンドでWindows共有フォルダをマウントできる。たとえば、mount -t smbfs -o username=administrator,password=xxx //192.168.0.2/data /mnt/data
    • GNOMEやKDEなどでは標準のファイラーを使ってWindowsネットワーク共有へアクセスすることができる。
    • Mac OS Xでは標準でWindowsファイル共有へ接続可能である[12]
  • Windows Services for UNIXを使い、NTFSをNFSとして公開する。ユーザーID、グループはNFSサーバによって変換される。アクセスコントロールリストはWindows側によって制御され適用されるが、NFSクライアント側からアクセスコントロールリストにアクセスする手段は存在しない。

[編集] 関連項目

  • マスターファイルテーブル(MFT)
  • WinFS

[編集] 脚注

[編集] 外部リンク

  • Windows Sysinternals NTカーネル及びNTFSに関するメンテナンスツールを提供している。 (英語)

最終更新 2010年3月4日 (木) 06:43 (日時は個人設定で未設定ならばUTC)。
【NT File System】変更履歴