如今,面向個人使用者的消費級SSD固態硬碟產品,主流容量已經來到TB級別。
在膝上型電腦等便攜裝置上,SSD已經實現了對傳統機械硬碟的幾乎完全替代,而面向資料中心的企業級SSD,最大容量已做到122TB,遠超尺寸更大的機械硬碟。
但是關於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的情況保持一致。
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),為常數。