NT File System
| NTFS | |
|---|---|
| 開発者 | マイクロソフト |
| 正式名 | NT File System |
| 導入 | 1993年7月 (Microsoft Windows NT 3.1) |
| パーティション識別子 | 0x07 (MBR)EBD0A0A2-B9E5-4433- (GPT) |
| 構造 | |
| ディレクトリ | B+木 |
| 領域管理 | ビットマップ/Extents |
| 不良ブロック | ビットマップ/Extents |
| 限度 | |
| 最大ファイル サイズ | (実装上) 16 TiB(Windows 7、Windows Server 2008 R2まで)、 256 TiB(Windows 8、Windows Server 2012[1]) (理論上) 16 EiB |
| 最大ファイル数 | 232-1 (4,294,967,295) |
| 最大ファイル名長 | 255文字 |
| 最大ボリューム サイズ | (実装上) 256 TiB (理論上) 264-1 クラスタ |
| ファイル名の文字 | Unicode。 ただし、/、\(表示は \または¥)、*、:、?、<、>、"、| は使用不可。 |
| 特徴 | |
| タイムスタンプ | アクセス、 作成、 修正、 POSIX変更 |
| 日付範囲 | 1601年1月1日 - 60056年5月28日 |
| 日付分解能 | 100ナノ秒 |
| フォーク | 可能 |
| 属性 | 読み取りのみ(R)、 隠し(H)、 システム(S)、 アーカイブ(A)、インデックスサービス非対象(I)、オフライン(O)、圧縮(C)、暗号化(E)、テンポラリ(T)、スクラビング非対象(X) |
| パーミッション | ACL |
| 透過的圧縮 | ファイル毎。LZ77。 |
| 透過的暗号化 | ファイル毎。 DES-X: (Windows 2000) トリプルDES: (Windows XP) AES: (Windows XP SP1、Windows Server 2003以降) |
| 重複排除 | 有り(Windows Server 2012のみ) |
| 対応OS | Windows NT系 |
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クラスタ[2]まで可能だが、コンピュータの性能上制限してある)。
- 検索の高速化
- ファイルの管理は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は、Encrypting File Systemをサポートし、NTFSボリューム上のファイルとフォルダの透過的な暗号化をサポートしている。これは圧縮機能の一実装であり、暗号化されたファイルやフォルダは常に圧縮されている。暗号化を利用した場合、自分自身の証明書を失うとシステム管理者を含めて誰も永久にアクセスできなくなる。
- スナップショット
- Windows XPおよびWindows Server 2003以降では「ボリュームシャドウコピーサービス」(VSS)と称するスナップショット機能が導入された[3]。Windows付属のバックアップ ユーティリティ(w:en:NTBackup、w:en:Backup and Restore)はボリュームシャドウコピーサービスを利用しており、ある時点のボリュームの状態を正確にバックアップできる。Windows Server 2003 Service Pack 1以降のWindowsではChkdskにVSSを利用し正確なチェックが行えるようになり、本来なら修復が不要なボリュームをオフラインにせずに済むようになった[4]。また、Windows Server 2003やWindows Vistaにおいては、ボリュームシャドウコピーサービスによってファイルの世代別保存を実現する[5][6]。
- 変更ジャーナル
- ファイルに対する変更を記録する。
容量効率の向上 [編集]
Windows NT 3.51からサポートされたファイル圧縮をNTFSもサポートしている。LZ77アルゴリズムを使用したファイル単位での透過的な圧縮をサポートし、ディスクの空き領域を増加させることができる。ただし、4 KiBを超えるアロケーション ユニット サイズでは圧縮機能を利用できない。
加えて、スパース ファイルもサポートする。ファイルの一部が0で埋められている場合、クラスタ単位で0で埋められている領域をスキップし、ディスク容量を節約する。これはデータベースのハッシュテーブル ファイルや仮想マシンの仮想ハードディスク ファイルなど大部分が0で埋められているファイルで効率よく働く。
NTFSは、アロケーション ユニット サイズ(クラスタサイズ)をボリュームのサイズに関係なく設定することができる。小さなファイルを大量に収納する用途であれば、最小のアロケーション ユニット サイズの512バイトを選択する。[要検証 ]ファイル数は少ないが巨大なファイルを格納したいと思うなら、最大64 KiBのアロケーション ユニット サイズを選択できる。これにより、断片化の問題、管理領域とデータ領域の比率など、ファイルシステム性能を左右する問題を解決する。 NTFS圧縮やスパースファイルの使用、極度の断片化によるエクステント リストを使い切ってしまう状況に対応するためのオプションが有り、これの使用によって規定では1 KiBのファイルレコードを4 KiBまで増加させることができる[7]。
なお、2010年時点でのNTFSの実装では、クラスタ数は232-1までとなっている。このため、16 TiBを超えるボリュームは、4 KiBを超えるアロケーション ユニット サイズを指定しなければならない。サポートされているアロケーション ユニット サイズは64 KiBまでである。したがって、NTFSボリュームは256 TiBまでの制限がある。また、OSのバージョンと容量によってはシャドウ コピー機能に制限がある。
後方互換性 [編集]
仮想DOSマシン上で動作するソフトウェアに対して、ファイル システム上で一意なパス名であることを保証した8.3形式ファイル名を保存することができる。この機能は任意に有効・無効を設定することができるので、NTFSのファイルシステム最適化の代表的なものとされるが、非推奨とされていた。Windows 7では有効・無効をボリューム単位で設定できるようになりシステムボリュームでは有効、データボリュームでは無効といった運用が可能となった。Windows 8ではパフォーマンス上の理由により8.3形式のファイル名は非推奨となり[8]システムボリュームを除き既定で無効となった。
原則としてファイル名の大文字小文字は区別されるが、サブシステムがこの機能の有効無効を選択している。Win32サブシステムではファイル名の大文字小文字は区別されず、ファイル名の大文字小文字が異なるファイルを上書きした場合は、最後に使われたファイル名のファイルが保存される。POSIX・Interixサブシステムではファイル名の大文字小文字は区別され、ファイル名の大文字小文字が異なるファイルは上書きされず別のファイルとして保存される。
さらに高度な応用としてファイル システム フィルターを備え、ファイルシステム機能やファイルシステム上の名前空間を任意のソフトウェアでオーバーライド(継承)できる。この機能をもとに圧縮機能・暗号化機能・ファイル変更ジャーナル・スナップショット機能・クォータ機能をサブシステムを含むユーザー プロセスからは何ら変更の無いアクセスで利用できる透過的な実装が行われたほか、サードパーティによるファイル システムに対するフォレンジック監査の実装などに活用されている。
チェックと修復 [編集]
Windows NT系には、ファイルシステムの論理エラーまたは物理エラーの確認およびファイルシステムの修復コマンドとして、「chkdsk」コマンドが用意されている[9]。実際にファイルシステムの修復を行うには、「chkdsk 〈対象ボリューム〉 /f」を、不良クラスタの修復を試みるには、「chkdsk 〈対象ボリューム〉 /r」を実行する。
ファイル数の増加に伴う chkdsk の実行時間の増加に対しWindows 8では従来の
- ボリュームはオンラインの状態でスナップショットを利用してエラーの有無のチェック
- (エラーが見つかった場合)
- ボリュームをオフラインにして
- エラーの有無のチェックからやり直し
- 見つかったエラーを修復
から
- ボリュームはオンラインの状態でスナップショットを利用してエラーの有無のチェック
- (エラーが見つかった場合)
- 見つかったエラーを $Corrupt ファイルに記録
- ボリュームをオフラインにして
- 記録されたエラーを修復
になり chkdsk の実行時間の大部分を占めるメタデータの走査をオフラインで行う必要がなくなりボリュームのダウンタイムはデータ量には依存しなくなった[10]。
また、NTFSはMFTの「$BadClus」ファイルに不良クラスタの情報を記録しているため、不良クラスタを含むパーティションをパーティションコピーツールなどで丸ごと他のハードディスクにコピーすると、「$BadClus」ファイルもそのままコピーされてしまい、新しいハードディスクには不良クラスタが存在しないにもかかわらず、chkdskでは不良クラスタが存在しているように見えることがある。これを修復してリセットするには、「chkdsk 〈対象ボリューム〉 /b」を実行する(ただし、Windows VistaまたはWindows Server 2008以降のみ)。
ファイルシステム上の不良クラスタとS.M.A.R.T.におけるバッドセクタは別物である。
なお、chkdskによるNTFSの修復により、ディスク エラーの状況が悪化する場合があるため、修復の前に重要なファイルはバックアップしておくことが推奨される。また、chkntfsコマンドを使用することで、Windows起動時に自動的にchkdskを実行したり、自動実行をキャンセルしたりすることができる[11]。
欠点 [編集]
フラグメンテーション (断片化) [編集]
これはNTFSの欠点ではなく、ファイルシステムという仕組みの性質であるが、データの削除やデータサイズの増減を許容するファイルシステムでは、それら操作時の必要に応じてコンパクションを行わない限り、いずれかの段階でフラグメンテーションが発生する。 NTFSはFAT32と比較しフラグメンテーションしにくい。その根拠としてMFT機能が挙げられている[12]。 フラグメンテーションの量はアロケーション ユニット サイズに反比例し、最も小さなアロケーション ユニット サイズの512バイトで最も顕著になる。[13]
FATよりは軽度とされたそのフラグメンテーションの実体は、NTFS用デフラグメンテーションソフトDiskeeperのレポート機能などによって一般に知られるようになった。Windows 2000以降のNT系Windows製品に標準搭載されているディスク デフラグ ツールは、Diskeeperの簡易版である。
機能制限 [編集]
- 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にアクセスするための手段が用意されている。以下のものは、PCに直接接続されたドライブ(USB接続の外付けハードディスクを含む)のNTFSボリュームにアクセスするためのソフトである。
- mount
- Mac OS X、Linuxカーネル 2.4以降と FreeBSDなどは、「mount -t ntfs」コマンドによって読み取りのみサポートしている。
- NTFS-3G[14]
- NTFS-3Gは、NTFSパーティションの読み書きに対応している。各種Linux、FreeBSD、Mac OS X、BeOS 上で動作する。オープン ソースかつフリーである。実際にはユーザー アクセス手段の実装であるFilesystem in Userspace (FUSE) も併せてインストールする必要がある。
- Captive NTFS[15]
- Captive NTFSは、NTFSパーティションの読み書きに対応。使用するにはWindows内のドライバが必須。
- NTFS for Windows98[16]
- NTFS for Windows98は、Windows 98からNTFSにアクセスするソフトであったが、Windows 9x系のサポート終了に伴い提供を終えた。
- Partimage[17]
- Partimageは、パーティションのイメージを作成するツールである。Linux上で動作する(KNOPPIXやSystemRescueCdなどに同梱されている)。NTFS領域のイメージ作成・復旧に不完全ではあるが対応している。また、イメージからファイルを単体で抽出することはできない。使用する前にはデフラグを行うことが推奨されている。またNTFSの圧縮機能を解除しておく必要がある。
- ntfsclone[18]
- ntfscloneは、NTFSに特化したパーティション イメージを作成するツールである。「--rescue」オプションを付加することで、不良セクタを読み飛ばしてイメージを作成することが可能である。
- 市販のパーティション イメージ作成ソフト
- 多くのものがNTFSパーティションの読み書きをサポートする。またイメージの中からファイルを抽出できたり、WindowsのようなGUIで操作できたりするものもある。市販ツールでは、プラットフォームにWindows PEを採用することで、NTFS対応やGUI処理を解決している場合がある。
- 市販のアクセス ドライバ
- 「Paragon NTFS for Mac OS X」(ネットジャパン)Paragon NTFS for Mac OS X 8 Mac OS Xに対応している。
間接アクセス [編集]
Windows NT系以外からNTFSボリュームに直接アクセスすることは、安全性が保証されていない。そのため、他OSからNTFSのデータを読み書きする方法として、SMBによるネットワーク共有を使うことが考えられる。ただしこの場合、NTFS上の共有ファイルを他OSの方にコピーすると、そのファイルは、NTFS特有のアクセス権・ファイル圧縮・暗号化などの設定が解除される。
- NTFSを使用しているサーバとなるWindows NT系でファイル共有の設定を行い、LinuxやMac OSなどのクライアントからWindowsの共有フォルダにアクセスするというネットワーク経由の間接的な方法が考えられる。
- Microsoft Windows Services for UNIXを使い、NTFSをNFSとして公開する。ユーザーIDとグループは、NFSサーバによって変換される。ACLは、Windows側によって制御され適用されるが、NFSクライアント側からACLにアクセスする手段は存在しない。
脚注 [編集]
- ^ [MS-FSA]: File System Algorithms 6 Appendix A: Product Behavior
- ^ 512バイト/セクタかつ1セクタ/クラスタ、つまり512バイト/クラスタのとき、8 ZiB - 512 Bytes。
- ^ “Volume Shadow Copy Service (Windows)” (英語). MSDN Library. マイクロソフト (2011年3月10日). 2011年5月7日閲覧。
- ^ “実行中の Chkdsk を強制終了する場合、アプリケーションイベントログに VSS エラー 12294 が記録されることがある”. マイクロソフト (2006年9月22日). 2013年2月6日閲覧。
- ^ “ストレージの管理に関する新機能”. マイクロソフト (2002年9月3日). 2011年5月7日閲覧。
- ^ “Windows Vista とのデータ整合性を維持するための選択されたシナリオ”. Microsoft TechNet. マイクロソフト. 2011年5月7日閲覧。
- ^ A heavily fragmented file in an NTFS volume may not grow beyond a certain size
- ^ Windows Server 2012のサーバーマネージャーの新しいボリュームウィザード
- ^ “Chkdsk” (英語). Microsoft TechNet. マイクロソフト (2007年9月). 2011年5月7日閲覧。
- ^ chkdsk の刷新と新しい NTFS 正常性モデルの追加
- ^ “[CHKNTFS.EXE] CHKNTFS.EXE の使用方法”. マイクロソフト サポート オンライン. マイクロソフト (2005年6月10日). 2011年5月7日閲覧。
- ^ [1]
- ^ [2]
- ^ “NTFS-3G at Tuxera” (英語). Tuxera. 2011年5月7日閲覧。
- ^ Captive NTFS(英語)
- ^ NTFS for Windows98[リンク切れ]
- ^ Partimage(英語)
- ^ “ntfsclone(8) - Linux man page” (英語). die.net. 2011年5月7日閲覧。
- ^ “Mac OS X:Windows ファイル共有 (SMB) に接続する方法”. アップル (2010年11月19日). 2011年5月7日閲覧。
関連項目 [編集]
- マスター ファイル テーブル(MFT)
- HPFS
外部リンク [編集]
- Windows Sysinternals(英語) - NTカーネルおよびNTFSに関するメンテナンス ツールを提供している。
|
||||||||||||||||||||||||||||||