【教程】磁盤整數分區方法


✨磁盤分區非整數問題

在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

版權所有,如需轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM