
硬盘
硬盘厂商以十进制来确定容量单位,即1KB等于1000B,1MB等于1000KB,1GB等于1000MB,1TB等于1000GB,按此标准生产机械
硬盘。而
计算机是依据二进制来计算存储空间的,1KiB为1024B,1MiB等于1024KiB,1GiB等于1024MiB,1TiB等于1024GiB。这样一来就产生了第一个问题,那就是
硬盘容量缩水。例如一块标称1TB容量的机械
硬盘,其物理容量按照十进制计算是1×1000×1000×1000 = 1000000000B,然而
计算机按照二进制认为1TiB应该是1×1024×1024×1024 = 1073741824B。所以在
Windows系统看来,1000000000B经过二进制换算约为931.32GiB,相较于1000GB就缩水了大概7%。不过到现在
Windows系统也还没改变这种情况。在内存容量和
硬盘容量的计算上,多数
Android手机、
macOS以及
IOS系统已经有所改变,内存容量采用二进制计算,
硬盘容量采用十进制计算,这样买来的
硬盘容量显示多少就是多少。进入固态
硬盘时代,由于其数据存储原理与机械
硬盘不同,最显著的区别是固态
硬盘不支持覆盖写。当固态
硬盘写入一个数据时,必须先擦除该位置已有的数据,然后再写入新数据。固态
硬盘的最小写入单位是页,每页大小为4096B,最小擦除单位是块,一个块通常由64或者128个页组成。要是只需写入一页的数据,而单个块中又没有其他空余的页,那就得擦除整个块的数据,然后再写入整个块的数据,这就使得原本只需写入4KB的数据,实际写入量可能放大64甚至128倍,这就是影响固态
硬盘寿命的写放大问题。解决这个问题的一个方法就是预留一部分空间用于
磨损均衡和垃圾回收,这部分空间被称为OP空间,用户是看不到这个空间的。既然固态
硬盘需要预留一部分空间,那这部分空间从何而来?最简单的方法就是在生产时按照二进制计算。比如256GB
硬盘,其实际物理容量为1×1024×1024×256 = 268435456B,然后预留12435456B(约12.43GB,约11.85GiB)作为第一层OP空间,给用户提供256000000B的使用空间;512GB
硬盘则预留24,870,912B(约24.87GB,约23.71GiB)。