主文件系统 vs 二级文件系统 (微软篇)

U盘格式化选NTFS还是exFAT?实测3种文件系统速度与兼容性对比(含Mac/Win双平台方案) 本文详细对比了U盘格式化时NTFS、exFAT和FAT32三种文件系统的速度与兼容性,特别针对Mac/Win双平台使用场景。通过实测数据揭示各系统在单文件大小限制、跨平台读写性能等方面的差异,帮助用户根据影视创作、系统维护等不同需求做出最优选择。 阅读详情

本文主要基于FAST11和FAST12的两篇论文:A study of practical deduplication和Characteristics of backup workloads in production systems。前者来自微软,主要分析的是用于主存储系统的文件系统;后者来自EMC,分析的是用于二级存储系统(如备份、归档)的文件系统。两篇论文共同的特点是实验的数据集都非常庞大,因此分析的结果对于系统设计具有参考价值。而且从数据中我们也可以发现主存储系统和二级存储系统在使用方式等方面有很多区别。

先来看看微软的实验。

1. 实验方法

作者的数据来源是微软员工(包括开发、测试、管理、销售、支持等各种角色的员工)正在使用的PC机,包括857个文件系统,共162TB的数据。这些参与测试的员工都是随机选出来的,每个人的PC上都会安装一个文件系统扫描器,扫描器在09年9月18日至10月16日期间每礼拜自动运行一次,共运行了四次。

扫描器运行的时候会对文件系统创建快照,接着:记录文件系统自身的元数据,包括容量、利用率等;分析每一个文件,将文件元数据(路径、文件名、后缀等)写入日志;记录检索指针和分配指针,依次用于分析文件系统的碎片情况和稀疏度;记录整个系统的信息,包括硬件信息、软件配置信息、碎片整理程序上次的运行时间。

在扫描的过程中,扫描器分别使用两种分块算法(定长分块和基于Rabin指纹的变长分块)和四种块长(8KB、16KB、32KB、64KB)将文件分块,并且计算每个数据块的指纹。除了读取文件的正常数据外,作者还用BackupRead API(该函数用于备份文件)读取文件的一些元数据。指纹算法用的是MD5,但是为了减少数据集规模,指纹被截断为6个字节(MD5摘要为16个字节)。使用8KB平均块长的Rabin分块算法会产生最多的指纹(768M个指纹),作者预期大约2000个指纹(占0.0003%)会由于截断指纹而被误判(猜测了下作者的计算方法:假设MD5摘要截断后的6字节摘要是完全随机分布的,那么1对数据块碰撞的概率为1/2^48,那么碰撞指纹数的期望大约是1/2^48*(768M*768M/2)*2=2000个,这应该是期望的上限)。

每周一个随机的晚上,会有另外一个进程将日志文件上传到作者的服务器上。大日志文件相比小日志文件更容易不完整传输,因此大日志文件更容易被排除在分析数据外,这就导致数据有一些偏差:大文件系统以及小块长分块的日志文件更容易丢失。

最终收集到的数据集经过压缩有4.12TB,导入数据库需要很长的时间。作者注意到非重复数据块的指纹对于分析是无用的,可以删去进行优化。为了找出这些无用的指纹,作者遍历了两遍数据集。第一次遍历,每遇到一个指纹就插入bloom filter A中,如果该指纹已经存在,就将其插入bloom filter B。第二遍扫描,不在bloom filter B中的指纹可以被判断为非重复指纹(只被引用一次)。虽会漏掉部分非重复指纹,但并不影响实验结果。

2. 文件系统元数据

2.1 文件系统

图1 文件系统容量

图1是微软实验文件系统容量的累计密度函数,平均容量为194GB。与2000年和2004年的实验结果相比,容量上升趋势明显,基本遵从物理磁盘容量每年翻番的规律。

图2 文件系统利用率

虽然容量自2000年来上升了2个数量级,文件系统的利用率却轻微下跌了,目前平均利用率为43%,而2000年是53%。如图2所示,现在50%的用户存储利用率不超过40%,当然也有15%的用户存储利用率超过70%。用户的空闲存储空间是一笔可观的资源。

图3 文件数和目录数

图3所示是文件系统中的文件数和目录数,相比前几年出现显著增长,平均有225K个文件和36K个目录。

图4 目录文件数


图5 目录子目录数

