NT File System
テンプレート:Infobox filesystem NT File System (NTFS) とは、Windows NT系の標準ファイルシステムである。
目次
歴史
バージョン
- NTFS 1.0
- NTFS 1.1
- NTFS 1.2 (4.0) - Windows NT 3.51とWindows NT 4.0で使用されたバージョン。
- NTFS 3.0 (5.0) - Windows 2000で使用されたバージョン。
- NTFS 3.1 (5.1) - Windows XP以降で使用されているバージョン。
括弧内はそれぞれが実装されたWindows NT系のバージョン。NTFSのバージョンとして呼ばれることがある。
互換性
NTFS 1.2とNTFS 3.xとの間には互換性が無く、Windows NT 4.0上からNTFS 3.xにアクセスするには、Service Pack 4以上を適用する必要がある。また、Windows 2000以降で、自身が使用しているバージョンよりも前のバージョンのNTFSにアクセスすると、その時点で自身が使用しているバージョンに変換する。
PC/AT互換機のパーティションテーブルIDが、HPFSと同じであるため、登場当初はディスク ユーティリティが誤動作することがあった。
特徴
- 大容量
- 1ボリューム当たりの推奨最大サイズは、2 TiBであるが、それ以上のファイルシステムも作成可能である(理論上は、264-1クラスタ[1]まで可能だが、コンピュータの性能上制限してある)。
- 検索の高速化
- ファイルの管理はB+木で行われ、大量のファイルが存在していても、検索やアクセス速度の低下が少ない。
- 長いファイル名
- MS-DOSの「ファイル名 8バイト + 拡張子 3バイト」から、ファイル名・拡張子にとらわれず、Unicodeで最大255文字のファイル名を付けることができるようになった(ドットもファイル名の一部となった)。
- POSIXサポート
- アメリカ合衆国政府のコンピュータ納入の条件としてPOSIXサポートが必須条項であったため、NTFSはPOSIX.1仕様の環境を提供する。これには、ファイル名やディレクトリ名の大文字と小文字の区別やアクセス権、ハードリンク、互換性を持つタイムスタンプのサポートが含まれる。
- 代替データ ストリーム(マルチ データ ストリーム)
- NTFSは、一つのディレクトリ エントリに対して、複数のデータ ストリームを持つことができる。これはMacintoshで使われるHFS+におけるマルチ フォークに相当する機能で、ファイルの概要情報やアクセス制御リストなどはこの機能を利用してディレクトリ エントリに結び付けられている。
頑健性とセキュリティ
- 堅牢性の向上
- 突然の電力供給停止などの障害が発生した場合、トランザクションログから、実行した処理をロールバックし、ファイルシステムの不整合を発生させないジャーナリングファイルシステムをサポートしている。
- 耐障害性
- ハードディスク内の不良セクタを動的に認識する。以降そのセクタを含むクラスタに対するアクセスは別のクラスタに代替されるようになる。冗長性のあるダイナミック ボリュームまたは記憶域スペースを使用していなかった場合、不良セクタにあったデータは回復されない。
- セキュリティの向上
- ファイルやディレクトリごとにACLによるアクセス権の設定が可能である。また、ファイルアクセスの監視を行う設定も可能である。
- ディスククォータ
- Windows 2000以降のNTFSは、各ユーザーごとのディスクの使用量の上限を設定できる。Windows Server 2003 R2からは、ディレクトリごとのディスクの使用量の上限を設定することができるようになった。
- 暗号化
- Windows 2000以降のNTFSは、テンプレート:仮リンクをサポートし、NTFSボリューム上のファイルとフォルダの透過的な暗号化をサポートしている。これは圧縮機能の一実装であり、暗号化されたファイルやフォルダは常に圧縮されている。暗号化を利用した場合、自分自身の証明書を失うとシステム管理者を含めて誰も永久にアクセスできなくなる。
- スナップショット
- Windows XPおよびWindows Server 2003以降では「テンプレート:仮リンク」(VSS) と称するスナップショット機能が導入された[2]。Windows付属のバックアップ ユーティリティ (NTBackup, Backup and Restore) はボリュームシャドウコピーサービスを利用しており、ある時点のボリュームの状態を正確にバックアップできる。Windows Server 2003 Service Pack 1以降のWindowsではChkdskにVSSを利用し正確なチェックが行えるようになり、本来なら修復が不要なボリュームをオフラインにせずに済むようになった[3]。また、Windows Server 2003やWindows Vistaにおいては、ボリュームシャドウコピーサービスによってファイルの世代別保存を実現する[4][5]。
- 変更ジャーナル
- ファイルに対する変更を記録する。
容量効率の向上
Windows NT 3.51からサポートされたファイル圧縮をNTFSもサポートしている。LZ77アルゴリズムを使用したファイル単位での透過的な圧縮をサポートし、ディスクの空き領域を増加させることができる。ただし、4 KiBを超えるアロケーション ユニット サイズでは圧縮機能を利用できない。
加えて、テンプレート:仮リンクもサポートする。ファイルの一部が0で埋められている場合、クラスタ単位で0で埋められている領域をスキップし、ディスク容量を節約する。これはデータベースのハッシュテーブル ファイルや仮想マシンの仮想ハードディスク ファイルなど大部分が0で埋められているファイルで効率よく働く。
NTFSには小さなファイルをファイルのメタデータと一緒にMFT内に収める機能がある。これはアロケーション ユニットを割り当てない事による若干の容量面のメリットとユーザーデータの読み取りにメタデータとは別のI/Oを必要としない速度面のメリットがある。
ファイル数は少ないが巨大なファイルを格納したいと思うなら、最大64 KiBのアロケーション ユニット サイズを選択できる。これにより、断片化の問題、管理領域とデータ領域の比率など、ファイルシステム性能を左右する問題を解決する。
NTFS圧縮やスパースファイルの使用、極度の断片化によるエクステント リストを使い切ってしまう状況に対応するためのオプションが有り、これの使用によって規定では1 KiBのファイルレコードを4 KiBまで増加させることができる[6]。副次的な効果としてMFT内に収められるユーザーデータも増加する。
なお、2010年時点でのNTFSの実装では、クラスタ数は232-1までとなっている。このため、16 TiBを超えるボリュームは、4 KiBを超えるアロケーション ユニット サイズを指定しなければならない。サポートされているアロケーション ユニット サイズは64 KiBまでである。したがって、NTFSボリュームは256 TiBまでの制限がある。また、OSのバージョンと容量によってはテンプレート:仮リンク機能に制限がある。
後方互換性
仮想DOSマシン上で動作するソフトウェアに対して、ファイル システム上で一意なパス名であることを保証した8.3形式ファイル名を保存することができる。この機能は任意に有効・無効を設定することができるので、NTFSのファイルシステム最適化の代表的なものとされるが、非推奨とされていた。Windows 7では有効・無効をボリューム単位で設定できるようになりシステムボリュームでは有効、データボリュームでは無効といった運用が可能となった。Windows 8ではパフォーマンス上の理由により8.3形式のファイル名は非推奨となり[7]システムボリュームを除き既定で無効となった。
原則としてファイル名の大文字小文字は区別されるが、サブシステムがこの機能の有効無効を選択している。Win32サブシステムではファイル名の大文字小文字は区別されず、ファイル名の大文字小文字が異なるファイルを上書きした場合は、最後に使われたファイル名のファイルが保存される。POSIX・Interixサブシステムではファイル名の大文字小文字は区別され、ファイル名の大文字小文字が異なるファイルは上書きされず別のファイルとして保存される。
さらに高度な応用としてファイル システム フィルターを備え、ファイルシステム機能やファイルシステム上の名前空間を任意のソフトウェアでオーバーライド(継承)できる。この機能をもとに圧縮機能・暗号化機能・ファイル変更ジャーナル・スナップショット機能・クォータ機能をサブシステムを含むユーザー プロセスからは何ら変更の無いアクセスで利用できる透過的な実装が行われたほか、サードパーティによるファイル システムに対するフォレンジック監査の実装などに活用されている。
チェックと修復
Windows NT系には、ファイルシステムの論理エラーまたは物理エラーの確認およびファイルシステムの修復コマンドとして、「chkdsk」コマンドが用意されている[8]。実際にファイルシステムの修復を行うには、「chkdsk 〈対象ボリューム〉 /f」を、不良クラスタの修復を試みるには、「chkdsk 〈対象ボリューム〉 /r」を実行する。
ファイル数の増加に伴う chkdsk の実行時間の増加に対しWindows 8では従来のメタデータの走査とエラーの修復の両方をボリュームをオフラインにして行う方式からメタデータの走査とエラーの記録をオンラインで行いエラーの修復のみをオフラインで行う方式に変えた為、ボリュームのダウンタイムはデータ量には依存しなくなった[9]。
また、NTFSはMFTの「$BadClus」ファイルに不良クラスタの情報を記録しているため、不良クラスタを含むパーティションをパーティションコピーツールなどで丸ごと他のハードディスクにコピーすると、「$BadClus」ファイルもそのままコピーされてしまい、新しいハードディスクには不良クラスタが存在しないにもかかわらず、chkdskでは不良クラスタが存在しているように見えることがある。これを修復してリセットするには、「chkdsk 〈対象ボリューム〉 /b」を実行する(ただし、Windows VistaまたはWindows Server 2008以降のみ)。
ファイルシステム上の不良クラスタとS.M.A.R.T.におけるバッドセクタは別物である。
なお、chkdskによるNTFSの修復により、ディスク エラーの状況が悪化する場合があるため、修復の前に重要なファイルはバックアップしておくことが推奨される。また、chkntfsコマンドを使用することで、Windows起動時に自動的にchkdskを実行したり、自動実行をキャンセルしたりすることができる[10]。
欠点
フラグメンテーション(断片化)
これはNTFSの欠点ではなく、ファイルシステムという仕組みの性質であるが、データの削除やデータサイズの増減を許容するファイルシステムでは、それら操作時の必要に応じてコンパクションを行わない限り、いずれかの段階でフラグメンテーションが発生する。 NTFSはFAT32と比較しフラグメンテーションしにくい。その根拠としてMFT機能が挙げられている[11]。 フラグメンテーションの量はアロケーション ユニット サイズに反比例し、最も小さなアロケーション ユニット サイズの512バイトで最も顕著になる[12]。
FATよりは軽度とされたそのフラグメンテーションの実体は、Diskeeperのレポート機能などによって一般に知られるようになった。Windows 2000からNTFS対応のデフラグ ツールがWindowsに標準搭載された。
機能制限
- Windows XPおよびそれ以前のWindowsでは、NTFSボリュームをマウント状態にしたままでメンテナンスすることができない。Windows Vista以降ではデフォルトでバックグラウンドメインテナンスが行われている。
- POSIX.1仕様ではシンボリックリンクが明記されていないことから、当初はシンボリックリンクをサポートしていなかった。その代わり、「ジャンクション」という類似の機能があるが、これはボリュームおよびフォルダに対してのみ提供される。Windows NT系ではハードリンクはサポートされており、Windows XPではコマンドラインから操作できる。Windows Vistaからシンボリックリンクにも対応するようになった。ジャンクションやシンボリックリンクは、リパース ポイントと呼ばれる機能によって実現されている。
Windows NT系以外からのアクセス
NTFSは元々、Windows NT系におけるサーバ用途を目的として開発されたファイルシステムであり、MS-DOSから使われてきたFATと互換性を持たない。そのため、クライアント向けのOSであるWindows 9x系からアクセスすることはできない。
Windows上では規模を拡大するNTFSだが、マイクロソフトの戦略やセキュリティにより、その仕様が一般には公開されていない。このため、他のOSからNTFSを「安全確実に」読み書きすることは事実上不可能である。しかし、現在では有志によって不完全ながらもNTFSにアクセスするための手段が用意されている。
- mount
- Mac OS X、Linuxカーネル 2.4以降と FreeBSDなどは、「mount -t ntfs」コマンドによって読み取りのみサポートしている。
- NTFS-3G[13]
- NTFS-3Gは、NTFSパーティションの読み書きに対応している。各種Linux、FreeBSD、Mac OS X、BeOS 上で動作する。オープン ソースかつフリーである。実際にはユーザー アクセス手段の実装であるFilesystem in Userspace (FUSE) も併せてインストールする必要がある。
- Captive NTFS[14]
- Captive NTFSは、NTFSパーティションの読み書きに対応。使用するにはWindows内のドライバが必須。
- NTFS for Windows98[15]
- NTFS for Windows98は、Windows 98からNTFSにアクセスするソフトであったが、Windows 9x系のサポート終了に伴い提供を終えた。
- 市販のアクセス ドライバ
- 「Paragon NTFS for Mac OS X」(ネットジャパン)Paragon NTFS for Mac OS X 8 Mac OS Xに対応している。
脚注
関連項目
- マスター ファイル テーブル (MFT)
- HPFS
外部リンク
- Windows Sysinternalsテンプレート:En icon - NTカーネルおよびNTFSに関するメンテナンス ツールを提供している。
- ↑ 512バイト/セクタかつ1セクタ/クラスタ、つまり512バイト/クラスタのとき、8 ZiB - 512 Bytes。
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ A heavily fragmented file in an NTFS volume may not grow beyond a certain size
- ↑ Windows Server 2012のサーバーマネージャーの新しいボリュームウィザード
- ↑ テンプレート:Cite web
- ↑ chkdsk の刷新と新しい NTFS 正常性モデルの追加
- ↑ テンプレート:Cite web
- ↑ [1]
- ↑ [2]
- ↑ テンプレート:Cite web
- ↑ Captive NTFSテンプレート:En icon
- ↑ NTFS for Windows98テンプレート:リンク切れ