带宽\硬盘容量\4K对齐 存储界的文字坑你知道多少?

电脑 网友投稿 0评论

“今天小编为大家带来512GB M.2 SSD的横评”、“刚在双11抢购了一个3TB硬盘,小电影有着落了”、“装了20M宽带,爽歪歪”……这些看起来平平无奇的数字和单位,对于年轻人来说,要理解不是难度。

但是,当您遇到一名钻牛角尖的好事者问你:20M宽带的下载速度怎么远远不到20MB/s?512GB SSD为何实际只能用476GB?这不就是虚标吗?怎么全世界都不向消委会投诉虚假信息?看来,大家要看看这篇关于存储的科普文章了。

硬盘厂商:这锅我不背

早在十几年前,这些“容量虚标”问题早就闹上法庭了。有意思的是,法官都站在了消费者的那一方,并责成厂商需负责赔偿事宜。吃了亏的硬盘厂商,加上一条声明后。再也没有消费者敢去法院告状了。

1480397628-9163-a28a-4271-a0ff-019c6886e19a
官网或者电商都有关于容量换算的声明

我们在存储品牌官网或者电商的网页之中,总能找到关于容量换算的声明。厂商的标准就是走十进制:一千兆字节(或 GB)等于十亿字节,一兆兆字节(或 TB)等于一万亿字节。而不是微软操作系统的二的十次方。同时,由于对于存储容量换上一直没有一个ISO国际标准,所以厂商使用了如此来规避责任。同时想请君入瓮的消费者也无法用法律武器了。

1480397624-6764-04b0-4fe1-be5e-384abe4f0bfd
很多人的疑惑

此时,无论是小白还是有一定资历的硬件玩家,都会对这个换算有一个疑问:为什么计算机存储系统的容量换算方法有厂商自己的一套1000进位、计算机系统又有自己的一套1024进位?同时,两套标准同时存在那么多年了,为何一直不统一?统一了不就更好?

1480397624-1266-ea12-4a58-8d38-6f2e04d19f87
IEC 80000-13来得太晚了,因为IBM PC在80年代就有了

不要说我们普通人了,早就有专家学者想避免混淆。国际电工委员会(IEC)在1997年提出过一个标准:IEC 80000-13。在这个标准下,科学计数法(1000)按照正常标记,而计算机领域(1024)则全都加一个小写i。因此,1KB就是1000B,而1KiB才是1024B;1 MiB = 1024 KiB,1 GiB = 1024 MiB,等等

1480397624-1381-4bb8-47eb-8ff2-85b4ba66a20b
IBM PC确立了存储进位的算法

不幸的是,这个标准没有得到很广泛的使用。因为在1997年的16年前也就是1981年,PC出现后,计算机都采用了二进制寻址。当时微软给IBM写DOS用了1KB=1024B,苹果最早也都是1KB=1024B来用,其实都应该是1KiB=1024B。但没办法,谁叫当时大家都用PC和DOS了,就得按照人家游戏规则来

1480397624-7433-73fa-43b2-b3ad-2c3b5d267289
本身历史悠久的硬盘有自己一套进位套路

对于硬盘自己来说,其历史比PC还要早,它出现在计算机历史的初期,一个二进制和十进制同存的时期。后面为了计算方便,约定俗成了1KB=1000B,然后说了:没有法律规定1000进位不行啊,同时大家买硬盘也方便运算并检查空间有没有缩水,况且,微软又不是我的“爸爸”,为什么跟着微软的路?(设计对白)

1480397624-5043-5b92-4a60-8625-926855699f2d

由于早期计算机系统的存储容量不大,所以1000B和1024B组成的两套换算体系并没有出现明显的容量差。但是到了MB级别的存储系统后,人们才发现这个差距越拉越大。计算机走1024进位一套,存储系统继续走1000这一套。

其实,我们是用计算机的操作系统,计算机生活都依赖电脑,所以都把操作系统的换算进位当作“圣母”,而把1000进位妖魔化,于是才有文头的法律纠纷。

1480397628-3176-29e9-496b-83c8-d736a276585f
如果贸然将原本的计算标准改变,那得挑战计算机认知的底线

