NTFS 2004/05/24 伊原 秀明(Port139)
ダイナミック ディスク Windows 2000から導入された管理方法 固定ディスクで利用可能 パーティション タイプ 0x42 資料 http://linux-ntfs.sourceforge.net/ldm/ Logical Disk Manager (LDM) © Hideaki Ihara(Port139).
ボリューム ダイナミック ディスク上で作成が可能 © Hideaki Ihara(Port139).
スパン ボリューム 複数ディスクの未割り当て領域を結合 © Hideaki Ihara(Port139).
ストライプ ボリューム(RAID-0) 2台以上のディスク空き領域の組み合わせ © Hideaki Ihara(Port139).
ミラー ボリューム(RAID-1) 二つのダイナミックディスクへ複製 © Hideaki Ihara(Port139).
オンラインでddイメージを作成すると200Mとなる RAID-5ボリューム 3つ以上のダイナミック ディスクに ストライプ データを格納 オンラインでddイメージを作成すると200Mとなる © Hideaki Ihara(Port139).
ボリューム管理ツール Fsutil http://www.microsoft.com/technet/prodtechnol/winxppro/proddocs/fsutil.asp ドライブの確認 fsutil fsinfo drives ボリューム情報の確認 fsutil fsinfo volumeinfo C:\ © Hideaki Ihara(Port139).
パーティション・テーブル、MBR を確認する diskmap.exe(リソースキット) http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/diskmap-o.asp Diskmapコマンドはダイナミックディスクをサポートしない Fdiskコマンド(Linux) ※ダイナミック ディスク非対応?※ fdisl –lu /dev/hda © Hideaki Ihara(Port139).
Disk management database Basic と Dynamic の違い BASIC パーティション テーブル パーティション Dynamic パーティション テーブル PRIVHEAD パーティション(ボリューム) LDM データベース Disk management database 参照:http://linux-ntfs.sourceforge.net/ldm/overview/history.html © Hideaki Ihara(Port139).
$Boot ボリューム ブートセクタ(512byte) 0x EB 52 90 4E 54 46 52 20 20 20 20 … 保存されている情報 セクタ、クラスタサイズ ボリュームセクタ数(オフセット0x0028,Size8) ボリュームの最終セクタにもコピーされる jump NTFS 参照:http://linux-ntfs.sourceforge.net/ntfs/files/boot.html © Hideaki Ihara(Port139).
$Bootレイアウト File - $Boot (7) Offset Size Description 0x0000 3 Jump to the boot loader routine 0x0003 8 System Id: "NTFS " 0x000B 2 Bytes per sector 0x000D 1 Sectors per cluster 0x000E 7 Unused 0x0015 Media descriptor (a) 0x0016 0x0018 Sectors per track 0x001A Number of heads 0x001C 0x0024 4 Usually 80 00 80 00 (b) 0x0028 Number of sectors in the volume 0x0030 LCN of VCN 0 of the $MFT 0x0038 LCN of VCN 0 of the $MFTMirr 0x0040 Clusters per MFT Record (c) 0x0044 Clusters per Index Record (c) 0x0048 Volume serial number ~ 0x0200 Windows NT Loader ※http://linux-ntfs.sourceforge.net/ntfs/files/boot.htmlより引用
$Bootの位置 ボリューム総セクタ数 BASIC パーティション テーブル パーティション1 パーティション2 $ B o o t バックアップ © Hideaki Ihara(Port139).
オンラインでのボリューム複製 ddの if 引数として、論理ドライブを指定した場合、$Boot (オフセット0x28)に記述されているボリューム総セクタ数に従い読み取りが行われる ボリューム総セクタ数は、パーティション テーブルの値とは異なる(LDMなどを含まない) dd if=\\.\c: bs=512 conv=noerror 206847+0 records in 206847+0 record out ボリューム 総セクタ数 © Hideaki Ihara(Port139).
タイムスタンプの保存場所 タイムスタンプ(4つ) $STANDARD_INFORMATION (0x10) エントリの基本情報 属性 $FILE_NAME (0x30) ファイル名変更時にタイムスタンプを更新 ファイル名を変更 $STANDARD_INFORMATIONに最新のタイムスタンプが記録される $FILE_NAMEに変更時点のタイムスタンプが記録される © Hideaki Ihara(Port139).
タイムスタンプ 分解能 NTFSは 12:00 A.M. January 1, 1601 (UTC)からのインターバル,FAT はローカル時刻を記録 NTFS 分解能 1.作成日時 : 100ナノ秒 2.更新日時 : 100ナノ秒 3.アクセス日時 : 1時間 4.MFT ファイルレコード更新日時: 100ナノ秒 NT FAT 分解能 1.作成日時 : 10ミリ秒 2.更新日時 : 2秒 3.アクセス日時 : 1日 © Hideaki Ihara(Port139).
ディスクへ記録される時刻 “FAT はローカルの時刻をディスクに記録します。それに対し、NTFS は世界協定時刻(UTC)をディスクに記録するのでタイムゾーンまたは夏時間の変化による影響を受けません。” *プラットフォーム SDK GetFileTimeより引用 © Hideaki Ihara(Port139).
“最終アクセス日時”の取り扱い<NTFS> 最終アクセス日時は、最終書き込み日時、最終読み取り日時、最終実行日時(実行可能ファイルの場合)のいずれかに基づいて決定される *プラットフォーム SDK GetFileTimeより引用 NTFSでは、アクセス時刻の分解能は1時間 © Hideaki Ihara(Port139).
“最終アクセス日時”の取り扱い<FAT> “Windows NTのFATでは、作成時刻の分解能は10ミリ秒(ms)、最終更新時刻の分解能は 2 秒、最終アクセス時刻の分解能は1日(実質的にはアクセス日付)” *プラットフォーム SDK GetFileTimeより引用 JP402160 [NT] NTFSからFATへのファイルのコピー時に日時が変わる http://support.microsoft.com/default.aspx?scid=kb;ja;JP402160 © Hideaki Ihara(Port139).
更新の無効化 “最終アクセス日時”更新の無効化が可能 Windows NT Nonresponsive during NTFS Directory Traversal http://support.microsoft.com/default.aspx?scid=kb;en-us;Q150355 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem Value Name: NtfsDisableLastAccessUpdate Data Type : REG_DWORD Data : 1 パフォーマンスアップ目的で利用されているケースがある © Hideaki Ihara(Port139).
トンネリング機能 JP172190 [NT]Windows NT のファイル システム トンネリング機能 http://support.microsoft.com/default.aspx?scid=kb;ja;172190 © Hideaki Ihara(Port139).