NTFS


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

歴史 [編集]
バージョン [編集]

   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は、Encrypting File System(英語版)をサポートし、NTFSボリューム上のファイルとフォルダの透過的な暗号化をサポートしている。これは圧縮機能の一実装であり、暗号化されたファイルやフォルダは常に圧縮されている。暗号化を利用した場合、自分自身の証明書を失うとシステム管理者を含めて誰も永久にアクセスできなくなる。
スナップショット
   Windows XPおよびWindows Server 2003以降では「ボリュームシャドウコピーサービス(英語版)」(VSS)と称するスナップショット機能が導入された[2]。Windows付属のバックアップ ユーティリティ(w:en:NTBackup、w:en:Backup and Restore)はボリュームシャドウコピーサービスを利用しており、ある時点のボリュームの状態を正確にバックアップできる。また、Windows Server 2003やWindows Vistaにおいては、ボリュームシャドウコピーサービスによってファイルの世代別保存を実現する[3][4]。
変更ジャーナル
   ファイルに対する変更を記録する。

容量効率の向上 [編集]

Windows NT 3.51からサポートされたファイル圧縮をNTFSもサポートしている。LZ77アルゴリズムを使用したファイル単位での透過的な圧縮をサポートし、ディスクの空き領域を増加させることができる。ただし、4 KiBを超えるアロケーション ユニット サイズでは圧縮機能を利用できない。

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

NTFSは、アロケーション ユニット サイズ(クラスタサイズ)をボリュームのサイズに関係なく設定することができる。小さなファイルを大量に収納する用途であれば、最小のアロケーション ユニット サイズの512バイトを選択する。ファイル数は少ないが巨大なファイルを格納したいと思うなら、最大64 KiBのアロケーション ユニット サイズを選択できる。これにより、断片化の問題、管理領域とデータ領域の比率など、ファイルシステム性能を左右する問題を解決する。

なお、2010年時点でのNTFSの実装では、クラスタ数は232-1までとなっている。このため、16 TiBを超えるボリュームは、4 KiBを超えるアロケーション ユニット サイズを指定しなければならない。サポートされているアロケーション ユニット サイズは64 KiBまでである。したがって、NTFSボリュームは256 TiBまでの制限がある。また、OSのバージョンと容量によってはシャドウ コピー機能に制限がある。
後方互換性 [編集]

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

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

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

Windows NT系には、ファイルシステムの論理エラーまたは物理エラーの確認およびファイルシステムの修復コマンドとして、「chkdsk」コマンドが用意されている[5]。実際にファイルシステムの修復を行うには、「chkdsk 〈対象ボリューム〉 /f」を、不良クラスタの修復を試みるには、「chkdsk 〈対象ボリューム〉 /r」を実行する。

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

ファイルシステム上の不良クラスタとS.M.A.R.T.におけるバッドセクタは別物である。

なお、chkdskによるNTFSの修復により、ディスク エラーの状況が悪化する場合があるため、修復の前に重要なファイルはバックアップしておくことが推奨される。また、chkntfsコマンドを使用することで、Windows起動時に自動的にchkdskを実行したり、自動実行をキャンセルしたりすることができる[6]。
欠点 [編集]
フラグメンテーション (断片化) [編集]

これはNTFSの欠点ではなく、ファイルシステムという仕組みの性質であるが、データの削除やデータサイズの増減を許容するファイルシステムでは、それら操作時の必要に応じてコンパクションを行わない限り、いずれかの段階でフラグメンテーションが発生する。 NTFSはFAT32と比較しフラグメンテーションしにくい。その根拠としてMFT機能が挙げられている[7]。 フラグメンテーションの量はアロケーション ユニット サイズに反比例し、最も小さなアロケーション ユニット サイズの512バイトで最も顕著になる。[8]

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[9]
   NTFS-3Gは、NTFSパーティションの読み書きに対応している。各種Linux、FreeBSD、Mac OS X、BeOS 上で動作する。オープン ソースかつフリーである。実際にはユーザー アクセス手段の実装であるFilesystem in Userspace (FUSE) も併せてインストールする必要がある。
Captive NTFS[10]
   Captive NTFSは、NTFSパーティションの読み書きに対応。使用するにはWindows内のドライバが必須。
NTFS for Windows98[11]
   NTFS for Windows98は、Windows 98からNTFSにアクセスするソフトであったが、Windows 9x系のサポート終了に伴い提供を終えた。
Partimage[12]
   Partimageは、パーティションのイメージを作成するツールである。Linux上で動作する(KNOPPIXやSystemRescueCd(英語版)などに同梱されている)。NTFS領域のイメージ作成・復旧に不完全ではあるが対応している。また、イメージからファイルを単体で抽出することはできない。使用する前にはデフラグを行うことが推奨されている。またNTFSの圧縮機能を解除しておく必要がある。
ntfsclone[13]
   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の共有フォルダにアクセスするというネットワーク経由の間接的な方法が考えられる。
       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 ファイル共有に接続可能である[14]。
   Microsoft Windows Services for UNIXを使い、NTFSをNFSとして公開する。ユーザーIDとグループは、NFSサーバによって変換される。ACLは、Windows側によって制御され適用されるが、NFSクライアント側からACLにアクセスする手段は存在しない。