Windows NTFS文件系统中大量小文件导致空间统计异常如何处理?-阿里云服务器ECS使用教程 |
产品推荐: 1、安全稳定的云服务器租用,2核/2G/5M仅37元,点击抢购>>>; 2、高防物理服务器20核/16G/50M/500G防御仅350元,点击抢购>>> 3、百度智能建站(五合一网站)仅880元/年,点击抢购>>> 模板建站(PC+手机站)仅480元/年,点击抢购>>> 4、阿里云服务器2核2G3M仅99元/年、2核4G5M仅199元/年,新老同享,点击抢购>>> 5、腾讯云服务器2核2G4M仅99元/年、新老同享,点击抢购>>> 点击这里进入阿里云ECS官方页面,立即免费体验云服务器ECS>>> 本文介绍Windows NTFS文件系统中存在大量小文件导致空间统计异常的问题原因及解决方案。 大量小于1 KB文件占用空间问题问题描述如下图所示,Windows系统中从文件统计看占用磁盘空间1.56 MB,共计409,600个小文件,每个文件包含几个字符,容量大约为几个字节,但磁盘显示使用空间已经占用594 MB,两处空间大小统计相差较大。 问题原因该情况为NTFS文件系统中NFT占用导致,与NTFS文件系统中的文件存储方式有关。NTFS文件系统格式化后简单的结构如下图所示。 其中BOOT中存放文件系统基础信息,如簇大小等。NTFS的文件信息都存放在Master File Table(MFT)中,每个MFT的记录是1 KB大小且固定不变。每个记录对应一个文件,或者对应其他文件系统对象。记录格式为:记录头+属性1+属性2+...+属性n,属性里包括文件名、长度、修改时间等等。如果文件信息足够小,那么1 KB的记录是用不满的,剩下的部分就可以放文件内容。其中,当文件足够小的时候,DATA里放的就是文件内容,当文件足够大的时候DATA放的是指针,指向另外一个区域保存更大的数据。针对此问题,409,600个文件要消耗409,600个MFT记录,共计消耗容量400 MB。此外,NTFS文件系统日志和位图等也需要消耗空间,共计消耗594 MB容量。此情况也可以通过执行 或者使用WinHex程序获取更详细的系统占用,下载WinHex后运行,后续使用 解决方案针对MFT中已经分配的空间,默认删除文件会被标记为空,但不会自动回收,提升再次创建文件时的效率。如果确实需要释放,一般需要第三方磁盘清理或整理工具进行,分区容量不大时,也可以创建大文件占用空间,此时系统会自动释放已经删除的MFT空间。针对此类情况,也建议针对小文件进行定期压缩备份,降低MFT占用的空间,或从业务逻辑上减少大量小文件使用。 大量小文件但大于1 KB文件占用空间问题问题描述如下图所示,共计409,600个小文件,文件本身大小为1 KB,实际文件容量为400 MB,但占用空间为1.56 GB。 问题原因针对NTFS文件系统中默认文件的分配单元以簇的方式进行分配管理,默认最小的簇大小为4 KB,当文件小于4 KB或剩余分配不足4 KB时,实际分配仍旧为一个簇,即4 KB大小,则会导致占用磁盘空间较大。 解决方案如果业务中确实有大量小于4 KB文件或大量小文件存储,也可以定期压缩备份减少磁盘占用,或者当小文件有固定大小时,可以在磁盘格式化时手工指定更小的簇大小,用以避免空间浪费的情况。指定簇大小可以在格式化过程中选择合适的分配单元大小,其中默认配置大小为 4,096字节,如下图所示。 |