首页 | 公司简介 | 数据恢复 | 备份服务 | 成功案例 | 技术中心 | 客户服务 | 服务报价 | 数据恢复软件 | 联系我们 | 北亚博客  
 
  北京总部: 4006-505-646
  天 津 部: 4006-505-646
  上 海 部: 4006-505-646
  深 圳 部: 4006-505-646
  广 州 部: 4006-505-646
  重 庆 部: 4006-505-646
  南 京 部: 4006-505-646
  其它地区: 4006-505-646
北亚数据恢复软件Windows专业版
三星手机数据恢复软件V1.0
北亚苹果手机数据恢复软件V2.0
北亚硬盘录像机数据恢复软件 V
北亚vmware虚拟机数据恢复软件
北亚照片数据恢复软件
北亚摄像机数据恢复软件 v2.1
北亚Sybase数据库修复软件 V2.
raid磁盘阵列应急方案
HP EVA4400/6400/8400/P6000
iphone 通讯录丢失如何恢复?
xen server 存储库(sr)损坏后
RAID6结构原理详解(北亚数据
AIX下删除LV后的现场保护和数
RAID损坏后 对数据的完整备份
您当前的位置:首页 >> 技术中心 >> 文件修复文栏 >> 正文

探索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 文件系统的硬盘布局
返回首页 | 联系我们 | 关于我们 | 招聘信息 | 友情链接 | 网站地图 | 合作伙伴
版权所有 北京北亚宸星科技有限公司
全国统一客服热线:4006-505-646
北京总部:北京市海淀区永丰基地丰慧中路7号新材料创业大厦B座205室
京ICP备09039053

i t