買了1TB SSD 但係統顯示只有931GB?教你看懂SSD真實容量
如今,個人用戶的消費級SSD固態硬碟產品,主流容量已來到TB層級。在筆記型電腦等便攜設備上,SSD已經實現了對傳統機械硬碟的幾乎完全替代,而面向資料中心的企業級SSD,最大容量已做到122TB,遠超尺寸更大的機械硬碟。
但關於SSD的容量如何計算、如何顯示,很多用戶依然存在疑惑,這裡就跟大家集中講一講!
容量為30.72TB的NVMe SSD
1.SSD容量的定義
根據JEDEC固態技術協會)給出的定義,SSD容量指的是用戶可以尋址訪問的容量,即User-Addressable Capacity,通常又被稱為SSD的“容量點”或“用戶容量”,用戶發出的所有讀取、寫入操作均不能超出該容量範圍。
目前,幾乎所有硬碟廠商都以GB或TB作為硬碟的容量單位,如512GB、0.72TB。
- GB:Gigabyte的簡寫,1GB=10^9字節,512GB=512×10^9字節
- TB:Terabyte的簡寫,1TB=10^12字節,30.72TB=30720GB=30.72×10^12字節
GB、TB由IEC國際電工協會定義,在IEC60027-2(最新版本為IEC60027-2:2019)規範標準中有詳細說明,而G、T等十進倍數詞頭在國務院制定的法定計量單位中也被認可和使用。
除了GB、TB,形容硬碟容量的單位還可以是MB、PB、EB等,不同單位的換算關係參考上述表格。
在「容量點」、「使用者容量」之外,SSD通常還有用戶無法尋址存取的容量,也就是所謂的「預留空間」Over-Provision,簡稱OP),用於SSD實現磨損均衡、垃圾回收、存放映射表、替換壞塊等用途。
在相同韌體、硬體的前提下,SSD的預留空間越大,硬碟可以實現的每天全碟寫入次數就越高,4k隨機寫入效能也會越好。
為了讓SSD能夠在市場競爭中提供領先的寫入壽命與效能,不同廠商對預留空間的配置策略存在差異,不過由於它並不包含在用戶容量之內,在此也就不做展開。
2、容量在作業系統中的顯示
目前,所有基於馮諾依曼提出的儲存程式概念設計的計算機,其指令與資料都以二進位形式儲存在記憶體當中,SSD的容量在電腦作業系統中的顯示也是如此。
GiB、TiB同樣由IEC國際電工協會定義,專門用來表示「1024進位」的資料大小,即二進位換算下,SSD所提供的容量。
這項方法也在2008年納入國際標準化組織(ISO)文件當中。
- GiB:Giga Binary Byte的簡稱,1GiB=2^30字節,1GB約合0.9313GiB
- TiB:Tera Binary Byte的簡稱,1TiB=2^40字節,1TB約合0.9095TiB
- KiB、MiB、PiB等,以此類推。
由上可知,標註容量為1TB的SSD(以十進位計算時表示為1000GB),在作業系統中也就是二進位下為931GiB,在此基礎上扣除EXT4、NTFS等檔案系統帶來的開銷,最終顯示容量會低於931GiB。
計算公式為:(1000×1000×1000)÷(1024×1024×1024)≈0.93132
1000GB×0.93132≈931.32GiB;
不過,也有些硬碟廠商不是1000GB計算的,而是依照1024GB,這時候作業系統最終顯示容量為:
1024GB×0.93132≈953.67GiB;
此外,在大部分作業系統的圖形介面中,GiB也會被顯示為GB而不經過任何換算。
當然,大部分時候無論廠商、經銷商或用戶,都不會刻意用GiB這樣的寫法,而是依然直接寫GB,難免造成更進一步的混亂。
3.SSD容量的識別與計算
SSD上電初始化過程中,主機透過Identify指令識別SSD可尋址的邏輯區塊位址(Logical Block Address,以下簡稱「LBA」)數量以及對應的邏輯區塊大小(Logical Block Size),經計算得出SSD的容量,也就是使用者可尋址的容量。
4.固態硬碟容量的辨識與計算
4.1、IDEMA LBA1-03標準(LBA數量及SSD容量計算)
目前,國際普遍使用的LBA計算方法和SSD容量計算公式,遵循IDEMA(International Disk Drive Equipmentand Materials Association,國際磁碟設備和材料協會)LBA1-03標準規範。
IDEMA成立於1986年,成員單位包括東芝、日立、三星、西部數據、希捷等儲存產業領導企業,戴爾、惠普等OEM廠商,以及微軟等作業系統供應商。
在過去的幾十年間,透過IDEMA和成員單位的共同努力,為儲存設備的小型化、實現更高的儲存密度、不斷優化的儲存成本等推動產業持續前進做出卓越貢獻。
具體公式如下:
- 邏輯區塊大小為512位元組:
LBA數量=97696368+1953504×(SSD容量(GB)-50.0)
SSD容量(GB)=(LBA數量-97696368)/1953504+50.0
- 邏輯區塊大小為4096位元組:
LBA數量=12212046+244188×(SSD容量(GB)–50.0)
SSD容量(GB)=(LBA數量–12212046)/244188+50.0
其中,97696368、1953504、12212046、244188和50均為常數。
以3.84TB SSD為例:
- 邏輯區塊大小為512位元組:
LBA數量=97696368+1953504×(3840-50.0)=7501476528
SSD容量(GB)=(7501476528-97696368)/1953504+50.0=3840GB
- 邏輯區塊大小為4096位元組:
LBA數量=12212046+244188×(3840–50.0)=937684566
SSD容量(GB)=(937684566–12212046)/244188+50.0=3840GB=3.84TB
需要指出的是,LBA1-03中的公式並不適用於早年間(ATA時代或更早)容量在50GB以下的硬碟。
對於T10PI(Protection Information,保護資訊)的使用,IDEMALBA1-03也做了相關規定:
將硬碟格式化為支援T10PI,會在每個區塊後面添加額外的8個位元組,使邏輯區塊大小變為512+8位元組或4096+8位元組。
但由於這額外的8個位元組並不能夠被使用者使用,而是屬於協定開銷,因此硬碟格式化為支援T10PI之後所能提供給使用者的LBA數量,應和沒有被格式化為支援T10PI的情況保持一致。
憶恆創源PBlaze7 7940 E1.S 15.36TB
4.2、JESD218標準(LBA數量與SSD容量計算)
JESD218規範提出,為實現在同一應用下,SSD和機械硬碟的相容,與IDEMA容量計算方法保持一致,SSD的LBA數量計算方法和容量換算,應遵循以下公式:
- 邏輯區塊大小為512位元組
LBA數量=21168+1953504×SSD容量(GB)
SSD容量(GB)=(LBA數量–21168)/1953504
- 邏輯區塊大小為4096位元組
LBA數量=2646+244188×SSD容量(GB)
SSD容量(GB)=(LBA數量–2646)/244188
透過和IDEMA公式對比,可發現JESD218對IDEMA公式中的50GB進行了LBA數量的轉換,兩個公式在計算和結果層面完全相同。
還是以3.84TBSSD為例:
邏輯區塊大小為512位元組
LBA數量=21168+1953504×3840=7501476528
SSD容量(GB)=(7501476528–21168)/1953504=3840GB=3.84TB
邏輯區塊大小為4096字節
LBA數量=2646+244188×3840=937684566
SSD容量(GB)=(937684566–2646)/244188=3840GB=3.84TB
不管是LBA1-03,或是JESD218,它們都不會對SSD的預留空間進行統計;而對於PI或DIF的使用,兩者的規定也是完全相同。
4.3、SFF-8447標準(LBA數量計算)
為滿足儲存技術以及硬碟容量的未來發展需求,SNIA(Storage Networking Industry Association,全球網路儲存產業協會)針對8TB以上大容量硬碟、更多類型的邏輯區塊大小以及PI的使用,對IDEMALBA1-03進行了補充,推出SFF-8447規範:
對於目前容量不超過8000GB,邏輯區塊大小512位元組、512+8位元組PI/DIF,以及邏輯區塊大小為4096位元組、4096+8位元組PI/DIF的SSD,其LBA計算方法和IDEMALBA1-03保持一致;
對於容量超過8000GB,邏輯區塊大小為5XX位元組或4XXX位元組的SSD,則引入CEILING、FLOOR函數,計算也會相對複雜。
其中,5XX指512、520、524或528位元組的邏輯區塊大小;4XXX指4096、4160、4192或4224位元組的邏輯區塊大小。
- 邏輯區塊大小為512字節,不含PI或DIF:
LBA數量=ceiling(SSD容量位元組數/512,2^21)
- 邏輯區塊大小為520位元組、524位元組或528字節,以及5XX位元組+PI或DIF:
LBA數量=floor[ceiling(SSD容量位元組數/512,2^21)×512/(邏輯區塊位元組數+PI或DIF位元組數)×0.995,2^21]
- 邏輯區塊大小為4096字節,不含PI或DIF:
LBA數量=ceiling(SSD容量位元組數/4096,2^18)
- 邏輯區塊大小為4160位元組、4192位元組或4224字節,以及4XXX位元組+PI或DIF:
LBA數量=floor[ceiling(SSD位元組數/4096,2^18)×4096/(邏輯區塊位元組數+PI或DIF位元組數)×0.995,2^18]
0.995是適應性調整因子(Fit Adjustment Factor),為常數。
長江儲存致態TiPlus7100 2TB《黑神話:悟空》聯名版