扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
SSD使用的NAND闪存和硬盘驱动器使用的磁记录技术有很大差异。由于克服了重写次数限制的缺点,SSD成为可以取代硬盘的技术,不过也不能说完全取代。
理想地说人们期待有针对SSD进行优化的操作系统和文件系统支持,不过正是因为SSD最终将普及,所以现在也应该开始打算开始对SSD友好的操作系统和文件系统,我认为今年发布的Windows 7就是一个好的例子。
● Windows 7针对SSD的三个特点
去年召开的WinHEC 2008会议上,微软就讨论了Windows 7操作系统对SSD固态硬盘的优化。
如果Windows 7检测出SSD的话就会自动禁用磁盘碎片整理功能
在SSD上,Windows 7将自动禁用磁盘碎片整理功能,由于SSD出色的随机读取/写入性能,类似于磁盘碎片整理这样的功能已经没多大作用了。Vista会进行自动碎片整理。这对SSD来说不仅是一个没必要的功能,而且,更糟糕的是它会使SSD磨损的更快。
第二个特点是存储设备设定的分区。Windows XP的第一个分区是从63扇区开始的,而在SSD扇面上则是从中间开始的。这种偏离的分区方法会导致在Read-Modify-Write操作下性能降低50%。根据Intel发布的SYSmark 2007 Preview基准测试结果,Windows XP的比分低于Windows Vista,可能分区问题是其中的原因之一。
最新版本的Vista和Windows 7中不存在这种分区问题。问题是Windows XP的升级
据微软称,最新版本的Vista和Windows 7中不存在这种分区问题。问题是Windows XP的升级。当用户在SSD上将Windows XP升级到Windows Vista或者Windows 7,那么就需要注意原始性能问题。
根据Intel发布的数据,运用SSD可以大幅提高Windows XP和Windows Vista的性能
第三,是关于Trim命令的实现。Trim命令能够统治SSD某个区块已经不再使用,SSD将其空间收回纳入下一步的“损耗平衡”运算中。在Windows 7中专门支持Trim引擎,可以侦测到SSD中各个存储单元的利用率,并且加以平衡。
微软提议Windows 7支持Trim指令
这个Trim指令是微软工程师向ATA标准化组织INCITS的T13技术委员会作为“Set Management Commands Proposal for ATA8-ACS2”提出的建议。所谓Set Management Commands Proposal for ATA8-ACS2是指将从操作系统传送到设备的数据命令集属性作为最初的Trim命令。
2008年11月召开的WinHEC大会上,微软正式宣布了ATA8规格,实现了微软提案中提到的Trim指令
● Trim问题和解决方法
然而,e07154r6草案所提出的Trim指令在现实中的实现却带来了诸多的疑问,甚至有反对的声音。e07154r6中规定Trim指令用于那些不会再被读取的LBA,当一个LBA被Trim指令指定后,该LBA被定义为Indeterminate(未确定),从而可以进行写入,写入之后的状态则为Determinate。而对于提高控制器关于碎片整理和擦写的自由度来说,这种状态是合理的。
但是,被Trim指定的LBA在OS看来是不用的,不需要再读取的,上面的数据也无法正常的使用(就像垃圾箱功能中等待恢复的文件)。可是,在以往的存储设备中,即是OS判断不用的扇区与块,其上面的数据也不会随意的覆写,而且很多存储技术也正是基于这种操作模式而存在。比如RAID技术。
以RAID 5为例,它是以多台存储设备构成Striping(条带)存储池,通过奇偶校验来保证数据的安全。当其中的一个存储设备出现故障时,使数据的恢复成为了可能。在整体的运作中,一直要进行奇偶校验,写入的数据将被计算和记录,计算的依据就在于条带上的其他存储设备上相应扇区和块上的数据。可是文件占用的块也采用Trim指令时,文件将被消去,奇偶计算也将失去意义。因为Trim指定的块,在下次写入之前,其中的数据内容是不确定的,而如果搀杂着未确定的数据,那么奇偶校验也就是不可用的。在这方面,本来就是竞争关系的NetApp与EMC则都表示质疑Trim指令。
存储系统大型厂商EMC和NetApp虽然存在竞争对手关系,但是对实现Trim指令的质疑却是一致的
两家厂商都指出,当Trim块被读取的时候会发生什么,这可能引发安全性问题
另外也有这样的意见,在现有的ATA8的草案中,利用IDENTIFY DEVICE指令的部分代码定义,可以在Trim指令之后仍然能读取确定的数据,而这种代码定义可以通过OEM厂商自行修改。从而可根据需要,尽量平衡Trim的自由度与像RAID存储这样的高可靠与可用的需求。
另外,也有意见是使用外部的物理跳线与DIP开关来进行这类的转换,不过这样一来,SATA硬盘无需跳线设定的优点也就不存在了。
关于Trim指令的动态,2009年4月也将把其放入到与SCSI指令集相兼容的考虑范畴,但全部要Trim读取为零的建议还有很大的不确定性。在这个状态下,不能说Windows 7支持这一指令是不正确的,只是带有不少疑问。不过现有的态势表明,将会尽量避开e07154r6草案中的形式。有关这方面的问题,我们们也将继续予以关注。