【101】从机械硬盘到SSD:高性能I/O之路



  • 作者:一盘散沙 校对: alex

    机械硬盘

    我认识个人电脑以来,机械硬盘陪我走过了差不多快20个年头。从联想的1G机械硬盘开始,市场上涌现了很多优秀的消费级产品:昆腾火球、希捷酷鱼、西部数据鱼子酱等3.5寸机械硬盘。

    2001年拥有了自己的第一台笔记本电脑后,在升级的过程中也慢慢接触了东芝、日立、IBM等品牌的优秀的2.5寸机械硬盘产品。

    现在自己在家的数据存储使用了二手的SAS磁盘阵列软RAID5,也有一张闲置的12口Areca阵列卡,能够起到大量数据存储的功能。

    0_1470086646438_i1.jpg

    机械硬盘工作结构与原理

    • 电机带动平行的多块硬盘盘片旋转,一个机械硬盘内部可能会有多个盘片
    • 磁头在磁头臂控制下,沿盘片的径向移动来扫描磁道上的数据
    • 格式化后,每一盘片被划分为一堆同心圆即磁道,磁道垂直排列构成柱面
    • 柱面被划分为读写单元即扇区

    0_1470086781085_i2.jpg

    如何提高机械硬盘的性能参数:容量/速度/寿命

    磁盘的容量增长相对来说是一个非常稳定的状态,尽管无脑增加盘片数量,以及增加存储密度来获得更多的单盘片磁道和扇区听起来特别容易,从2010年以来,3-5盘片、单盘600GB左右似乎已经走到了尽头。

    所以短期采购看来,容量革命就显得并非那么容易,如何在不严重损害工作寿命的条件下,提高机械磁盘的速度至今仍然是小到PC用户,大到机房管理者需要考虑的重要命题。

    • 无脑提高转速

    只要代表硬盘转速的角速度越快,线速度理所当然的也就越快,结合存储介质密度的提高,单位时间扫过的数据也就越多。常见的机械硬盘转速有5400和7200 RPM(每转miniute)之分,而某些企业级硬盘还有标称10000-15000rpm的磁盘。一块全新的机械硬盘在工作状态良好的时候,持续性或者爆发性读写达到120-200MB/s是完全没有问题的。为了翻倍的速度你很可能会发现,不少高速企业级硬盘的售价成几何倍数的增长。

    • 接口更替:永远不让接口成为性能瓶颈

    2001年,数个硬盘制造厂商将旧有的消费级接口P-ATA规范下制造的、使用IDE排线来连接的硬盘标准革了命,并换以更新的SATA标准。可以看到,规范降数据传输的上限从133MB/s在3-10年间分多次的更新为SATA 1.0的150MB/s,2.0的300MB/s以及3.0的600MB/s,在很大程度上标准的确立扫清了未来SATA接口硬盘的速度瓶颈障碍。

    0_1470089802327_i3.png

    对于SCSI接口普通的用户可能比较陌生,在传统的企业级系统中该种接口使用的比较广泛,Ultra 320 SCSI标准的速度瓶颈就已经碾压了P-ATA规范达到320MB / S。当然后来SAS(串行连接SCSI,串行连接SCSI,不是统计分析语言的那个SAS)二代标准公布以后,在接口性能(瓶颈600MB/s)以及接口兼容性(兼容SATA)方面得到了完善。现在我们能见到的很多机房都在使用SAS接口的硬盘,硬盘的性能和价格对于企业来讲达到了一个很好的平衡,因此有大规模磁盘部署需求的企业往往会大批量购置SAS硬盘。关于如何管理一大堆SAS硬盘,就不能不提到另外一种技术:RAID。

    • 使用RAID技术

    独立全称是冗余阵列Disks,很多时候中文简称叫做磁盘阵列。也有一种搞笑的说法是说,字母I代表着Inexpensive(便宜)。因为单块硬盘瓶颈有上限,然而又不愿意花5倍的钱购置相同容量、速度翻倍的企业级硬盘,就可以使用RAID这种技术。

    RAID 0:数据一份会拆开写入ñ块盘的相同位置,理论上可以加速ñ倍

    RAID 1:数据一份会它的镜像就是写入ñ块盘的相同位置,速度不变,稳定性提高

    RAID 5:数据一份会拆开写入ñ块盘的相同位置,第N + 1块盘做奇偶校验

    没有人会简单的使用RAID 1比较安全然而性能完全没有提高; RAID

    0_1470089869821_i4.jpg

    软RAID需要主板BIOS驱动即可支持,属于成本低廉之选;而更多的企业级解决方案直接使用硬件RAID卡,比如国内二手市场常见的火箭卡,或者ebay常见的Areca等都是比较常见的牌子。尽管价格贵了不少(动辄几千到上万元),但硬件RAID卡提供高达24口SAS盘的支持,数据通道走PCI-E也能大幅度提高瓶颈的上限,而数据爆发写入又有DDR内存提供缓存支持,使得在一定成本的约束下,持续性读写与整体稳定性都上了一个新的台阶。

    • 奇技淫巧

    在机械硬盘发展历程中一直存在着一些说不上重大改进,但是变相的提高了性能的小技术。比如为了提高电机马达转速,轴承从金属轴承换为液压轴承(东芝在2004年提出,最终放弃);借鉴硬件RAID卡使用DDR做缓存的思想而产生的混合硬盘(2010年前后希捷在500GB硬盘上加上了4GB的NAND闪存用于加速)等等。

    机械硬盘之殇

    在实际使用过程中,属于机械硬盘的「终极问题」慢慢浮出了水面。

    不知道你注意过没有,当机械硬盘使用过一段时间的时候,性能会持续的下降,表现为开机时桌面图标加载缓慢,上网时缓存加载缓慢。某些解释说“文件系统产生了大量的文件碎片,导致无法连续读写”,这时候Windows系统往往会建议我们进行“磁盘扫描”“碎片整理”,然而一旦真正开始整理碎片,对一块可用空间不够或者容量较大硬盘的硬盘而言,整个过程会长达数个小时甚至一天。

    而有的时候,我们本身就在产生碎片型文件。最典型的就是Matlab软件的安装:安装包中有大量的.m小文件大小都在4KB以下,这些文件往往散落在磁盘的各个角落。非计算机、电子的理工科学生为了学习编程往往会非常头疼这个2GB以上,小文件超多的东西(2GB现在看来其实并不多)。

    0_1470090538872_i5.jpg

    文件碎片以及Matlab为何会拖慢硬盘速度?根源在于随机寻道:在读写不连续的时候,每次发生访问请求时,硬盘都要调整磁头,定位到我们需要的数据位置,把数据读取出来。调整磁头的这部分时间本身有一个overhead(固定的额外开销),被称为随机寻道时间。典型的随机寻道时间大概在5-10ms。这是什么意思呢?连续数据我可以100MB/s的速度进行读写,而对于非连续数据,我只能在1秒内处理100-200个随机读写(随机I/O)请求。

    在05 - 08年左右的Vista的时代,一种希望提升随机寻道性能的技术应运而生:

    NCQ(原生命令 在第一

    然而,并没有什么鸟用。即使是在RAID强大的加持下,就算连续读写速度高到飞起,仍然解决不了机械硬盘对小文件随机读写请求处理能力极度低下的问题。这个『终极问题』是机械硬盘技术本身无法回避的『机械硬盘之殇』。

    固态硬盘

    我想时至今日(2016年春夏之交),大部分人对SSD即固态硬盘都已经不陌生了,或者说至少有一个概念:“SSD的性能比一般硬盘要强”,这里所谓一般硬盘的参照物就是我之前详述的机械硬盘。

    2009年年夏天第一次听说这个东西,差不多冬天入手了人生前两块固态硬盘:英特尔的X 25E以及OCZ的消费系列,都是2.5寸SATA接口规格。

    0_1470092120763_i6.jpg

    可以看到SSD的出现彻底打破了先有硬盘技术的格局,存储使用NAND型Flash,在解决了寿命问题,能够接受大量的(保守1000次以上)整块写入、整块擦除后,能够保证超低的读写延迟,以微秒而非毫秒计的延迟直接把IOPS从机械硬盘时代的200推向了35000。再也没有什么『随机寻道瓶颈』了!

    一些最开始使用时的直观感受:

    • 不怕磕碰,噪音小,发热小,功耗小

    • SATA接口连续读写提升了1-5倍,体现在开机,搬运大文件快

    • 桌面图标刷新,浏览器缓存极快,极大改善了体验

    • Matlab的安装时间从2小时缩短到10分钟,对大量4K小文件搬运支持极好

    尽管当时确实付出了一些代价:32GB的初代英特尔X25-E SLC竟然要450美刀,但我义无反顾的走上了代表最高性能的磁盘——SSD之路,从2009年以后,我再也没有使用机械硬盘作为任何系统的主盘,全部换为SSD

    还是容量与寿命:NAND闪存的升级

    SSD产生伊始,其存储元件NAND型Flash高昂的造价以及并不友好的使用寿命都成了争议话题。一开始这种闪存芯片被大量应用于MP3播放器,而核心争议集中在两个方面:有限成本下容量小,而闪存芯片的擦除寿命又是有限的。

    机械硬盘除了机械元件失效,供电不稳定,物理碰撞,放置角度不当等因素会导致失效外,还算得上一个比较稳定的技术。Google曾经发布了一份研究报告显示,工作寿命超过2-4年的机械硬盘反而会在一定时间内『越来越稳定』,即其寿命的hazard功能会呈现一种下降趋势。

    0_1470092197248_i7.png

    跟机械硬盘的MTBF(平均无故障时间),也就是寿命分布时间完全不同的是NAND闪存芯片的寿命,可谓是擦一次就少一次。刚才提到的英特尔X25-E所使用的镁光SLC芯片擦除寿命只有10-100万次,而NAND Flash一旦产生坏块,这一部分区域就不再可用。也就是说,就算整个磁盘能够均匀的写入,保守估计也只能写入3200TB数据之后就失效了。假设这是一块闭路电视的监视器所使用的硬盘,每秒循环写入20MB视频数据,使用7年时保证会完全坏掉。

    作为生产NAND Flash的主流厂商,镁光、三星等超一线厂商在生产存储芯片上可谓煞费苦心:Intel的核心合作伙伴镁光率先发难,抢先发布了第一代消费级SSD产品X25-M(M代表Mainstream,主流的大众货)早在09年在制程工艺上提出了从50nm升级到34nm、25nm的三级跳,以满足更大的数据密度需求,变相也提高了寿命;三星的路子比较邪,升级制造工艺之后早早开启了争议巨大的潘多拉魔盒:TLC技术。

    0_1470092267465_i8.jpg

    跟SLC不同(单层单元)不同,MLC(多层单元)每一个记录数据的位置能够保存2个位,而TLC(三层Cell)每一个数据记录位置能够保存3个bit,在制造成本没有显著上升的情况下可以让SSD容量2倍,3倍的膨胀。

    然而这就是一杯毒酒:MLC的擦除寿命下降到了3000-10000次,而三星第一代TLC产品标称的擦除寿命是700-1000次。

    每次想在同一个位置多记录1个bit,元件在擦除次数上升的过程中,无法精确表达这好几个bit的风险就越高,寿命长度指数下降,就算是500GB硬盘,应用于视频监控录像时,容量提高了16倍,然而寿命下降到SLC的1%,寿命变为1年出头,十分凄惨。

    这种邪道的技术能够大行其道,终归是因为一点:绝大多数用户在绝大多数使用场景下,都不会有20MB/s,或者1.7TB/天的数据持续写入的需求。比如像我在担任数据工程师时,偶尔会有一天就能在硬盘上刷新500GB数据的需求,然而这种需求很可能一周只有1次,等到5年以后硬盘快挂了,但是那个时候我的工作机因为技术更迭很快的原因,也早就换掉了,再使用这块硬盘的几率就很低了,直接扔掉也不可惜。

    那闭路电视录像需求应该怎么办呢?循环写入,又对容量要求更高的时候,建议大家还是使用机械硬盘!

    还是性能:主控芯片之争

    主控芯片制造领域和闪存芯片制造领域还是有些不一样,技术实力雄厚的老牌技术厂商基本上使用ARM架构制造主控芯片,所以说反而是移动平台CPU制造商更有制造主控的优势。

    Intel,三星,东芝作为SSD领域的重要参与者绝对不会坐而放弃主控的份额这就自然不必多谈,做了可以结合自身产业链的优势攫取更高利润,不做的话就会处处受制于人。而SSD的下游厂商像苹果公司,自身具备制造ARM芯片的能力,因此也在发力制造自有的主控芯片,这种动作就让其主合作商东芝和第二大合作商三星显得有点进退失据了。

    在这里倒是要介绍两个其他厂牌的主控:Marvell公司和SandForce的。

    0_1470092306361_i9.jpg

    可能不在电子行业从业的人很难了解Marvell这家公司,甚至这家公司的中文名也充满了城乡结合部的味道:美满电子,在ARM芯片制造商领域被德州仪器、高通等巨头遮掩了很多光芒。但如果你知道世界上第一片四核ARM处理器芯片是出自Marvell之手,可能你就不会再这么想了。作为Intel、Crucial(镁光厂牌,由Micron改名而来)、浦科特等中高端SSD的主控供应商,Marvell的产品总是被人津津乐道。

    0_1470092333119_i10.png

    相比在韩国昙花一现,最后惨遭OCZ收购的Indilinx,SandForce作为小厂活的还不错,应该算是足够的幸运;但也许是因为产品定位的思路以及用质量妥协了成本的原因,SF的主控曾经一度受到过Intel消费级SATA接口SSD以及Intel/OCZ两家PCI-E SSD的垂青,也曾经在二线厂牌(比如金士顿、海盗船这种在SSD领域毫无自由技术的品牌)的普通产品中大卖特卖,但最终验证了一句话:出来混总还是要还的。

    SSD发展的最开始几年,由于整个行业技术的不成熟,OCZ的产品一度深陷品控的泥潭,很多人直接把SandForce主控的不稳定当做罪魁祸首。反观三星,840埃沃TLC推出时简直是力排众议,最后靠产品本身的多重保险(自有状态监控和冗余备份软件)最大限度地避免了口碑爆炸事件发生的可能性。

    还是奇技淫巧:压榨最后的性能

    在TLC尚未露头,MLC成本也居高不下的年代,微软率先在视窗7中加入了对SSD的一项良好支持:TRIM。这项技术能够在后台『偷偷滴』建立SSD使用情况的快照,使得SSD删除文件时无需擦除,而是等待写入时再直接覆盖写入。

    在TLC单盘性能已经到达550MB /秒的时代,基本上SATA 3.0接口的瓶颈(600MB / S)3.0 16X槽位数据交换的瓶颈可以达到15.754 3.0槽位已经绰绰有余了,要达到PCI-E SSD型的数据传输瓶颈仍然有一定距离。

    这里也要为OCZ Z-Drive系列默哀:尽管其PCI-E方案早早就拿了出来投放市场,终究因为SandForce主控的孱弱以及其整体造价的居高不下,基本走入了历史。

    0_1470092364674_i11.jpg

    性能相近的消费级PCI-E产品的英特尔750 1.2TB PCI-E已经能实现240K IOPS,而去年黑五我购入的价格仅为699美刀。回想起7年前购置的英特尔X25-E SLC 32G (50纳米)也花掉了450美刀,恍如昨日。

    新鲜的奇迹淫巧也慢慢浮出水面:使用PCI-E接口的NVMe(非易失性存储器 SSD产品产生。

    通向更高性能之路

    在东芝、闪迪这种技术跟跑者还在拼命奔跑追赶超一线大厂的时候,某些厂商已经有了更为宏伟的打算,比完全干翻机械硬盘整个行业还要夸张,是要革所有内存厂商、硬盘厂商的命。

    英特尔与镁光已经在研制下一代存储技术的3D XPOINT,拥有比DDR4内存更快的速度,还能拥有SSD的数据非易失性。

    0_1470092411601_i12.jpg

    就像北桥的消失,机械硬盘的逐渐式微一样,在不久的将来,是否内存厂商也要经历痛苦的份额被蚕食、公司被兼并呢?

    欢迎关注一盘散沙的公众号: yipansansha_workshop



  • 随着SSD的降价,我们会越来越享受更快的计算和存储了,也会对系统架构有所影响,部分弱化内存和硬盘的区别



  • RAID 5:数据一份会拆开写入ñ块盘的相同位置,第N + 1块盘做奇偶校验. 第N + 1块盘不应该是做冗余备份,在某块盘死掉之后可以恢复其数据的么。。。


登录后回复
 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待