一、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. 第一步:卸载手机上的“WIFI万能钥匙”! 会分享自己家的wifi

    http://www.znds.com/tv-164866-1-1.html 楼主今日家中WIFI卡的不行,心想,20M的电信光纤没理由这么卡!于是就在网上查找了许多资料,接下来统一收集整理给大家!第 ...

  2. Linux环境下OpenSceneGraph的安装和配置

    1.在GitHub上下载OpenSceneGrpah的源码包,地址. 2.解压缩源码包并进入源码包; 3.安装所需的依赖库: 先输入命令: sudo apt-get install openscene ...

  3. Python Challenge 关卡目录及解答过程

    第0关:http://www.pythonchallenge.com/pc/def/0.html 线索:试着改变URL的地址-->把图片中得到的数字输入到URL中 2**38 输出: 第1关:h ...

  4. unity碰撞检测(耗费性能)

    using System.Collections; using System.Collections.Generic; using UnityEngine; public class PengZhua ...

  5. 【笔记目录2】ASP.NET Core分布式项目实战

    当前标签: ASP.NET Core分布式项目实战 共2页: 上一页 1 2  11.ClientCredential模式总结 GASA 2019-03-11 12:59 阅读:26 评论:0 10. ...

  6. flex:1 内容不要撑开

    .content { flex: 1; overflow: hidden: }

  7. python opencv 生成验证码

    基本思路是使用opencv来把随机生成的字符,和随机生成的线段,放到一个随机生成的图像中去. 虽然没有加复杂的形态学处理,但是目前看起来效果还不错 尝试生成1000张图片,但是最后只有998张,因为有 ...

  8. android ListView列表显示数据

    item.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and ...

  9. netbean out of memory java heap space

    When run test file in netbean. all dependency and resource are right, but it raise up java.lang.OutO ...

  10. 对php引用的理解

    /** * 引用是符号表别名 */ // $a与$b指向同一个变量 $a = &$b; // 定义函数foo,参数为引用类型:&$var,无函数体 function foo(& ...