另一方面,图4显示了每个目录包含的文件数变化趋势,可以看到出现了轻微下降,平均每个目录包含6.25个文件。而图5中,一个目录所包含的子目录数也出现了轻微下降,这意味着目录树结构变的更深了。

图6 目录深度和字节数的关系

图7 目录深度和文件数的关系

图6展示了目录深度和存储之间的关系,在五级目录之后存储的字节数出现了大幅下降,大部分数据存储在五级目录之上。图7展示了目录深度和文件之间的关系,结合图6可以发现深层次目录的文件要比高层次目录的文件小一些。

作者还分析了磁盘的碎片情况。早年的研究表明,由于磁盘碎片,文件系统的性能会越来越差,然而现在碎片的问题得到了显著改善,大约只有4%的文件出现了碎片的情况。碎片倾向于聚集在一些文件里,25%的碎片出现在有170+碎片的文件,碎片最严重的文件是日志文件。

2.2 文件

图8 文件大小

文件大小的分布几乎没有变化,文件平均大小仍是4KB,这个数据至少从1981年开始就没有变化了。仔细观察,实际上4KB大小左右的文件增多了,而且512KB至8MB的文件也增多了。


图9 字节分布

图9告诉我们大多数字节存储在什么样的文件里了。大多数字节存储在大文件里,即使大文件数量不多,这启发我们设计重复数据删除时,应该更加重视大文件,而小文件不仅占用资源较多,而且提供的压缩率很少。

图10 文件修改时间

图10展示了文件的修改时间,大部分文件的修改时间是1月到1年以前,大约20%的文件在最近一个月被修改了。最右边的图比较了文件修改时间和文件系统的寿命,x轴表示文件自上次修改以来的时间除以自文件系统上次格式化以来的时间,超过100%的文件表示这些文件在安装文件系统之前就存在了,是复制过来的;在100%附近有一个凸起,代表了安装系统过程修改的文件;0%至100%的曲线逐渐下降。

图11 最流行的后缀名

图11显示了最流行的10个后缀名,现在后缀名的种类更加多样了,最流行的10个后缀名占据了文件总数的45%,而2000年这个数字是50%。

图12 最消耗存储的后缀名

图12显示了10个最消耗存储的后缀名。无后缀名的文件所占比重增长明显,取代dll文件拔得头筹;VHD和ISO文件是磁盘镜像文件,增长迅速,但不及lib文件;最后,这top 10后缀名所占比重比往年上升15%左右。

3. 重复数据删除

虽然单位存储价格显著降低了,但是企业的存储总成本却不断上升,因此重复数据删除技术得到越来越多的关注。作者选择了一个礼拜的数据,采用不同分块参数(算法、块长),评估算法和块长对重删率的影响。作者引入了重删域的概念,在不同域的文件系统是独立进行重删的,域的大小也是实验参数之一。比如域等于1表示每个文件系统单独进行重删,域为“Whole Set”表示全部857个文件系统共同重删,作者测试了不同大小的域(大小为1~857之间2的幂,1,2,4……)的重删率。

图13 分块算法和块长对重删率的影响

图13显示了分块算法、平均块长对重删率的影响,y轴是重删后的存储大小除以重删前的存储大小,因此越小重删率越高。域的大小为"Whole Set",其它更小域的曲线也与此类似。文件级重删不受块长影响,所以是一条直线。可以看到基于Rabin指纹的变长分块重删率最佳,分块越小重删率越好。

图14 域大小对重删的影响

图14是不同域大小对重删率的影响,重删率几乎随着log(域大小)增长线性改善。比较图13和14,作者认为域大小的选择对重删率的影响要大于分块算法和块长的影响,甚至也要大于重删选择文件级还是块级的影响。采用平均块长为8KB的rabin分块算法,比文件级重删多删除了18%~20%的数据;而块长8KB的定长分块算法,比文件级重删多删除10%~11%的数据,作者认为这相比于变长/定长块级重删带来的性能开销和复杂度,是不划算的,主存储系统是否需要块级重删值得商榷。作者接着对文件级重删进行了分析。

表1 文件级重删与后缀的关系

表1是文件级重复数据的最多的15种文件,各自对重删的贡献率以及平均文件大小。这是”Whole Set“的实验结果。结果显示重复文件主要是二进制文件:dll,lib,pdb,exe,cab,msp和msi一共贡献了58%的重复数据。

图15 文件级重删,文件大小与重删数据量的关系

