买了1TBSSD但系统显示只有931GB!教你看懂SSD真实容量

硬件闲聊下 2024-11-30 09:16:52

如今,面向个人用户的消费级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《黑神话:悟空》联名版

0 阅读:31

硬件闲聊下

简介:感谢大家的关注