在计算机世界我们随处可以见的一种方法,那就是抽象。1946年冯诺依曼提出了计算机的基本结构包含:计算器,存储器和I/O设备。这可能是对计算机这一新生事物最重要的一次抽象,它直接影响了今后几十年计算机软硬件的发展。我们每个人对计算机的计算器,存储器和I/O设备都有不同的认知,你可能不认识所有计算芯片,不了解各种存储设备和输入输出设备,但是这绝对不会阻碍你区分出它们来。计算机系统中的各个部分可能是不可或缺的,但一定是可以替换的,这就是抽象的力量。没有抽象,我们可能要为每一套硬件开发不同的操作系统,要为每一种操作系统开发不同的应用程序,那简直是不可想象的事情。
当然事情发展到今天,我们依然觉得软硬件系统种类太多了,我们需要新的层次上的抽象。虚拟化就是一个抽象的过程,是对软硬件资源的进行抽象的过程。虚拟化的目的之一是让上层无需感知下层的差异,并提供统一的接口以备上层使用下层资源。
理想状态下的硬件虚拟化要实现的也许就是对硬件不受任何限制的使用,应用程序无需感知计算、存储和网络等硬件设备的差异而能够充分利用硬件资源。但是现实的情况,我们还是需要考虑或多或少考虑硬件的限制的。接下来我们先来考虑硬件虚拟化中,最关键的角色——存储。
一、存储发展现状
对于存储每个人都会有直观的认识,从纸带、软盘、光盘到硬盘。根据冯诺依曼的计算机结构理论,存储的概念就如同字面一样简单,就是任何可用于存储数据的设备,也如同这一抽象的独立的概念,存储设备在计算机结构中甚至是可以相对独立的。随着网络的发展,存储不再局限于计算机外壳的内部,网络存储在服务器领域日益成为主流。
在存储设备中最重要的应该是硬盘,对硬盘的读写速度、容量和质量的追求,硬盘技术几经变迁。单从与主板的接口标准上分就有ATA(IDE)、SATA、SCSI、SAS、FC和Infiniband之多,他们在接口、传输媒介和协议上都存在一定区别。其中ATA接口常连接大家熟悉的IDE设备;SATA(Serial ATA)是串行ATA;SAS(Serial Attached SCSI)是串行SCSI;SATA与SAS是孪生兄弟,SATA硬盘可以连接SAS接口,反之却不兼容;FC(Fiber Channel)是光纤通道,光纤通道其实不一定使用光纤,也可以使用铜质电缆。
随着网络存储的发展,区分出了DAS(Direct-Attached Storage) 、NAS(Network Attached Storage)、SAN(Storage Area Network)等存储模式。
下图是他们之间的比较,其中每个虚线框表示为一个相对独立的整体,箭头左侧描述的是一种接口或者连接方式,右侧描述的是实现存储的技术方案。图中所显示的只是各个模式中最为简单的组织或连接方式。DAS中File System连接Storage的方式不仅仅限于机器内部各种接口和线缆(如计算机连接内置SAS硬盘),也可以是外部的接口和线缆(如通过外部SAS线缆连接存储),这样情况就会变得复杂了,NAS或SAN作为整体可以容易成为DAS的一部分。
但DAS与其他二者的最大不同在于DAS不需要网络的支持。NAS和SAN最初的最大区别在于NAS是基于文件的存储,而SAN是基于数据块的存储。NAS存储更多表现为独立的文件服务器,但SAN更多表现的像是一块磁盘,因而SAN可以成为NAS网络中更加底层的那一部分。
最后是分布式存储,简单来说分布式存储充分利用廉价的硬件设施,在操作系统之上实现了对存储