图15显示了文件级重删中,重复数据与文件大小的关系。看起来重复数据大多在小文件里,大文件如磁盘镜像,很少会出现完全重复的文件,这在表1中也可以看出来。接着作者对块级重删也进行了类似分析。

表2 块级重删,后缀名与重删率

表2是块级重删中,重复数据与后缀名的关系,包括了定长和变长两种分块,平均块长都是8KB,”Whole Set“数据集。对于两种分块算法,最大重复数据来源都是vhd(virtual hard drive)文件,这些文件存在大量重复数据,但同时又很少完全重复,可以说是块级重删优势的最大来源吧。之后的四种文件都是编译器输出文件,这些文件存在块偏移的问题,它们的内容可能相同,但是头部数据(时间戳等)不同,导致定长分块的重删率下降。

4 总结

用于主存储系统的文件系统容量在不断增大,利用率基本不变;大多数文件是小文件,但是大多数字节存储在大文件中,平均文件大小是318KB,大多数文件只会写一次,暗示了读操作多于写操作;目录树结构变深;后缀名呈现多样性的趋势;磁盘碎片问题有所缓解。

在域为1的情况下,变长块级重删能删掉40%左右的数据,其中大约一半来自重复文件;虽然块级重删相比文件级重删对性能影响更大,复杂度更高,但是我觉得变长块级重删能多删除20%的数据很有诱惑力,鱼和熊掌可以兼得么?

NTFS vs FAT32 vs exFAT:3大文件系统性能对比与Windows 11/10选型指南 本文深入对比NTFS、FAT32和exFAT三大文件系统在Windows 11/10环境下的性能表现与适用场景。通过实测数据分析,揭示NTFS在企业级存储中的优势,FAT32的广泛兼容性特点,以及exFAT在闪存设备上的平衡设计,为不同使用场景提供黄金选型方案,帮助用户优化存储设备性能。 阅读详情

相关推荐

VS2022 C# 项目打包实战:从零到发布的完整指南

本文详细介绍了在VS2022环境下进行C#项目打包的完整流程,从环境准备、工具安装到高级配置和测试发布。通过实战案例和常见问题解答,帮助开发者掌握创建专业MSI安装包的关键技巧,包括快捷方式优化、自定义操作脚本添加等实用功能,提升软件部署效率。

weixin_29304985的博客 431

操作系统期末实验:多用户二级文件系统

设计一个多用户的二级文件系统,能够实现简单的文件操作。具体包括如下几条命令: (1)Dir 列文件目录; (2)Create 创建文件 (3)Delete 删除文件 (4)Deldir 删除目录 (5)Open 打开文件 (6)Close 关闭文件 (7)Read、Write读写文件 (8)Search 查询文件 (9)Copy 拷贝文件 (10)Cut 剪切文件。本课程设计要求按照学校有关

定期分享我的发现和想法,感谢你的陪伴和支持 1万+

NTFS文件系统:Windows的主力文件系统

NTFS是Windows的主力文件系统,取代FAT解决了大文件支持、权限管理、日志保护、压缩加密等痛点。其核心为MFT(主文件表),支持ACL、日志恢复、文件压缩与加密,且通过运行列表高效管理数据块。相比FAT32,NTFS更安全可靠,适用于系统盘和大容量存储,但跨平台兼容性较差。软考重点包括NTFS特性、MFT结构及与FAT对比。

通俗易懂学IT 24

操作系统课程设计文件管理二级文件系统

一.课程设计的目的 本课程设计是学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让我更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强了我的动手能力。 ­ 二.课程设计的内容及要求 内容:为LINUX 设计一个简单的二级文件系统。要求做到以下几点: 1、可以实现下列几条命令(至少4条)。 Login 用户登录 Dir 列文件目录 Create 创建文件 Delete 删除文件 ...

m0_51520179的博客 5330

Windows系统访问Linux磁盘的完整方法与实用工具指南

在跨平台数据交互日益频繁的今天,Windows与Linux之间的磁盘访问需求不断增长。本章将深入剖析两种操作系统所采用的核心文件系统架构差异——以Windows主流的NTFS与Linux常用的EXT、XFS及Btrfs为代表,揭示其设计哲学、元数据结构和跨平台读写障碍的根本原因。重点分析Windows原生不支持EXT等Linux文件系统的底层机制,并探讨为何直接挂载存在风险,为后续章节中通过协议或第三方工具实现安全访问提供理论基础。

weixin_42234168的博客 3021

二级文件系统

