声明:本文乃“运维家”原创,转载请注明出处,更多内容请关注公众号“运维家”。
主旨
不知道你们有没有发现,一块硬盘,买的是100G的,挂载到服务器上之后就“变小”了,而且这种情况不是偶发的,几乎是必然发生的,难道是硬盘厂商在作怪嘛?
图示如下
使用sdisk -l 命令如下图,可以看到实际容量是18.2G;
但是当挂载到服务器上之后,我们使用 df -h 命令来看,就变成了总容量17G了;
普及
1KB=1000Byte
1MB=1000KB
1GB=1000MB
1TB=1000GB
1KiB=1024Byte
1MiB=1024KiB
1GiB=1024MiB
1TiB=1024GiB
原理
众所周知,在计算机中是采用二进制,在电脑世界里,以2的次方数为“批量”处理Byte会方便一些,整齐一些。每1024Byte为1KB,每1024KB为1MB,每1024MB为1GB,每1024GB为1TB,而在国际单位制中TB、GB、MB、KB是“1000进制”的计数单位,为此国际电工协会(IEC)拟定了"KiB"、“MiB”、“GiB"的二进制单位,专用来标示“1024进位”的数据大小;而硬盘厂商在计算容量方面是以每1000为一进制的,每1000字节为1KB,每1000KB为1MB,每1000MB为1GB,每1000GB为1TB,在操作系统中对容量的计算是以1024为进位的,并且并未改为"KiB"、“MiB”、“GiB"的二进制单位,这差异造成了硬盘容量“缩水”。(PS:该段内容来自于百度百科)
简单来说,就是硬盘生产厂家采取的是1MB=1000KB,1GB=1000MB的计算方式;而服务器是按照1MiB=1024KiB,1GiB=1024Gib的方式来计算的,这样子是不是可以理解了呢。
举例
以120GB的硬盘为例:
厂商容量计算方法:
120GB=120,000MB=120,000,000KB=120,000,000,000字节;
换算成操作系统计算方法:
120,000,000,000字节/1024=117,187,500KB/1024=114,440.9MB/1024=111.8GB。
简单算法:硬盘容量 /(1024*1024*1024)
80,000,000,000/(1024*1024*1024)=74.5GB
40,000,000,000/(1024*1024*1024)=37.25GB
从上面的计算可以看出,硬盘容量越大,“缩水”越严重,其实,在5%~10%左右,都属于正常范围内可接受的。
计算结果
标称8GB的硬盘,在操作系统中显示只有7.4GB;
16GB的硬盘只有14.8GB;
32GB的硬盘只有29.8GB;
40GB的硬盘只有37.2GB;
64GB的硬盘只有59GB;
80GB的硬盘只有74.5GB;
100GB的硬盘只有93.1GB;
120GB的硬盘只有112GB;
128GB的硬盘只有119GB;
160GB的硬盘只有149GB;
256GB的硬盘只有238GB;
320GB的硬盘只有298GB;
480GB的硬盘只有GB;
500GB的硬盘只有465GB;
512GB的硬盘只有476GB;
750GB的硬盘只有699GB;
960GB的硬盘只有894GB;
1TB的硬盘只有931GB;
1.5TB的硬盘只有1.3TB(1397GB);
2TB的硬盘只有1.8TB(1862GB);
3TB的硬盘只有2.7TB(2793GB);
4TB的硬盘只有3.6TB(3724GB);
5TB的硬盘只有4.6TB(4657GB);
6TB的硬盘只有5.5TB(5586GB);
8TB的硬盘只有7.4TB(7448GB);
10TB(GB)的硬盘只有9.3TB(9300GB);
而12TB的硬盘则只有10.9TB(11176GB)。
至此,结果很明显了,不是厂商“缩水”,而是计算方式不同罢了。