如今,面向个人用户的消费级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),为常数。
转载请注明来自成特老酒坊,本文标题:《买了1TB SSD 但系统显示只有931GB!教你看懂SSD真实容量》