存储虚拟化可以提高设备使用率,节省存储系统的成本,存储系统的一个特点是它总是在不断的增加内容,因此很容易发生分配的存储设备用完的情况,这时候就需要购买新存储设备。如果有存储虚拟化系统,虚拟化系统集中的管理所有的存储设备,办法把他们映射成一个逻辑的存储空间,因此虚拟化系统可以很容易的把其他一些没有用完的存储设备映射到所使用的虚拟存储空间,从而提高所有存储设备的使用率,减少不必要的添加新存储设备。
存储虚拟化的另一个特点是它的开放性,存储虚拟化把各个存储设备的物理细节特征隐藏起来,提供一个统一的虚拟界面给应用程序或任何其他使用存储设备的系统,使用者只需对虚拟化后的存储空间操作,而不需考虑不同的物理存储设备,一些原来需要在每个物理存储设备上运行的软件或硬件系统,可以只在统一的虚拟化存储空间上运行。
类似的一些存储设备上优化性能的硬件,如缓存等,用于加速数据的交换速度,这种设备一般加在每个存储设备商,而且往往需要采用存储设备厂商提供的硬件,采用存储虚拟化后,可以把这些硬件集中于一处,对虚拟化后的存储设备操作,可以是性能提高更多,而且虚拟化后提供的是同一的存储界面,因此采用通用的硬件,如通用内存做缓存,通用硬件一般便宜很多,因此可以节省成本。
存储虚拟化还能提高存储系统对变化的适应能力,现代企业需要面对各种不同的变化,而相应的企业信息系统也需要能快速的适应新情况,而存储虚拟化可以简化这种工作,迅速的实现变化。
存储虚拟化还可以减少存储系统管理复杂度,是管理员只需要面对虚拟化后的同一存储空间,而不必考虑物理存储设备的细节,因此每个管理人员可以管理更多的存储设备,减少所需的管理人员,管理人员的开支实际上是存储系统运行成本的一个占相当比例的部分,减少管理人员可以明显的减少存储系统的日常运行成本。
存储虚拟化还可以实现一些不同存储策略和服务质量,它可以根据不同的应用程序和不同的存储空间采用不同的存取策略和不同的服务资粮。存储虚拟的这个功能没有被广泛实现。
存储虚拟化体系结构
从实现的对象来看,存储虚拟化可以分为块虚拟化,磁盘虚拟化、磁带/磁带库虚拟化、文件/记录虚拟化和文件系统虚拟化五种。
块虚拟化把一个或几个磁盘中的物理块映射成逻辑块空间,每个逻辑块有一个逻辑编号,对用户而言逻辑块空间是一个连续的存储空间,用户并不知道逻辑块实际上可能映射到几个不同的物理磁盘上,用户只需对逻辑块空间进行存取操作,块虚拟化程序把操作映射到对物理磁盘块的操作。
磁盘虚拟化实际上已经存在很久,物理磁盘可以分为不同的柱面,每个柱面分成不同的扇区,每个扇区又分成不同的面,磁盘虚拟化就是隐藏这些柱面、扇区、面等细节,提供一个虚拟的磁盘,虚拟磁盘上的块采用逻辑块序号,使用磁盘的用户或程序用逻辑块序号来操作,磁盘虚拟化程序把逻辑块序号映射成磁盘的柱面、扇区、面等物理指标,在进行实际的数据操作,这种磁盘虚拟化程序一般在磁盘的固件中。
磁带库虚拟化在磁带库中增加了一些磁盘作为快速缓存,而磁带库虚拟化把这些磁盘映射成磁带库中的一部分,对用户而言,只是一个连续的磁带库,这种系统中,最新的数据一般存放在磁盘中,当数据不在被经常使用时,在转移到磁带中,因为磁盘的数据存储速度远高于磁带,所以磁带库虚拟化可以提供磁带库的数据存取性能。
文件/记录虚拟化是指把多个物理文件或记录映射成一个逻辑的文件或记录,文件/记录虚拟化在文件/记录名与他们的物理位置之间提供了一个抽象层,这种虚拟化提供了一个统一的文件或记录名空间,用户只需对文件或记录名来操作,而不需根据文件或记录的实际物理位置来改变路径名,对用户来说,所有的文件或记录都想存放在一个很大的文件系统中。
而文件系统也能被虚拟化,我们知道文件系统是指用来表示存储设备上文件的组织方法和数据结构, 文件系统一般位于操作系统中,或文件服务器上,文件系统虚拟化是指把不同文件系统中的数据结构组合在一起,提供一个虚拟的同一的文件系统,用户可以用文件名来存取文件,而文件可能实际上位于Unix或Windows等不同的文件系统。文件系统虚拟化的一个缺点就是使用它的主机或服务器都必须运行一个代理软件,代理软件截取主机或服务器对文件系统的操作,把他们映射虚拟文件系统的操作。
存储虚拟化的实现
存储虚拟化的实现可以根据实现的地方分成三种:基于服务器或主机的实现,基于存储设备的实现和基于存储网络的实现。
基于主机或服务器的存储虚拟化实现通常称为逻辑卷管理,磁盘上的物理块或逻辑单元号被映射成逻辑卷号,逻辑卷管理软件把多个不同的磁盘阵列映射成一个虚拟的逻辑块空间,服务器或主机看到的是一个虚拟的逻辑卷空间,而不是不同的物理磁盘阵列,当存储需求增加时,逻辑卷软件能把部分逻辑空间映射到新增的磁盘阵列,而用户不同知道,因此逻辑卷管理可以在不中断运行的情况下,增加或减少物理存储设备。
逻辑卷管理只需软件来实现,不需要购买专门的硬件,但它的部分软件需要运行在每个使用逻辑卷的服务器或主机上,而且它会消耗服务器的CPU来做逻辑号到物理块的映射,因此可能对服务器性能造成影响。
存储虚拟化也能在存储设备上实现。例如运行在磁盘阵列固件中的程序也能实现存储虚拟化的功能,这种虚拟化程序把多个磁盘阵列映射成一个连续的逻辑磁盘空间,因为运行在存储设备中,基于存储设备的存储虚拟化往往不影响服务器或主机的性能,而且它一般是磁盘阵列固件中,因此基本不需改变设置等,管理工作很少,但它往外是建立在磁盘阵列的生产厂商的私有协议上,只能对同一厂家的存储设备进行虚拟化,不同的厂家有不同的虚拟化程序,它们通常不兼容。
基于网络虚拟化中,虚拟化是由网络本身来实现的,最常见的存储网络是光纤通道网络,而这种虚拟化就是光纤通道交换机等来实现的。
基于网络的存储虚拟化又分为带内和带外两种。
带内虚拟化,又称对称虚拟化,是指虚拟化的操作在服务器和存储设备之间交换数据的通道中执行,也就是说,虚拟化操作的控制信号和存储书记使用同一数据通道,现在最常见的带内虚拟化通常有一个单独的虚拟化硬件设备,虚拟化的功能由这个硬件设备来实现,虚拟化设备位于服务器和存储设备之间,它收到服务器的存取命令之后,就会从相应的映射表中找到对应的物理存储设备,再从存储设备中取得数据,把数据发给服务器。
因为带内虚拟化使用单独的虚拟化设备,虚拟化程序运行在虚拟化设备上,所以它便于集中管理,管理工作可以集中在虚拟化设备上,而不需要管理每个存储设备,同时这种虚拟化也有较高的安全性,因为任何数据存取的操作都要通过虚拟化设备,如果虚拟化设备没有安全漏洞,非法存取操作就不会被容许,从而减少了可能发生安全漏洞的地方,提供了系统的安全性。
但带内虚拟化的缺点是它对存储区域网络系统的性能有影响,因为所有的操作都要经过虚拟化设备,它可能会成为系统的瓶颈。
带外虚拟化,又称为非堆成虚拟化,是指虚拟化功能在位于存储数据通道之外的设备上实现,虚拟化控制数据和存储数据使用不同的通道,虚拟化控制数据通常通过独立的通讯通道传输,或者通过计算机局域网来传输,因此带外虚拟化的虚拟化功能不占用存储数据交换通道。
但带外虚拟化通常是基于生产厂家的私有协议,不同厂家的设备兼容性不好,它一般要求每个使用的服务器运行相应的软件,因此管理工作比较负载,管理人员需要保证每个服务器上的软件正确运行,而且带外虚拟化的安全性也不如带内虚拟化。