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