查看“NTFS”的源代码
←
NTFS
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{Filesystems}} NTFS ('''New Technology File System''') 是Windows NT的原生文件系统。 它不仅基于[[HPFS]],还支持访问控制等安全功能。 因为Windows NT完全是Unicode,所以NTFS是Unicode文件系统,每个字符(例如名称)是16位而不是8位。 == 关于 == NTFS不仅为[[HPFS]]添加了安全功能。 在NTFS中,有更多的内置冗余。 例如: 在 [[HPFS]] 中,清除错误位置的扇区会使整个卷无法访问。 还增加了对文件的多硬链接(multiple hard-links)的支持(在NTFS之前,唯一容易访问的是通过POSIX子系统,但Windows 2000(NT 5)也将其添加到Win32)。 NTFS支持任意数量的文件分叉(与Mac OS非常相似,不同之处在于Mac OS始终为每个文件严格有2个分叉)。 [[HPFS]] 规定一个簇总是512字节长,并且一个簇总是一个扇区。 为了性能和与某些(尤其是日本)机器的兼容性,NTFS允许不同大小的扇区。 它还支持多个扇区的簇,这可能会提高性能。 简而言之,ntfs最重要的变化: * 更好、更安全。 * 指向一个文件的多硬链接。 * 任意数量的分叉。 * 可变的簇和扇区大小(通常会带来更好的性能)。 == 实现 == NTFS可能是最难处理的文件系统之一,尤其是因为缺乏黑客指导和可靠的文档。 自内核2.4以来,在Linux源代码库中可以找到一个只读的稳定驱动程序,而Linux 2.6附带了一个实验性的读写驱动程序。 NTFS-3G项目明显有一个针对Linux/FreeBSD/BeOS的读/写实现,目前处于“测试版”开发阶段。 == 结构 == NTFS格式是围绕“文件”表构建的,这些表允许操作系统存储和读取预定义属性和自定义属性。 NTFS引导扇区类似于其他文件系统,如FAT。 {| {{wikitable}} ! 字段 ! 类型 |- |JMP || int8_t[3] |- |OEM System || char[8] |- |Bytes Per Sector || uint16_t |- |Sectors Per Cluster || int8_t |- |Reserved Sector Count || uint16_t |- |Table Count || int8_t |- |Root Entry Count || uint16_t |- |Sector Count || uint16_t |- |Media Type || int8_t |- |Sectors Per Table || uint16_t |- |Sectors Per Track || uint16_t |- |Heads || uint16_t |- |Hidden Sector Count || uint32_t |- |Sector Count (32-bit) || uint32_t |- |Reserved || uint32_t |- |Sector Count (64-bit) || uint64_t |} 紧跟其后的是特定于NTFS的报头。 {| {{wikitable}} !字段 !类型 |- |Master File Table Cluster || uint64_t |- |Master File Table Mirror Cluster || uint64_t |- |Clusters Per Record || int8_t |- |Reserved || int8_t[3] |- |Clusters Per Index Buffer || int8_t |- |Reserved || int8_t[3] |- |Serial Number || uint64_t |- |Checksum || uint32_t |} 使用“主文件表簇(Master File Table Cluster)”和“每个簇的扇区(Sectors Per Cluster)”值,您可以找到主文件表。 此表包含文件系统中每个对象的条目,包括文件、文件夹和表本身。 主文件表中每个记录的大小可以使用启动扇区中的“每个记录的簇数(Clusters Per Record)”和“每个簇的扇区数(Sectors Per Cluster)”字段来计算。 每条记录都以相同的头结构开始。 {| {{wikitable}} ! 字段 ! 类型 |- |Record Type || char[4] |- |Update Sequence Offset || uint16_t |- |Update Sequence Length || uint16_t |- |Log File Sequence Number || uint64_t |- |Record Sequence Number || uint16_t |- |Hard Link Count || uint16_t |- |Attributes Offset || uint16_t |- |Flags || uint16_t |- |Bytes In Use || uint32_t |- |Bytes Allocated || uint32_t |- |Parent Record Number || uint64_t |- |Next Attribute Index || uint32_t |- |Reserved || uint32_t |- |Record Number || uint64_t |} 文件记录的其余部分包含此记录的其他表和数据。 “Attributes Offset”字段包含此记录的属性列表开头的字节偏移 (从记录的开头开始)。 属性的长度可变,但总是以相同的序列开头。 {| {{wikitable}} ! 字段 ! 类型 |- | Attribute Type || uint32_t |} 如果“Attribute Type”字段包含值0xFFFFFFFF,则标志着属性列表的结束。 否则,属性序列与属性 “记录” 的长度连续。 {| {{wikitable}} ! 字段 ! 类型 |- | Attribute Length || uint32_t |} 此长度值定义属性记录的总长度,包括 “Attribute Type” 和 “Attribute Length” 字段。 ==另见== === 外部链接 === * [https://flatcap.org/linux-ntfs/ntfs/index.html Guide to NTFS] * [https://www.writeblocked.org/resources/NTFS_CHEAT_SHEETS.pdf Cheat sheet] * [http://www.linux-ntfs.org/ The Linux NTFS project] * [http://www.ntfs-3g.org/ NTFS-3G Read/Write Drivers For Linux/FreeBSD/BeOS] * [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=fs/ntfs;hb=HEAD Linux fs/ntfs tree] * [http://www.opensource.apple.com/source/ntfs/ Apple Open Source NTFS site] [[Category:Filesystems]] [[de:NTFS]]
本页使用的模板:
模板:Filesystems
(
查看源代码
)
模板:If
(
查看源代码
)
模板:Show1
(
查看源代码
)
模板:SmallNavBox
(
查看源代码
)
模板:Wikitable
(
查看源代码
)
返回至“
NTFS
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
变体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息