从1981年确立1024进位,直到1997年才提出了的这条IEC 80000-13标准来拨乱反正,在早已深入民心的1KB=1024B换算标准面前,正确的1KiB=1024B早就被人忽略。毕竟一改肯定要牵一发而动全身。同时,存储厂商自己也没有错,因为计算机发展初期的确有十进制寻址的(请百度IBM 702)。逼着厂商改,那么厂商肯定有怨言了:之前建立的硬盘换算体系怎么办?前后两套进位共存怎么办?整套计算机体系怎么办?

1480397628-9391-da46-4173-a0f0-cce9cf83d674
240GB硬盘,实际用到222GB

无为而治,是最好的办法。有两套换算标准,其实就是因为计算机发展初期的标准不统一造成的。但是要改的话两头都不到岸,那倒不如不改。加上2016年的今天,消费者早就接受了硬盘厂商标称的容量在计算机中会减少的事实。

1480397628-6521-d8fa-4469-b2bf-49487c7171be
一分钱一分货,无论容量多大,绝对单位容量价格都是一样的吧

反过来想,如果硬盘厂商真走1024进位的话,那么以后买硬盘你得要带计算器看看有没有缩水了。最重要的是,虽然换算标准不同,同时期单位容量成本是绝对的,有多少的绝对容量就是多少价格,不受换算标准的影响。如果突然搞个换算回1024进位标准的话,小编估计1000进位的4.6TB的硬盘价格和1024进位的4.0TB价格一样。所以还是那句话,一分钱一分货。

总之,习惯了就好。

在BB之前,你得知道B和b。

1480397628-3743-8831-478c-b1cd-28e871b5aaa7
20M宽带,实际不到3MB每秒的下载速度

B和b是什么关系?有一千个读者就有一千个哈姆雷特。小学生都知道,B和b就是大写和小写的关系。不过在今天的文章面前,那就是B=8b。如果你读过大学计算机基础课程,那你肯定知道,为何20M宽带不等于20MB/s的下载速度,这就是因为B=8b的关系。

b,也就是bit,比特,是计算机系统最基本的存储单位。B,也就是Byte,也就是我们熟悉的字节。相信有小白会问这个问题了:为什么不直接使用比特而不是字节,难道不可以一个字节十个比特?

啥?这不是理所当然的么,就和吃饭喝水一样自然,还要想吗?其实对于喜欢钻研问题的你,其实还是得知道其原因的。

1480397628-6095-cc70-4c29-8a47-4f8012a09114

所谓字节Byte,原意就是用来表示一个完整的字符的。大家要区分,这是存储,而不是显示。存储是多少个“位”的开关来区分不同的字符,是最小单位;而显示是有灰度、颜色、精度,可以根据计算机性能来决定多少个字节(这就为何视网膜屏幕对性能要求那么高)。

1480397633-1633-4631-49d8-9ec4-54e9f7559f66
ASCII

最初的计算机性能和存储容量都比较差,所以普遍采用4位BCD编码。这个编码出现比计算机还早,最早是用在打孔卡上的。BCD编码表示数字还可以,但表示字母或符号就很不好用,需要用多个编码来表示。后来又演变出6位的BCD编码(BCDIC),以及至今仍在广泛使用的7位ASCII编码。

1480397633-2767-954f-420f-8a04-4f07f28f7d9b
IBM System/360

不过最终决定字节大小的,是大名鼎鼎的System/360。当时IBM为System/360设计了一套8位EBCDIC编码,有足够的空间来涵盖了数字、大小写字母和大部分常用符号的存储,同时又兼容广泛用于打孔卡的6位BCDIC编码。于是System/360很成功,也奠定了字符存储单位采用8位长度的基础,这就是1字节=8位的由来。

1480397633-5333-2d89-45db-a9f0-3829de5d8e35
10Gbps,注意b的大小写之分

知道了1字节=8位的关系后,我们就可以知道平时我们为什么说USB接口的速度480mbps实际最大只有60MBbs、百兆宽带最大下载速度只有12.5MBps了吧!那就是大写和小写各自代表的含义不同。

大小与占用空间

