关于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
关于FAT32分区的U盘4GB文件的测试的更多相关文章
- win7系统复制文件到u盘提示文件过大怎么办
转载:https://www.xitmi.com/770.html 系统相信很多朋友都遇到过这种情况,在你拷贝文件到u盘时,u盘剩余空间明明很大,但是却复制不进去,电脑提示“对于目标文件系统 文件过大 ...
- centos7虚拟机(vmware)通过U盘传文件
centos7虚拟机(vmware)通过U盘传文件 centos7虚拟机安装以后,WINDOWS给CENTOS7传文件,除了在CENTOS7安装SAMBA外,其实通过U盘也是可以的. CENTOS7对 ...
- 怎么提高U盘传输文件的性能?
U盘使用时间久了,其传输复制文件速度就可能会变得有些慢.出现这个问题的原因有很多,除了U盘本身的问题外,也可能会有电脑设置方面的因素在影响.好系统下面就来告诉大家解决U盘传输复制文件速度慢的几个小技巧 ...
- 轻松解决U盘拷贝文件时提示文件过大问题
现在的高科技时代生活中,u盘的使用已经是许多从事电脑it行业的人每天都必须要用到的用具.可以在一台电脑上使用u盘拷贝文件到另外一台电脑上进行使用,加上它的身材小巧,非常方便我们随身携带到任何地方进行使 ...
- CentOS提示::unknown filesystem type 'ntfs'自动挂载NTFS分区的U盘或者移动硬盘
CentOS默认源里没有NTFS-3G,想要添加ntfs支持,无非是自己下载编译安装或者加源yum安装.重新安装了一个CentOS7,用的是添加aliyun的epel源来yum安装的方式,简单易行. ...
- ubuntu14.04 制作U盘启动文件
1.制作U盘启动文件 网上搜索:U盘安装Ubuntu 12.10 图文教程(ultraiso) http://www.jb51.net/os/94398.html 2. 重启,按Del(或F2)进BI ...
- Linux学习之分区自动挂载与fstab文件修复(九)
linux分区自动挂载与fstab文件修复 在前面我们实现新添加硬盘,进行分区与格式化,然后手动挂载,这样做,在重启后,需要重新挂载才能使用. https://www.cnblogs.com/-wen ...
- 下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt。File构造函数中正确的路径和文件名的表示是( )。
下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt.File构造函数中正确的路径和文件名的表示是( ). ./表示当前项目的路径../表示当 ...
- 【转载】Win10打开U盘提示“文件或目录损坏无法读取”怎么办?
以下文转载至系统之家 网址:http://www.xitongzhijia.net/xtjc/20190314/152334.html (PS:暂未亲测) Win10打开U盘提示“文件或目录损坏无法读 ...
随机推荐
- 关于Tool接口--------hadoop接口:extends Configured implements Tool 和 ToolRunner.run
我们在写Hadoop--map/reduce程序时,遇到使用按文件url来分析文件----------多表连接的DistributedCache方式,看不懂使用extends Configured i ...
- What's new in Safari 11.0
导语: Safari 11.0 的亮点 网络会议.使用WebRTC标准实现对等会议. 开发调试工具增强.使用用于测量代码和网络性能的新工具来测试代码. WebAssembly.当使用新的WebAsse ...
- (转载)Android支付宝支付封装代码
Android支付宝支付封装代码 投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-12-22我要评论 这篇文章主要介绍了Android支付宝支付封装代码,Android支付的时候 ...
- Codeforces 845A. Chess Tourney 思路:简单逻辑题
题目: 题意:输入一个整数n,接着输入2*n个数字,代表2*n个选手的实力. 实力值大的选手可以赢实力值小的选手,实力值相同则都有可能赢. 叫你把这2*n个选手分成2个有n个选手的队伍. ...
- java中三个类别加载器的关系以及各自加载的类的范围
Java在需要使用类别的时候,才会将类别加载,Java的类别载入是由类别载入器(Class loader)来达到的,预设上,在程序启动之后,主要会有三个类别加载器:Bootstrap Loader.E ...
- .startsWith和endsWith的使用方法与说明
a.startsWith(b) --判断字符串a,是不是以字符串b开头 a.endsWith(b) --判断字符串a,是不是以字符串b结尾
- GCD - Extreme (II) UVA - 11426 欧拉函数_数学推导
Code: #include<cstdio> using namespace std; const int maxn=4000005; const int R=4000002; const ...
- VC++ 借助 Win32 API 绘图实现基本的细胞自动机演示
//本程序使用 Visual Studio 2015 生成的 Win32 窗口程序模板 开发//使用 Win32 API 绘图//实现基本的细胞自动机演示////目前已知问题://存在内存泄漏,但具体 ...
- [NOIP2003提高组]侦探推理
题目:洛谷P1039.Vijos P1106.codevs1089. 题目大意:给你一系列证词,要你求出谁是凶手.具体题目见原题. 解题思路:我们枚举犯人和星期,一个一个进行判断.如果成功则记录答案, ...
- harbor 安装过程
[root@master01 harbor]# ./prepare Clearing the configuration file: ./common/config/adminserver/env ...