探讨关于固态硬盘内部阵列的实现
目前做阵列,无论是传统的硬盘还是新出的固态硬盘,至少需要2个硬盘共同工作。这样会导致一些问题:1、连接复杂,需要额外的更多的数据线、电源线;2、电源的额外消耗;3、不便于减少空间占用。4、无法在笔记本等移动设备上实现高速或高可靠性应用。
我想,目前固态硬盘的出现和高速发展,将为单硬盘的内部阵列得到实现!大家都知道,单硬盘实现内部阵列以前也有提过,但是源于硬盘的内部多磁头多盘片虚拟成几个硬盘,但是这样受制于机械结构的发展,目前传统磁盘在机械性能改善上前途并不大,而且追求高速读取和短寻道时间也导致越来越要求单单碟容量越来越大,这样就更限制了传统磁盘内部阵列的可能性。
不过,鉴于固态硬盘内衣以上弊端,因此是可以考虑在固态硬盘上实现内部阵列的。首先技术上提供了可能。固态硬盘没有机械结构,划分为内部多个虚拟硬盘,只需要在固件上做出修改。比如一个160G的固态硬盘,通过控制芯片虚拟为2个80G的盘,可以作为0阵列或者1阵列,或者容量为300G的盘虚拟为3个盘,实现5阵列。(至于有没有必要虚拟为内部阵列,则是另外一回事,不属技术上探讨范畴)
实际上,单固态硬盘的实现只要主板和系统支持,安装系统的时候,先在BIOS里边设置为某种模式,这里以RAID 0模式、160G固态硬盘为例,有两种方法进行使用。
方法1、设置RAID0前,BIOS检测为单个160G硬盘,设置好后,BIOS检测为2个80G物理磁盘,总容量为160G。CPU发送同一个数据块的两个不同部分数据,都到这个物理160G上,由固态硬盘内部控制芯片进行分配。重启机器,安装系统的时候,对于160G进行分区安装。
方法2、设置RAID0前,BIOS检测为单个160G硬盘,设置好后,BIOS检测还是一个160G盘,CPU发送数据块到硬盘,由硬盘控制芯片进行二次分配,分为2个不同部分分别写入2个80G的虚拟盘中,实现内部阵列。
比较以上方法,两种方法都需要固态硬盘控制芯片的支持,但是支持的方式是不一样的,第一种是由CPU和主板进行控制,和传统的机械结构硬盘的阵列是一样的控制,固态硬盘控制芯片只需要按照指令分别存入不同虚拟空间,不负责二次分配数据;第二种和现在的单硬盘一样的数据传输,也就是说,主板和CPU并不认为存储子系统当前是阵列模式,数据由固态硬盘控制芯片按照阵列模式进行二次分配,分别存入不同虚拟盘中,从而实现阵列。第一种方法对于固态硬盘的控制芯片没有大的要求,只需要进行数据入/出控制。其他数据效验和数据分割均有CPU承担。硬盘可以实现更高效的数据传输,第二种方法主板和CPU不负责数据的处理,只是发出读写指令,至于数据的分割处理,则有固态硬盘的控制芯片来负责,这样对于固态硬盘的控制芯片具有很高要求,不仅运算速度要足够快,而且还要负责数据效验,工作量比较大,有可能影响读写速度。
不管怎么说,固态硬盘的出现,从理论上提供了可能,至于具体实现方法,则是研究人员的事情。这种内部阵列,需要几个方面的变动,一个是主板,包括BIOS,从底层能够解决单硬盘内部阵列的控制。再一个是系统,要能够识别这种内部阵列,从应用层面解决。第三就是固态硬盘自身的控制芯片的设计。
但是单硬盘的内部阵列,还有一个很大的问题需要解决,那就是如何保证可靠性?比如其中某一个存储芯片出现故障,数据如何恢复?RAID 0就不说了,天生的可靠性差,但是对于RAID1或者5的时候,应该是可以恢复的,那么如何来解决存储芯片故障导致的数据丢失?毕竟一般情况下,所有存储芯片同时损坏的可能性是比较小的(不是说完全不可能),因此就有恢复的可能。当然,这样对于硬盘维修和数据恢复公司就提出更高的要求!
不过这个固态硬盘内部阵列的设想,目前还很难实现,个人认为,有几个方面:
1、标准,这个是最大的问题,要实现这个应用,需要有一个国际标准,否则没法推广,这样起码需要Intel、AMD、IBM、微软等巨头共同推动。
2、成本,这个是前提!目前固态硬盘成本还很高,而要做大容量,成本将会非常高,成本在没有有效下降到一个合理水平之前,有了标准也没法推广。
3、固态硬盘自身的可靠性。目前固态硬盘的可靠性还有待时间的继续考验。
个人认为,这个方案比其他一些还比较遥远的新型存储方式要近一些,比如IBM的赛道内存,感觉还非常遥远。至少要普及还非常遥远。也许在不久的将来,我们就可以在笔记本上实现持续读取数据达到500M、1G或者更高!台式机也有更高的性能,笔记本也会有更高的性能和可靠性,从而为移动设备的高性能找到新的出路!