关于FAT32分区的U盘4GB文件的测试
关于FAT32分区的U盘4GB文件的测试
很多人都知道FAT32的分区,单文件大小不能超过4GB,关于这个问题就来测测看。
FAT32最大文件大小为2的32次方,也就是4294967296
Byte,这跟32位操作系统在不使用PAE的情况下不能使用超过4GB的内存是一个道理,那么:
4294967296 Byte = 4194304 KB = 4096MB =
4GB
4294967295 Byte = 4194304 KB – 1Byte = 4GB –
1Byte
我们使用windows自带的fsutil创建指定大小的空文件:
以管理员身份运行cmd,使用以下命令来创建一个4294967295
Byte的文件:
fsutil file createnew test.img
4294967295
然后再把它拷进FAT32格式的U盘里面,成功,如下图。事实证明FAT32文件系统能容纳的最大文件为4294967295
Byte = 4194304 KB – 1Byte = 4GB – 1Byte。
那么问题来了,上图里面的文件属性里面,文件大小为3.99GB (4294967295
Byte字节),然而占用空间却为4.00GB (4294967296
Byte字节),这是何故呢?
在windows里面对任意一个分区右键选择格式化,会出现下面这个图:
这里有个分配单元大小,它指的是存储设备上物理层面上划分的存储文件的最小单元,也就是说,一个任意大小的文件,占用的空间都必须是“分配单元大小”的整数倍。那么,如果选择格式化这个磁盘时选择是分配单元大小是8192字节,那么,一个8193字节的文件就会占用两个分配单元的空间,即16384字节=16KB,下面就来验证一下。
我们在这个盘上创建一个8193字节的文件,仍然使用上面提到的fsutil工具:
fsutil file createnew test.txt
8193
查看属性如下:
事实证明上面的推断是正确的,当写入8193字节的文件,以8192字节最小分配单元格式化的情况下,它就会占用两个8192字节也就是16384Byte
即16KB的空间。
所以在格式化磁盘的时候,这个分配单元大小是需要考虑的,要根据实际存储的文件来设置。如果格式化时选了16KB的分配单元大小,而经常在该磁盘上存储大量1KB左右的小文件,那么就是15KB的空间是被白白浪费的,假设存放了1000个1KB的文件,那么就是15KB*1000=15000KB=14MB的空间被浪费了。不过好在现在的U盘硬盘容量都是以数GB甚至数TB来算的,所以这点空间浪费也不算什么。
文件分配大小这个值,是根据不同的磁盘有不同的选择范围的。比如刚才测试用的U盘最小的分配单元就是4096,而另外一个U盘又是2048最小。而对于硬盘,固态硬盘和机械硬盘也有差异,比如我在用的一块SSD最小分配单元是512字节,而另外一块机械硬盘是4096字节。12年以前生产的稍老一些的机械硬盘,最小分配单元多都为512字节,12年后生产的机械硬盘,多采用了一种名为“高级格式化”技术,它的最小分配单元都是4096字节即4K。
其实关于分配单元大小可以展开很多讲的,比如以前的512字节分配单元的硬盘有何弊端?为什么现在的机械硬盘基本上都是4K最小分配单元,以及不同分配单元对于文件的读写速度有何影响?可以参考下面这篇文章
http://memory.zol.com.cn/213/2136092_all.html
最新文章
- C++ win32线程数上限
- ubuntu关于apache服务命令
- linuxMint下面的截图工具
- Android APP测试的日志文件抓取
- Altium Designer生成网表 导出网表【worldsing笔记】
- 详细解析 RxAndroid 的使用方式
- 一些实用的CSS Media Query代码片段,个人采集
- html标签大全(1)
- shell编程其实真的很简单(四)
- SerialPort如何读取串口数据并显示在TextBox上,多线程委托
- 利用MMdnn对比keras和mxnet
- 项目管理——WBS工作分解法
- 缺少的文件是 ..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props。
- 菜鸟翻译:国外的一个关于.net core的学习系列 第一天(安装并运行.NET core 到windox系统里面)
- AngularJS——第7章 依赖注入
- IDEA的GUI连接数据库写入SQL语句的问题总结
- 【转载】配置文件报错:不允许有匹配 [xX][mM][lL] 的处理指令目标
- mfc的一点总结-----Edit Control操作
- Devexpress GridControl无限高度惹得祸
- P2925 [USACO08DEC]干草出售Hay For Sale 题解
热门文章
- Spring mvc <;mvc:resources ***/>; 作用
- 准备把平台挪到linux
- (转载)android控件之WebView控件缩小
- 压缩图片C#算法
- FCC高级编程篇之Validate US Telephone Numbers
- Quartz任务调度 服务日志+log4net打印日志+制作windows服务
- HDU 6315 Naive Operations(线段树+复杂度均摊)
- 【转载】02-PowerDesigner的下载及安装
- Python ftplib 模块关于 ftp的下载
- MooseFS源代码分析(二)