你打开一个文本文档新文件,输入一个英文字母,保存后查看属性,发现了什么?就是文件大小变成了一字节。有意思的是,当你输入一个汉字的话,大小却变成了二字节,因为汉字因其象形文字的复杂性,都是全角字符,所以要占据2个字节。

1480397633-2707-58f3-4a8e-9a09-470acf5ac77a
大小和占用空间,有什么差别?

相信细心的你,看到了属性窗口的“占用空间”四个字。那么,本来有大小就能表示文件容量,为什么要加个“占用空间”呢?这是不是多此一举呢?

1480397633-6006-32af-40a2-941f-28c0084bd97a
蓝色为扇区

并非如此。学过硬盘知识的朋友都知道,文件大小是绝对的,但是文件得放到硬盘上存放,而硬盘脱离计算机系统不是以字节为基本存储单位,而是叫扇区。不过如果文件不有序放到扇区的话,操作系统指挥硬盘、调用硬盘的效率肯定很慢。

1480397633-5854-c05c-4e3b-a9d3-d128428b4086
分配单元大小,就是一格簇

所以,为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统的文件系统定义了簇,是操作系统层面下的基本存储单位。同时,规定一个簇中只能放置一个文件的内容。文件所占用的空间,只能是簇的整数倍;如果文件实际大小小于一簇,它也要占一簇的空间。簇是硬盘在系统格式化的时候决定的,在格式化界面上,叫做“分配单元大小”,选择了多少,就是这个容量代表一格簇。

1480397637-4707-8fc7-40c8-8753-bb4a0d161bfc
SSD必须经历的4K对齐

我们知道,SSD都要进行4K对齐,因为在NTFS6.x 以前的规范中,数据的写入点正好会介于在两个4K 扇区的之间,也就是说即使是写入最小量的数据,也会使用到两个4K扇区,显然这样对写入速度和读取速度都会造成很大的影响。为了避免不必要的写入(写入次数直接决定使用寿命),4K对齐也就是4096字节分配单元大小肯定要设置好。

1480397637-7717-d837-40e5-8d01-4ed535b369e7
占用空间为占用硬盘容量实际大小

所以,如果一个文件大于4096字节而小于8192字节,它的占用空间必定为8192字节,实际占据容量8192字节,而不是文件的实际大小。

为什么高清电影拷不到U盘?

1480397637-7625-346c-46f4-8c81-8b00beb23f69
以前U盘只有2GB左右的时候,我们没有体验到NTFS与FAT的差别

提到现在流行的NTFS,不少朋友一定还记得FAT32。相信不少人在数据交换时候遇到这个问题,就是想将自己的蓝光影片文件拷到U盘然后分享给其他人,谁知拉到U盘根目录的时候发现不能拷进去。折腾了好久,原来是FAT32的锅。

1480397637-3432-be04-469b-92f8-a670ea96995e
FAT32分区内无法存放大于4GB的单个文件

为什么要淘汰FAT32呢?相信你会有这么一个感受。FAT32分区内无法存放大于4GB的单个文件。同时,如果你是一个FAT32文件系统的过来人,那么你一定会对磁盘碎片整理工具十分熟悉。因为当文件删除后写入新资料,FAT不会将档案整理成完整片段再写入,长期使用后会使档案资料变得逐渐分散,而减慢了读写速度。硬盘碎片整理是一种解决方法,但必须经常整理来保持FAT文件系统的效率。

1480397637-5163-0e38-44fd-b926-46df151d833e
格式化到NTFS格式

所以,以后使用U盘的时候,务必记得格式化到NTFS格式了。

总结

1480397637-1687-7b06-4f27-b06a-63f30eb19468
小知识,大用场

整理了无数资料,加上有限的知识以及十多年使用电脑的经验,组成了今天关于存储系统的扫盲文章。只要能够给网友带来茅塞顿开的效果,小编就满足了。

事实上,存储系统知识无非就是文字游戏。对于原理性的东西,我们不必去追本溯源。毕竟,我们只是用,而不是用来研究。不然作为小白,过于钻研这些知识的话,最终可能沦落到被人研究的下场呢!

出处:PConline  作者:Fison

喜欢 (0)or分享 (0)

您必须 登录 才能发表评论!