关于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
轉載于:https://www.cnblogs.com/iwantcomputer/p/8489792.html
總結
以上是生活随笔為你收集整理的关于FAT32分区的U盘4GB文件的测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用AudioContext来实现网易云
- 下一篇: 【工商管理论文】S船舶监理公司协同营销方