一、Volume和Cluster

卷(Volume)和簇(Cluster)是NTFS用来描述物理磁盘的单位。

卷之间是相对独立的,卷的概念其实就是分区(Partition)。

簇的引入是为了方便处理不同容量的卷,通常在格式化一个卷时,可以设定该卷的簇的大小的,默认值是根据卷的容量算出来的,容量越大,簇也划分得越大。

簇划分得很大,优点在于降低维护成本,缺点在于会造成一定的空间浪费。

二、NTFS与FAT的区别

FAT磁盘中会保留特别的区域,用来保存与文件系统相关的元数据,根据元数据的每一条记录的尺寸,可以具体分成多种子类型,比如FAT16、FAT32等等;

NTFS磁盘中没有这样特别的区域,而是把元数据也当成一个变通的文件对待,这样的好处在于,不必担心保留元数据的磁盘扇区物理损坏而造成的磁盘不可访问。

NTFS对每个文件都有一个security descriptor,即每个文件都可以定义自己的安全属性及访问属性,而在FAT文件系统是做不到的。

三、LCN与VCN

NTFS的管理单元是簇,磁盘的物理簇号(LCN)用来标识某个簇在磁盘中的位置,按照从0递增的顺序依次存放在磁盘上。

VCN是文件内部的逻辑簇号,一个文件数据太大,可能包含几个簇,那么会用逻辑簇号来标识某个簇在文件中的序号,这个VCN只在本文件内部有意义,一个文件的所有VCN不一定是物理上相连的,即它们对应的LCN可能散布在磁盘上。

一个VCN会映射到一个LCN。

四、MFT文件

里面保存着文件记录(File Record)的数据。每个文件记录大小固定为1KB。

通常,每个文件对应一个File Record,但是如果文件包含了太多的属性(Attribute),或者高度地碎片化(fragmented),那么可能需要多个文件记录来描述一个文件。

非常驻属性会将数据保存在run中,文件记录中会保存每个run的VCN到LCN的映射以及该run的长度,知道了这些,我们就可以把该文件的所有VCN映射到LCN上。

NTFS文件系统的更多相关文章

  1. linux如何编译安装新内核支持NTFS文件系统?(以redhat7.2x64为例)

    内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性.Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新.新的内核修订了旧内核 ...

  2. 详解NTFS文件系统

    一.分析NTFS文件系统的结构 当用户将硬盘的一个分区格式化为NTFS分区时,就建立了一个NTFS文件系统.NTFS文件系统同FAT32文件系统一样,也是用“簇”为存储单位,一个文件总是占用一个或多个 ...

  3. linux权限及ntfs文件系统权限的知识

    关于ntfs权限的问题 文件的权限: [-dcbps][u:rwx][g:rwx][a:rwx] 当中: r=4, w=2, x=1,  u=owner, g=group, a=all user   ...

  4. NTFS 文件系统解析

    1. windows 下磁盘文件读写 下面是读取D:\磁盘上的第0扇区 512 Bytes CreateFile()打开磁盘,获取文件句柄: SetFilePointer()设置读写的位置: Read ...

  5. Linux系统挂载NTFS文件系统

     今天尝试并成功的将一块500G的移动硬盘挂载到了RHEL5的系统上,甚感欣慰.想到也许以后自己或其他同学们会有类似经历,于是尽量细致的记录于此.     无论是一块安装了Windows/Linu ...

  6. NTFS文件系统详细分析

    NTFS文件系统详细分析 第一部分 什么是NTFS文件系统 想要了解NTFS,我们首先应该认识一下FAT.FAT(File   Allocation   Table)是“文件分配表”的意思.对我们来说 ...

  7. 1-18 编译安装内核支持ntfs文件系统

    大纲: 源码编译Linux内核 使用Linux内核模块 实战:编译一个NTFS内核模块,实现Linux挂载NTFS文件系统并实现读写功能 =============================== ...

  8. redhat6.5安装ntfs-3g rpm来支持ntfs文件系统挂载

    linux安装ntfs-3g模块来支持ntfs文件系统挂载 所需包 fuse-2.9.3.tar.gz ntfs-3g_ntfsprogs-2011.4.12.tgz step1. 解压fuse-2. ...

  9. 使用QFileInfo类获取文件信息(在NTFS文件系统上,出于性能考虑,文件的所有权和权限检查在默认情况下是被禁用的,通过qt_ntfs_permission_lookup开启和操作。absolutePath()必须查询文件系统。而path()函数,可以直接作用于文件名本身,所以,path() 函数的运行会更快)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Amnes1a/article/details/65444966QFileInfo类为我们提供了系统无 ...

  10. centos6.9使用NTFS-3G挂载ntfs文件系统

    centos6.9使用NTFS-3G挂载ntfs文件系统 工作中,难免需要到linux 系统上拷贝文件,但linux 自己不支持ntfs,下面就是解决问题的办法. NTFS-3G是一个开源软件,支持在 ...

随机推荐

  1. MongoDB 3.6 开启慢查询

    参考:Profiling Levels:支持一下级别.0 默认的profiler level,profiler 关闭并且不收集数据.1 profiler 收集超过slowms的操作数据.2 profi ...

  2. 转 Xshell ssh长时间连接不掉线设置

    1.Xshell客户端设置 2.服务器设置 vi /etc/ssh/sshd_config 把ClientAliveInterval 0和ClientAliveCountMax 3前的井号去掉,并把C ...

  3. java环境搭建与安装开发工具全教程

    当前端的后台搭档是做java后台时,这时就需要自己搭建一个java开发环境,和安装eclipse了. 那么,一般这些开发环境在一个开发团队中是统一的.正规完善的公司还会有自己软件库和安装配置文档.这时 ...

  4. 三、python之文件的处理

    1.文件的读取 1.1 读取整个文件 假设我们有一个叫做“hello.txt”的文件,文件内容如下: helloWorld helloPython helloJava 在该文件中,有三行字符串,接下来 ...

  5. [Java 教程 02] 开发环境搭建

    在上一篇文章对Java做了一个简单介绍之后,我想大家都已经对她有一个初步的认识了吧!那踏入正式学习使用Java之前,我们有一步是不得不做的,它是什么呢?没有错,就是我们本篇文章的标题所说,搭建Java ...

  6. Vue中组件间传值常用的几种方式

    版本说明: vue-cli:3.0 一.父子组件间传值 1.props/$emit -父组件==>>子组件: 子组件中通过定义props接收父组件中通过v-bind绑定的数据 父组件代码 ...

  7. 三、IIS通过目录方式部署以供外部调试

    一.IIS 下面是通过 gif 为 因项目是bin生成后的,非运行方式的调试,所以断点调试无效,仅修改文件后,右击项目重新生成解决方案即可,好处:启动快,坏处:不可以断点调试查看变量和分步执行语句.

  8. oldlinux

    http://oldlinux.org/Linux.old/ http://oldlinux.org/Book-Lite/

  9. log4j.xml配置详解(转)

    转自:http://willow-na.iteye.com/blog/347340 Xml代码 <?xml version="1.0" encoding="UTF- ...

  10. day02 html body中的标签

    day02 html   一.body中的标签     a标签: <!DOCTYPE html> <html lang="en"> <head> ...