随着节目制作的发展,高清、3D及4K等更高要求的制作标准被发布,非线性编辑网络业务应用中对存储体的要求也越来越高,使用旋转盘片结构的传统机械硬盘在高端应用中已经越来越显得力不从心。固态硬盘(SSD,Solid State Disk)在这方面比之传统机械硬盘有着无与伦比的优势,如没有寻道时间,对任何地址的访问耗费开销都相等,随机IO性能好等,将是构成未来高清制作网存储系统中的重要组成部分。但同时由于固态硬盘技术本身的原因,容易产生硬盘损坏,如何在享受固态硬盘优异性能的同时保证数据安全、降低系统使用费用,是非线性编辑网将要面临的问题。
一. 固态硬盘技术及其优点
固态硬盘是一种利用Flash芯片或者DRAM芯片作为永久数据存储介质的硬盘,前者称为NAND FLASH DISK,后者称为RAM-DISK。由于在外部电源断开后,RAM-DISK必须使用电池维持硬盘数据,价格昂贵,应用环境受到较大限制,所以现在常用的固态硬盘基本以Flash芯片介质为主。
以FLASH芯片为介质的存储单元分为两类:SLC(单层单元)和MLC(多层单元)。SLC(单层单元)的特点是成本高、容量小、速度快;而MLC的特点是容量大成本低,写入速度和IOPS低于SLC。MLC每个单元存储容量为2bit,相对SLC来说整整多了一倍。不过,正是由于每个MLC存储单元中存放的资料较多,结构相对复杂,出错的几率会增加,必须进行错误修正,这个动作导致其性能大幅落后于结构简单的SLC。此外,SLC闪存的优点是复写次数多达10万次,比MLC高10倍。
Flash存储芯片和其它所有类型的ROM一样,使用一种名为“浮动门场效应晶体管”的晶体管来保存数据,每个这样的晶体管称为一个单元(Cell)。每个单元(CELL)由Controler Gate(控制门)、Floating Gate(浮动门)、半导体二氧化硅绝缘层以及输入端和输出端导线等逻辑元件组成。当多个单元串并联时,将每个单元串上所有单元(Cell)串联起来的导线称为BitLine(位线),将多个并联的单元串中相同位置的单元水平贯穿起来的导线称为WordLine(字线)。
通过单元(CELL)组成固态硬盘的最小文件存储单位称为Page(页),通常有4KB和8KB两种,Page上面一层的组织是Block(块),由128或者512个Page组成一个Block。一定数量(2的幂次方)的block构成更高一级的结构Plane,若干个Plane组成一个芯片,多个芯片组成一个固态硬盘。在固态硬盘的设计中,任何文件占用的空间必须是整个Page,即读数据时必须以Page为单位进行读取,而擦除和写入的时候必须以整个Block为单位进行擦除。
固态硬盘与传统机械硬盘比较,拥有以下优点:
1. 启动快,没有电机加速旋转的过程。
2. 不用磁头,没有在传统机械硬盘中影响效率的磁盘寻道时间,可以快速随机读取,读延迟极小。
3. 相对固定的读取时间。由于寻址时间与数据存储位置无关,因此磁盘碎片不会影响读取时间。
4. 能耗低,发热量少
5. 内部不存在任何机械活动部件,不会发生机械故障,也不怕碰撞、冲击、振动。
二. 固态硬盘技术中存在的问题
虽然固态硬盘有着传统机械硬盘不可比拟的优势,但因为固态硬盘的技术特征,仍然有一些问题需要在使用时加以注意:
1. 因Erase before Overwrite产生的写惩罚问题
对于固态硬盘,要对一个Block进行写入,不管Block中原来的数据是1还是0,新写入的数据是1还是0,必须先通过Erase操作把Block全部写为1,然后才能向Block写入新数据,这种过程称为Erase before Overwrite。对于整个BLOCK或者更大单位的数据改写时,这种技术设定不会产生什么问题,但是当对较小的数据存储单元如PAGE进行修改时,就会有问题出现了:
假设当我们需要更改某个PAGE的数据时,其操作为:
·先将整个BLOCK的数据读入固态硬盘的缓存区(RAM)
·通过ERASE操作改写整个BLACK全部为1
·将待写入的数据PAGE中的内容,在固态硬盘的缓存区中替换掉旧PAGE中的内容
·将固态硬盘缓存区中的整个BLOCK内容回写到固态硬盘上
假设此时Block和Page分别为512KB和4KB时,为了写入1个Page(4KB)的数据,必须先读出512KB的数据到RAM上,修改RAM中的数据后将512KB数据回写到固态硬盘上,此时就会产生所谓的“扩大写惩罚“问题,即为了写入4KB的数据,而实际上写入了512KB的数据,产生了512KB/4KB = 128倍的惩罚,这就大大增加了开销。
2. FreeSpace为0时导致的写动作惩罚
当固态硬盘为全新或刚被全部Erase操作以后,所有的Block对于文件系统或固态硬盘来说都是空闲空间(FreeSpace),此时该空间的状态被标记得ERASE,往这种空间写数据时没有写动作惩罚。
随着数据的写入,固态硬盘会将曾经被写入的Block都记录下来,被用的BLOCK在使用时就需要进行重新ERASE操作。对于文件系统来说,删除文件并不是向这个文件对应的存储介质空间覆盖写入全0或者全1的过程,而只是对元数据的更改,所以只会更改元数据对应的存储介质区域。因此,删除文件的过程并没有为存储介质释放FreeSpace,对固态硬盘来说FreeSpace只会越来越少,最后导致没有FreeSpace,每个写动作都产生写惩罚。
也就是说,对于一块使用时间非常久的固态硬盘来讲,就算它被挂载到文件系统之后,其上没有检测到任何文件,但其中的FreeSpace也可能是0,限制了SSD的效率。
3. Wear Off
固态硬盘是使用Floating Gate(浮动门)的充电和放电来保存和释放每个单元其中的数据,使用绝缘层来隔绝电子流动来保持数据。随着固态硬盘的长期使用,特别是大量写操作之后,绝缘层的绝缘能力将遭到损耗,最后无法保证Floating Gate(浮动门)中保有足够的电势时,数据就会丢失。当固态硬盘检测到一个Bitline(字线上)的Floating Gate(浮动门)电势不一致时,整个BitLine就会被被判读为损坏,即Wear Off。一个损坏的Cell将拖累整个Page被标记为损坏。损坏的Page对应的逻辑地址将被重定向映射到其它完整的预留Page。在某些场合下,特别是对于频繁写的场合,很可能在短时间内就达到MLC或SLC的可擦写寿命上限,导致预留Page被迅速耗尽,从而导致整块固态硬盘失效。
三. SSD的延寿使用
为了避免因为固态硬盘失效而导致数据丢失,以及降低固态硬盘存储因为硬盘失效更换而产生的额外维护费用,在固态硬盘使用时必须注意:
1. 确保固态硬盘运行在AHCI模式下,并且操作系统使用WINNT6.1或者更新版本
先从操作系统说起,固态硬盘的兴起毕竟不是很长时间,微软从windows NT6.1系统才开始对固态硬盘提供完美的支持,这其中最重要的是支持TRIM指令。
TRIM是ATA指令的一种,并在WINDOWS NT6.1(WINDOWS 7以及WINDOWS SERVER 2008R2)中首次实现。这个指令的作用是标记已删除的文件,并且通知固态硬盘主控制器可以在空闲时间擦除这些文件对应的Block块,这样可以将扩大写惩罚的任务量分散到固态硬盘硬盘的非繁忙时间,从而提升了固态硬盘硬盘的效率。
TRIM指令只能在ACHI模式下通过特殊版本的ACHI控制器驱动才可以传输,并不是说系统支持TRIM主近代也支持TRIM就能用,驱动也必须要支持。另外ACHI模式下开启NCQ(原生命令队列)之后对于随机写性能的提升是成倍数的,效果非常明显。
本项通常是对应于配备固态硬盘的非线性编辑单机,要求其采用WINDOWS 7以上的操作系统而非采用WINDOWS XP操作系统,可以大大提升SSD硬盘的读写效率。对于非线性编辑网络的共享存储系统时,亦需要注意到各个直接连接到存储系统的非编站点是否具有上述功能。
2. 务必“4K对齐”[page]
传统的机械硬盘在格式化时,通常设置为以4K(4096字节)作为一个扇区,所谓“4K对齐”就是符合“4K扇区”定义格式化过的硬盘,并且按照“4K 扇区”的规则写入数据。因为在较早的NTFS6.x 及之前的规范中,数据的写入点正好会介于在两个4K 扇区之间,也就是说即使是写入最小量的数据,也会使用到两个4K扇区,显然这样对写入速度和读取速度都会造成很大的影响。如果固态硬盘碰上“4K不对齐”的情况,不但会极大的降低数据写入和读取速度,还会造成固态硬盘不必要的写入次数,这种情况通常会出现在对大量小文件的写入性能上,极端情况下可能会产生数倍的差距。
3. 不能使用碎片整理功能(Defrag)
传统的机械硬盘由于寻道时间限制,如果文件是以连续形式存放于硬盘上,在读文件的时候会有较好的效率,所以才产生了碎片整理的概念和工具,利用工具将不连续的数据碎片迁移为较为连续的物理存储状态。但是对于固态硬盘来说,它的结构和组织方式和机械硬盘截然不同,IO性能不受文件存放位置影响,相反如果对固态硬盘使用传统的碎片整理工具,在碎片整理过程中会对硬盘进行大量的写操作,将会对固态硬盘寿命带来不必要的缩短。
4. 将页面文件(Page File)转移到固态硬盘以外的硬盘上
Windows的页面文件本该是作为操作系统的虚拟内存存在,用于在内存被用完时起代替代内存的作用。在如今的非编站点内存普遍较大的情况下,Windows的内置机制却仍然会频繁使用页面文件,而页面文件的功能是不能够彻底关闭的。如果该页面文件位于固态硬盘上,会产生大量写操作,消耗固态硬盘的寿命。所以在电脑上最好多安装一个机械硬盘,将页面文件移到机械硬盘上。
5. 关闭索引服务(Indexing Service)
Windows的索引服务会建立一个庞大的数据库,对每一个文件的创建、修改、删除都记录在案。这个服务的目的是为了更快的搜索文件,但是这个功能很少直接被应用到非线性编辑网络中(更通常是在非编软件的资源管理器,通过非编软件的数据库去搜索文件)。所以这样一个服务在绝大多数的情况下只起到拖慢系统速度的作用。另外,频繁的读写对固态硬盘的寿命也带来不利影响,所以建议还是关掉这个服务。
通过上述的几种要点,其目的都是尽量减少固态硬盘使用中的不必要写入次数,从而延长固态硬盘的使用寿命,降低数据损坏的风险和系统日常维护费用。
四. 固态硬盘的新技术发展
通过上述的做法只能延长固态硬盘的使用寿命,但仍不能从根本上解决固态硬盘的问题。随着技术的不断发展,固态硬盘的新技术亦给我们的带来新的应用模式:
1. 使用固态硬盘芯片作为传统机械硬盘的缓存
既然单独使用机械硬盘或固态硬盘均不能满足用户的需要,那么将两者结合起来会产生什么样的效果呢?
服务器级机械硬盘现在主流使用64MB的RAM作为缓存,这已经能够较好地提升机械硬盘的效能,如果在此基础上将数十GB级的固态硬盘芯片作为机械硬盘的缓存使用,将产生如下效果:
(1)使用固态硬盘芯片作为缓存,比之使用RAM芯片作为缓存,读写速度仅相差不到10%,而固态硬盘芯片与传统机械硬盘则有着50到300倍之间的巨大落差,完全可以将固态硬盘芯片取代RAM芯片作为硬盘的缓存使用;
(2)使用GB级别的固态硬盘芯片作为机械硬盘缓存,比之使用MB级别的RAM作为机械硬盘缓存,可以极大地提升缓存数据的命中率,使大量的数据读操作从较慢的机械旋转式硬盘中读出变成从较快的固态硬盘缓存中读出,从而提高硬盘的读写效率。
(3)用于缓存的固态硬盘芯片可以使用更高速的DRAM芯片取代FLASH芯片,由于DRAM芯片没有FLASH芯片固有的Erase before Overwrite、0 FreeSpace和Wear Off问题,使固态硬盘燕片的使用寿命延长。而作为缓存使用的DRAM固态硬盘芯片无须考虑在断电情况下长期保存数据所需要的电池问题,仅需要保证在断电情况下数据从固态硬盘到机械硬盘的传输时间供电,从而大幅降低固态硬盘部分的造价。
此类技术,如Intel Smart Response(英特尔智能响应)等等,已经可以让用户能够把固态硬盘(部分或全部容量)用作于机械硬盘(单块或RAID阵列)高速缓存,让整机系统获得接近于固态硬盘的读取/写入性能,同时还能保留机械硬盘容量大的优势。
2. 使用固态硬盘的存储融合服务器
目前电视台所用的在线存储主要使用8Gb/s的光纤通道作为传输载体,和目前的PCIe总线速度相当。而英特尔第2代的PCIe将达到20Gb/s,第3代将达到100Gb/s,这将是一个很大的提高,也意味着服务器将等待网络存储的时代又一次来临。
而不管是NAS还是SAN,在连接速度上都比不上DAS,因此将存储集成到站点内部是一个可以大幅提高存储读写速度的办法。这种存储所带来的优势是将数据放入内存的速度比以往更快了,固态硬盘将毗邻站点内存,从而提供一个更快的存储层。
也就是说,未来对于需要高速读取数据的站点来说,固态硬盘将是介于内存和传统机械硬盘的高速存储层,直接通过PCIE总线与内存进行数据交换,再通过SAS/SCSI/SATA接口与传统机械硬盘进行数据交换。
相比之于上面的“使用固态硬盘芯片作为传统机械硬盘的缓存”方式,其提供的缓存存储层容量更大,但仍然没有脱离“将固态硬盘作为传统机械硬盘的缓存”的模式,数据并不是长期保存于固态硬盘上。
上述技术,已经在DELL的服务器以“0层存储”的名称得到应用,DELL的“流动数据”架构在EqualLogic和Compellent基础上进行了扩展,通过RNA Networks的技术实现了上述功能,基于闪存的服务器运行数据库查询的速度比目前这一代要快60倍。
3. 具备固态硬盘存储层的智能型分层存储
当存储容量和读写频度增加到一定程度之后,仅仅将固态硬盘作为传统机械硬盘系统的缓存也会产生问题,主要在于随着缓存层的容量增大,大量的读写操作均发生在作为缓存层的固态硬盘上,而作为实际存储层的传统机械硬盘速度与之相差太远,需要有管理机制来协调两者之间数据迁移操作业务。如:
·通过存储策略,以数据的最近使用时间和频度来判断缓存层的数据是否有回写到传统机械硬盘的必要。将高频度使用的数据保存于固态硬盘中,并将一定时间未使用的数据回迁到机械硬盘中,腾出固态硬盘中的存储空间。
·通过迁移策略,将数据回写的时间调整到非业务繁忙时间,从而使固态硬盘在业务繁忙时间集中于关键业务上。
具备固态硬盘存储层的智能型分层存储已经在多个不同厂商的不同产品中得到实现。其中固态硬盘可以是一种插卡式扩展存储(如Fusion IO的IO memory平台)也可以是直接设计到存储系统中的分级存储盘箱,其关键点不在于固态硬盘存储而在于实现智能化分层存储的技术与后台引擎。如自动分层存储技术先驱厂商Compellent(已在2010年底为Dell并购)的Storage Center系列存储设备与Data Progression自动分层存储技术;EMC的Fully Automated Storage Tiering(FAST和FAST VP)技术等等。
五. 结语
无疑,SSD相对于传统机械硬盘来说,优点是很明显的,但同样缺点也很明显。无论是应用于非编站点单机本地存储,还是应用于非编网络的共享存储,SSD都能胜任,除了价格较高和读写次数较为有限的缺点之外,SSD在非线性编辑网络中的应用将会越来越广,而各种结合SSD与传统机械硬盘的技术,不论是在硬盘内部结构层面、两种介质间的融合层面还是分层存储层面,其目的都是在保持SSD的高性能的同时提高它的稳定性,而随着新的技术不断涌现,我们也期望着更快(读写速度更快)、更高(IOPS更高)、更强(稳定性更强)的存储系统,为广电行业的制作网提供更好的基础技术平台。B&P