✨磁盤分區非整數問題
在NTFS文件系統下當我們使用Windows的磁盤管理分區時
例如需要分區 150GB 即 153600 MB(150 * 1024 = 153600)
按照該大小分區時候得到的並不是整數大小的分區
✨磁盤整數分區方法
硬盤廠商設計的是1GB=1000MB,而操作系統卻認為1GB=1024MB,而這個整數分區的公式既不是按照硬盤廠商的設計也不是操作系統的設計,而是另有誤差。原因就是硬盤在分區和格式化之后還會在硬盤上占用一定的空間用來存儲磁盤結構和數據位置等信息。
FAT32格式
應分配MB數=(分區GB數-1)×4+1024×分區GB數
也就是說,如果你要在FAT32格式的硬盤上分出一個10 GB的硬盤,那么:
你應該分配的MB數=(10-1)×4+1024×10=10276 MB
這樣你就可以得到整數的10 GB分區了。
NTFS格式
硬盤一般有255磁頭,63扇區,故每柱面大小為:
512byte x 255 x 63=8225280bytes =7.84423828125 MB
如果要分10 GB,那么要10x1024 MB=10240 MB
需要柱面數為10240÷7.84423828125=1305.416744475568004979769685652
取整數既為1306個柱面
應分MB數為1306x7.84423828125=10244.5751953125 MB
整數分區演示
例如需要分配 150GB
對於NTFS格式依照公式應當分配 153606MB
✨代碼實現
from math import *
def rounded_GB_NTFS(GB):
TEMP = 7.84423828125
MB = GB * 1024
return ceil(ceil(MB / TEMP) * TEMP)
def rounded_GB_FAT32(GB):
return (GB - 1) * 4 + 1024 * GB
另外經過測試知乎上另一種計算方法也能實現同樣效果
def rounded_TB(TB):
MB = TB * 1024 * 1024
return MB + 4096
def rounded_GB(GB):
MB = GB * 1024
return MB + 1024
Win10完美整數大小磁盤分區 - 知乎 (zhihu.com)
⭐轉載請注明出處
本文作者:雙份濃縮馥芮白
原文鏈接:https://www.cnblogs.com/Flat-White/p/15137668.html
版權所有,如需轉載請注明出處。