首页 | 公司简介 | 数据恢复 | 成功案例 | 技术中心 | 客户服务 | 服务报价 | 联系我们 | 技术论坛  
 
  北京总部: 4006-505-808
  上 海 部: 021-58358765
  深 圳 部: 0755-83692929
  浙 江 部: 13666673722
  广 州 部: 020-83821091
  重 庆 部: 023-86870422
  福 建 部: 0591-83300680
  哈尔滨部: 13946167430
  其它地区: 4006-505-808

中国联通信息平台-HP-UX数据恢
中国石油管理局-Oracle数据库恢
工商银行山东分行-AIX删除LV数
濮阳市地方税务局-CHKDSK后数据
台湾HD公司-FreeBSD Nas无法启
promise乔鼎硬盘阵列数据恢复成
IBM EXP300 磁盘阵列数据恢复成
NAS 8100无法挂载数据卷

RAID损坏后 对数据的完整备份
LINUX FSCK数据出错灾难应急方
误删除、误格式化数据灾难应急
误GHOST、误一键恢复灾难应急方
磁盘未被格式化,是否格式化数据
raid磁盘阵列OFFLINE后的应急方
硬盘出现异响应急处理
您当前的位置:首页 >> 技术中心 >> 文件修复文栏 >> 正文

探索NTFS

 NTFS是Windows NT引入的新型文件系统,它具有许多新特性。本文旨在探索NTFS的底层结构,所叙述的也仅是文件在NTFS卷上的分布。NTFS中,卷中所有存放的数据均在一个叫$MFT的文件中,叫主文件表(Master File Table)。而$MFT则由文件记录(File Record)数组构成。File Record的大小一般是固定的,通常情况下均为1KB,这个概念相当于Linux中的inode。File Record在$MFT文件中物理上是连续的,且从0开始编号。$MFT仅供File System本身组织、架构文件系统使用,这在NTFS中称为元数据(Metadata)。以下列出Windows 2000 Release出的NTFS的元数据文件(我将要给出的示例代码的部分输出结果)。

  File Record(inode) FileName

  ------------------ --------

  0 $MFT

  1 $MFTMirr

  2 $LogFile

  3 $Volume

  4 $AttrDef

  5 .

  6 $Bitmap

  7 $Boot

  8 $BadClus

  9 $Secure

  10 $UpCase

  11 $Extend

 

  Windows 2000中不能使用dir命令(甚至加上/ah参数)像普通文件一样列出这些元数据文件。实际上File System Driver(ntfs.sys)维护了一个系统变量NtfsProtectSystemFiles用于隐藏这些元数据。默认情况下,这个变量被设为TRUE,所以使用dir /ah将得不到任何文件。知道这个行为后使用i386kd修改NtfsProtectSystemFiles后即可以列出元数据文件:

  kd> x ntfs!NtfsProtect*

  fe213498 Ntfs!NtfsProtectSystemFiles

  fe21349c Ntfs!NtfsProtectSystemAttributes

  kd> dd ntfs!NtfsProtectSystemFiles l 2

  fe213498 00000001 00000001

  kd> ed ntfs!NtfsProtectSystemFiles 0

  kd> dd ntfs!NtfsProtectSystemFiles l 2

  fe213498 00000000 00000001

  kd>

 

  D:\>ver

  Microsoft Windows 2000 [Version 5.00.2195]

 

  D:\>dir /ah $*

  驱动器 D 中的卷是 W2KNTFS

  卷的序列号是 E831-9D04

 

  D:\ 的目录

  2000-04-27 19:31 36,000 $AttrDef

  2000-04-27 19:31 0 $BadClus

  2000-04-27 19:31 67,336 $Bitmap

  2000-04-27 19:31 8,192 $Boot

  2000-04-27 19:31

$Extend

  2000-04-27 19:31 13,139,968 $LogFile

  2000-04-27 19:31 27,575,296 $MFT

  2000-04-27 19:31 4,096 $MFTMirr

  2000-04-27 19:31 131,072 $UpCase

  2000-04-27 19:31 0 $Volume

  9 个文件 40,961,960 字节

  1 个目录 51,863,552 可用字节

 

  需要指出的是ntfs.sys将元数据文件以一种特殊的方式打开,所以在打开NtfsProtectSystemFiles后,如果使用ReadFile等产生IRP_MJ_READ等IRP包时将会导致Page Fault(详见Gary Nebbett的《Windows NT/2000 Native API Reference》)。

 

  以上的讨论均是基于$MFT文件而讨论的,即基于$MFT中的File Record(inode)讨论的。为更好的继续以下的讨论,这儿我列出File Record Header的结构:

  typedef struct {

  ULONG Type;

  USHORT UsaOffset;

  USHORT UsaCount;

  USN Usn;

  } NTFS_RECORD_HEADER, *PNTFS_RECORD_HEADER;

  typedef struct {

  NTFS_RECORD_HEADER Ntfs;

  USHORT SequenceNumber;

  USHORT LinkCount;

  USHORT AttributesOffset;

  USHORT Flags; // 0x0001 = InUse, 0x0002 = Directory

  ULONG BytesInUse;

  ULONG BytesAllocated;

本新闻共5页,当前在第1页  1  2  3  4  5  

上一篇:drawing interchange and file formats release 12(AutoCAD DXF 12.0版文件格式说明)
下一篇:Ext2 文件系统的硬盘布局
返回首页 | 联系我们 | 关于我们 | 招聘信息 | 友情链接 | 网站地图 | 合作伙伴
版权所有 北京北亚数据恢复中心
24小时免费咨询电话:4006-505-808 或 800-810-5880
中关村部:北京市海淀区中关村大街11号E世界A座832B室
皂君庙部:北京市海淀区学院南路68号吉安大厦C座(汇智楼)528室
京ICP备06061795