二级文件系统 用户登录 读写文件 /****** 引导块 *******/ typedef struct GuideBlock{ int fsize; //文件总块数 int sstart; //超级快起始块 int istart; //inode区起始块 int fstart; //一般存储区起始块 }guide; /****** fat *******/ typedef struct FAT { int nextblock; //下一个物理块的地址 int useflag; //位示图 useflag=0 物理块为空,useflag=1 物理块不空 }FAT; /****** inode文件控制块 *********/ typedef struct inode { char name[20]; //文件夹或文件名 int kind; //0文件夹;1文件 int i_mode; //0只读;1读写;2可执行 int i_size; //若kind=0,则表示文件夹中的文件数目,若kind=1,则表示文件长度,以字节为单位 int i_addr; //外存inode号 int f_addr; //文件存储首地址 int f_posblock;//文件块位置指针 int f_posoff; //文件块内偏移指针 }inode; /******* ufd用户文件目录 *********/ typedef struct UFD { char name[20]; //文件名 int iaddr; //文件外存i节点号 }UFD; /******** mfd用户主文件目录 **********/ typedef struct MFD { char username[20]; //用户名 char password[20]; //密码 UFD ufd[MAXUFILE]; //用户文件目录 int iaddr; //用户文件夹inode }MFD; /****** 超级块 *******/ typedef struct SuperBlock { FAT fatfile[BNUM]; //fat表 MFD mfd[MAXUSER]; //主用户目录 int currentuser; //当前用户 inode currentdir; //用户文件夹inode }surper;

用c语言为 LINUX 设计一个简单的二级文件系统。要求做到以下几点: 1、可以实现下列几条命令(至少 4 条) Login 用户登录 Dir 列文件目录 Create 创建文件 Delete 删除文...

为了设计一个简单的二级文件系统,我们可以使用 C 语言在 Linux 系统上编写一些程序来实现这些功能。 首先,我们需要实现用户登录功能。这可以通过在程序中设置用户名和密码,并让用户输入这些信息来实现。如果用户输入的信息正确,就可以让用户进入系统。 然后,我们可以实现列文件目录的功能。这可以通过使用 Linux 系统自带的函数,如 opendir 和 readdir,来打开文件夹并读取文件夹中的文...

weixin_42589700的博客 1884

二级文件系统 .rar

烟台大学操作系统课设 二级文件系统 文件系统是操作系统中所有软件资源的管理者,一个高效完善的文件系统非常重要,通过自行设计模拟二级文件系统,能对文件和文件系统的概念有深入的理解,并能体会文件目录,文件空间管理和文件保护等多个文件管理机制的实现。 设计一个模拟二级文件管理系统,能实现创建、修改、删除、重命名等基本文件操作,能实现多目录管理,具备多种文件属性,加入权限管理和文件共享功能等等。

简单的二级文件系统(QT实现)

该项目是博主上大学时抽到的课程设计的一个题目,涉及到QT的UI设计和控件操作、MySql数据库和文件操作,综合性较强,但由于学校规定制作的时间太短,没办法将该项目精益求精,该文章只是作简单记录。

m0_61756911的博客 1789

多用户多级目录文件系统(c++源码)

多用户多级目录文件系统,c++源码,大作业

为LINUX设计一个简单的二级文件系统。

为LINUX设计一个简单的二级文件系统。要求做到以下几点: 1、 可以实现下列几条命令 Login 用户登录 Dir 列文件目录 Create 创建文件 Delete 删除文件 Open 打开文件 Close 关闭文件 Read 读文件 Write 写文件 2、列目录时要列出文件名、物理地址、保护码和文件长度。 3、源文件可以进行读写保护。

操作系统——二级文件系统

在列文件目录时要列出文件名、物理地址、保护码和文件长度。源文件可以进行读写保护。create 创建文件。delete 删除文件。login 用户登录。close 关闭文件。

qq208474482的博客 1224

二级文件系统(操作系统)

可以实现下列几条命令: Login 用户登录 Dir 列文件目录 Create 创建文件 Delete 删除文件 Open 打开文件 Close 关闭文件 Read 读文件 Write 写文件

主文件系统 vs 二级文件系统 (EMC篇)

文主要基于FAST11和FAST12的两篇论文:A study of practical deduplication和Characteristics of backup workloads in production systems。前者来自微软,主要分析的是用于主存储系统的文件系统;后者来自EMC,分析的是用于二级存储系统(如备份、归档)的文件系统。两篇论文共同的特点是实验的数据集都非常庞大,因

365天 3810

解决ADS1.2报错Cannot obtain license

报错如下 将licenses文件下的license内容进行修改: 修改为如下内容即可。 # # Generated on 2021-dec-1 by licwizard # PACKAGE ads armlmd 1.200 E32F0DE5161D COMPONENTS="armasm compiler bats armulate axd adwu fromelf armlink codewarrior armsd" INCREMENT ads armlmd 1.200 permanent uncounte

qq_46110320的博客 3463

【数据结构】面试题整理 共36题

链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针。与数组不同,链表中的元素在内存中不必是连续存储的,这使得链表在插入和删除操作时非常高效。单向链表(Singly Linked List):每个节点只包含一个指向下一个节点的指针。双向链表(Doubly Linked List):每个节点包含两个指针,一个指向下一个节点,一个指向前一个节点。循环链表(Circular Linked List):链表的最后一个节点指向第一个节点,形成一个环。

weixin_44329069的博客 7198

请解释一下FAT、NTFS和EXT4文件系统的区别。

假设你有一个小书架,书的排列方式很简单:在计算机中,FAT 文件系统 就是类似的过程:假设你有一个大型图书馆,书籍管理非常先进:在计算机中,NTFS 文件系统 就是类似的过程:假设你有一个档案馆,专门用来存放大量的重要文件:在计算机中,EXT4 文件系统 就是类似的过程:假设你有一块硬盘,分别用于以下场景:FAT32:NTFS:EXT4:

长风破浪会有时的博客 1674

CRaxsRat v7.6 安装与使用教程(附工具下载)

摘要:本文介绍远程管理工具CRaxsRat v7.6的合法应用与基本操作,强调仅限授权环境使用。该工具支持多客户端管理、TLS加密及文件/进程控制等功能,适用于内网维护与安全测试。安装需Windows 10/11系统及.NET 4.8,步骤包括解压运行、配置监听端口及生成客户端。文中提醒防火墙设置与杀软误报问题,并重申禁止非法用途,建议在虚拟机或隔离环境学习使用。

lzj781210的博客 3791

Win11删海量小文件为何卡顿?三年实测与高效绕坑方案

在操作系统中,文件删除并不等于物理擦除,而是更新文件系统的元数据。NTFS作为Windows的默认文件系统,其元数据操作模型决定了每删除一个小文件,都要执行索引查找、位图更新、事务日志写入等多步串行操作。因此当文件数量达到十万级,即使使用NVMe固态硬盘,也难以抵消这种随机写入开销带来的延迟。而资源管理器自身的进度计算、回收站额外开销以及杀毒软件的实时扫描,又进一步放大了卡顿体验。robocopy镜像删除通过多线程并发处理,能将实测耗时从十几分钟压缩至几分钟,是当前原生工具中最有效的方案;针对几十万文件级目

weixin_33802505的博客 447

高速接口电平标准互连设计:LVPECL、PECL与LVDS的实战解析

本文深入解析了LVPECL、PECL与LVDS三种高速接口电平标准的互连设计实战。针对信号共模电压、阻抗匹配等核心差异,详细对比了直流耦合与交流耦合两种主流方案,并提供了电阻网络计算、布局布线要点及光模块等特殊场景下的选型建议,帮助工程师解决高速信号间的“翻译”难题,确保信号完整性。

weixin_29198045的博客 539

【YOLO系列】YOLOv12详解:模型结构、损失函数、训练方法及代码实现

本文提出YOLOv12,一种以注意力为中心的实时目标检测框架,通过创新性改进解决传统YOLO模型在精度与速度上的失衡问题。核心贡献包括:1)轻量混合注意力模块(LHA)结合通道与空间注意力,在不增加计算负担下提升特征提取能力;2)区域注意机制与R-ELAN网络优化特征聚合,显著改善小目标检测(AP_S提升8.3%);3)动态多光谱数据增强策略增强模型鲁棒性。实验表明,YOLOv12在COCO等基准上实现SOTA性能,同时保持2.1 TOPS/W的高能效比,适用于边缘设备部署。该工作为实时目标检测提供了新的注

一碗白开水一 1808
上一篇: 最佳论文:构建高性能的重复数据删除系统
下一篇: 主文件系统 vs 二级文件系统 (EMC篇)
fumin
博客等级 码龄15年 343粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值