NTFS - 有限会社イハラ|WinSyslog・EventReporter

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