存储的过去与未来 分析存储I/O与物理定律
扫描二维码
随时随地手机看文章
进入2000年后,存储行业发生了翻天覆地的变化。有好的变化,同时也有令人不太满意的地方。比如存储管理方面的情况变得有些糟糕。大家要克服的种种限制,其实是由简单物理学造成的。数据从应用程序转移到硬件受制于计算机及其存储硬件里面的物理制约因素。
我们先不妨比较一下1976年、2002年和2010年各自最快的计算机和最快的磁盘存储设备,以便更深入地了解我们在最近26年所看到的变化。
* 虽然处理器性能也许不能最准确地衡量吞吐量,但是个很好的衡量标准。
**指每秒百万次浮点运算
***指每秒万亿次浮点运算
****读写操作的平均寻道和延迟时间
*****使用光纤通道RAID,使用2 Gb接口和RAID-5 8+1
******源自towww.top500.org,参照2010年6月的排名
*******使用RAID-5/6 8+1或8+2
下面比较了彼此的差异:
与系统处理器性能的提升幅度相比,寻道和延迟时间的改善幅度一向很小,闪存驱动器除外,那是由于磁盘是机械设备,但闪存驱动器取代不了所有的磁盘存储设备。原因是闪存成本实在太高了。有些人表示,闪存驱动器密度的增加幅度够大,有望成为切实可行的存储设备,但我总是要问的一个问题是,闪存驱动器密度增加的速度是否与存储增长的速度一样快。我们都知道,答案是不一样快。
我早在2002年就说过,存储密度并没有跟上系统处理器性能提升的步伐;当时至少落后两个数量级以上,就算使用RAID-5 8+1,也是这样。自2002年以来,这个问题变得尤为严重(闪存存储设备除外)。普通硬盘(HDD)的寻道和旋转延迟时间没有发生太大的变化。随着时代不断迈进,闪存驱动器的性能将受制于整个存储堆栈的性能。处理器中断的成本、SAS/SATA驱动程序的访问以及通过电缆的访问将成为三大限制因素。
早在2002年,计算机内存系统与存储硬件之间最常见的总线接口是PCI,当时PCI的最大速率为 532MBps,但速率约1GBps的PCI-X变得普及起来。哇!很难相信:到2010年,如今性能最高的总线是16通道的PCIe 2.0,每条通道的额定速率为500MBps,也就是说全双工速率为8Gbps;没错,PCIe 3.0即将来临;但据我所知,我们在一段时间内看不到16通道的PCIe 3.0(只有8通道的PCIe 3.0),所以性能与16通道的PCIe 2.0一个样。这是2002年性能的8倍。自2002年以来性能提升了30倍,这相当差;但截至今天,还没有哪家存储厂商生产出16通道的 SAS/SATA /光纤通道卡。16通道插槽一般用于图形卡,而不是用于存储设备。目前市面上速度最快的存储卡只是8通道,这相当于性能只提升了4倍。这不是相当差,而是非常差。
我当时还预测,考虑到磁盘驱动器是机械设备,它们不会发生太大变化;事实确实如此。如今闪存驱动器在市场上很普遍,但它们无法用于满足所有的存储需求,因为每吉字节成本要比普通存储设备高得多。我曾说过,推动存储行业发展的动力主要是消费者需求。今天看了一家知名网上零售商的报价,发现256GB容量的2.5英寸闪存驱动器售价699.00美元,而2TB容量的3.5英寸普通硬盘售价129.99美元(两者都是消费级存储设备,不是企业级存储设备)。没错,闪存驱动器的成本是在下降,但仍有很长一段路要走。我个人认为,闪存驱动器恐怕永远取代不了普通硬盘。
我在2002年说过:“重要的是,在可预见的将来,总体趋势不会改变,除非你打算购买成本比普通存储设备远高出100倍的固态硬盘,作为你的所有存储系统。每天在每个系统上,你都会面临性能问题,要求你对设备提出大量请求,那样才能获得很高的设备利用率。”上面这个例子中的成本差异现已缩小到42倍——这个差异很大,但对大多数系统来说还是并不经济高效。
我强调,需要有大量的I/O请求才能高效利用磁盘驱动器。这对硬盘驱动器性能,以及操作系统、协议文件系统和存储系统的其他问题来说仍然很关键,因为I/O请求常常被分解成小的请求。
其实自2002年以来变化甚小——至于存储方面,可能自1976年以来就是这样。固态硬盘出现在世人面前已有将近30年,它与普通硬盘的成本差异现已缩小到42倍,而在早期高达1000倍。30年来已出现了大幅缩小,但是综观所有计算技术,从1000倍缩小至42倍还不足以为此做几个后空翻,以示庆贺。
计算技术变化的步伐在放缓。是的,现在我们有更多的处理器核心和更高的FLOPs(每秒浮点运算次数),但那些是实际有用的FLOPs吗?内存带宽有没有随着处理器性能的提升而增加?当然,所有这些问题的答案都是否定的。随着处理器性能和核心数量的增加,内存带宽却严重滞后,即使英特尔和AMD推出了最新的芯片组,也是如此。存储方面更糟糕。
唯一的亮点是闪存驱动器。就算闪存驱动器的速度极快,存储仍将是瓶颈。原因何在?我在2002年写的那篇文章没有提到的一大方面是软件。存储堆栈在过去20年里没有发生太大的变化。每当进行读取或写入操作,操作系统、文件系统、SCSI驱动程序、网络驱动程序都参与其中。由于网络堆栈开销,这种情况并没有因CIF或NFS等协议而得到任何改善。
要是存储堆栈方面不有所变化,我认为存储会让位于相变内存、惠普的忆阻器(Memristor)以及实现字节寻址能力(NAND闪存无法实现)的其他技术;厂商们会改动芯片,以支持包括这些技术的存储层次体系。
将来总是会需要存储堆栈和磁盘驱动器,但这并不意味着,I/O操作的大部分会使用这个堆栈——即便过几年,也是这样。最后可能会出现这一幕:你把数据读入到速度不如DRAM,但比闪存驱动器快得多的某种新的高密度存储器,而存储堆栈在系统重启之前根本不会再读取数据。
我不知道等这一幕变成实现时,自己是不是还在撰写存储方面的文章,或者甚至从事咨询行业。