【大话存储】学习笔记(14章), 虚拟化.md

操作系统对硬件的虚拟化

操作系统:就是为其他程序提供编写和运行环境的程序

由程序来运行程序,而不是程序自己来运行,这是操作系统提供的虚拟化的表现

加电之后,首先运行OS,随时可以载入其他程序执行。执行完以后切换回OS本身。

但是每次还是要等待这个程序执行完毕,才能接着载入下个程序执行。任何中断事件,都会中断正在运行的程序。

程序执行完毕,会将CPU归还给OS。从而继续OS本身的运行。这种操作系统就是单任务操作系统,典型代表就是DOS。

而批处理就是操作系统将多个程序一个一个的排列起来。省去了人为载入的过程。所以批处理操作系统相对单任务来说又进了一步,但是本质仍然是一个程序独占资源。

再后来操作系统针对系统时钟中断开发了中断服务程序,也就是多任务OS中的调度程序

中断来临,CPU根据中断向量表的内容,指向调度程序所在的内存地址入口,执行调度程序的代码。
调度程序将CPU的执行跳转到各个应用程序所在的内存地址入口。

从微观上看,每个应用程序独占CPU,但是时间非常小10ms,从宏观上看就是同时执行多个任务。

多任务操作系统的关键就是有多任务调度程序。
image.png

虚拟化的好处

虚拟化的好处是,将下层复杂的逻辑转换为上层简单的逻辑,方便人类读懂。

其实整个计算机技术就是抽象、封装、虚拟、映射的过程。就连CPU也在想办法把功能封装到CPU的逻辑电路里面,从而出现了更多的指令集。1.6GHz的酷睿双核CPU性能比主频3GHz的奔腾4代CPU更高。

计算机存储子系统的虚拟化

存储子系统主要分为:

  • 磁盘
  • 磁盘控制器
  • 存储网络
  • 磁盘阵列
  • 卷管理层
  • 目录虚拟层
  • 文件系统虚拟层

下面将介绍这些子系统如何进行抽象虚拟的。

磁盘控制器的虚拟化

控制器的工作就是根据驱动程序发来的磁盘读写信息,向磁盘发送SCSI指令和数据。

所以磁盘控制器完全可以对驱动程序隐藏下挂的物理磁盘。而虚拟出一个或者多个虚拟磁盘。RAID就是典型代表。控制器将物理磁盘组成RAID Group,然后在RG的基础上虚拟出多个LUN,通告给主机驱动。

存储网络的虚拟化

在交换式SAN中,任何节点都是通过交换设备来进行通信的,如果在交换节点上做些手脚,就可以达到虚拟化的效果。

我们可以在交换机上嵌入SCSI协议感知模块。,SCSI发起设备向目标设备传输的数据,经过交换机,会主动复制对应的帧到另一个节点的LUN上,形成镜像。若一个节点故障,则会将数据重定向到镜像的LUN上。

还可以将某些N节点的LUN合并成,然后动态的从这个池中分出虚拟LUN

磁盘阵列的虚拟化

磁盘阵列本来就是一个小计算机系统,是对存储子系统的抽象虚拟化最佳表现。

何为磁盘阵列,指的是将大量磁盘进行组织管理,抽象虚拟成逻辑磁盘。通过和主机适配器通信,呈现给主机。

盘阵控制器的角色都是不直接参与连接每块磁盘,而是利用后端适配器来管理下挂的磁盘

适配器就是中心控制器驱动的二级磁盘控制器。作为中心CPU的IO适配器,直接控制和管理物理磁盘,然后由中心控制器统一实现RAID、卷管理等功能。

后端适配器与中心控制器CPU之间通过PCIX总线等连接。

中心控制器不但可以实现最基本的RAID功能,还可以实现LUN镜像、快照、远程复制、CDP数据保护、LUN再分配等。

卷管理层

运行在应用主机上的功能模块,对底层的物理磁盘或者LUN搜集再分配。

对盘阵控制器虚拟化之后的LUN再虚拟化

  • 比如进行镜像处理,

  • 或者对其中的多个LUN做成软RAID 。

  • 再或者将所有的LUN合并形成资源池。

然后掰成多个

文件系统

SAN存储解决的是怎么记录的问题,文件系统解决的是怎么组织磁盘的数据

需要在相应的地方做标记,通过一个链表一次一次指引找出完整的数据。

把链表单独做成一个记录,放在固定的位置,可以通过表找出一条数据在磁盘上的完整分布。利用这种思想做出来的文件系统,比如FAT文件系统,把每个完整数据称为文件

文件分配表:FAT , File Allocate Table文件可以在磁盘不连续的存放,由单独数据结构来描述文件在磁盘的分布,

NTFS:给出文件在磁盘上的具体扇区,利用“开始——结束”这样的结构来描述文件的分布情况。

文件系统将磁盘抽象成了文件柜,同一份文件放在柜子的不同抽屉,利用元数据 来记录“文件——对应抽屉” 的分布情况。

描述其他文件分布情况及属性的文件,元文件Metadata

文件系统是对磁盘块的虚拟、抽象、组织和管理。只需要访问文件,就等于访问了扇区。

目录虚拟层

操作系统中有一个虚拟目录结构,在linux中叫VFS。--

虚拟文件系统,也就是说文件系统的目录不是真实的,任何的文件系统可以挂在目录下。成为虚拟目录的子目录,可以增强灵活性。

其次,OS外部设备虚拟成一个虚拟文件,比如卷。/dev/hda

磁盘——控制器——存储网络——总线适配器——卷管理层——文件系统——虚拟目录层和最终应用层

image.png

带内虚拟化和带虚拟化

  • 带内 InBand :控制指令和数据包走同一路线,所谓控制指令指的是控制数据流向的数据,如IP路由协议产生的数据包,它也是利用实际数据线路进行传输。

  • 带外 OutBand:控制指令走单独的路线。

带外和带内虚拟化:

  • 带内虚拟化:进行虚拟化的设备直接横在发起者和目标路径之间,也就是串在同一路径上,作为一个“泵”

  • 带外虚拟化:旁路,用这条路径来走控制信号,而实际数据还是由发起者直接走向目标。发起者必须先咨询旁路的虚拟化设备,经过提示之后,才根据虚拟化设备的指示直接向目标请求数据

硬网络与软网络

硬网络

硬件网络设备其功能还是靠软件来实现的,特别是路由设备,本质是一台Server,上面运行着处理数据包的程序。

所以硬件网络环境实际上是用一部分PC充当网络硬件设备,其他PC利用网络设备的PC实现通信

软件网络程序

message queue和Message Broker在硬件网络设备 的基础上,模拟出一个纯软件的网络转发引擎。

MQ:消息转发器。客户端通过TCP/IP与之相连,将消息转发到这个转发器上,然后根据策略将消息转发到其他客户端上。类似于交换机,不过MQ的链路层由TCP/IP来充当

MB:应用逻辑转发引擎。应用层次的转发,类似邮件服务器。只不过可转发各种格式的数据包。

image.png

多虚一

HPC

HPC主要分为两类:

  • CPU密集运算:专门用来计算数据,称为计算节点

  • IO密集运算:专门用来存储计算过程中所需要提取或者存放的数据,称为存储节点

计算节点看做CPU和内存,存储节点看做硬盘。对独立的PC,CPU内存与硬盘的连接为高速IO总线,如PCIe

但是对HPC ,有些利用Infiniband有些利用以太网。前者一般适用于IO密集运算,后者用于CPU密集运算。

Web + APP + db

客户端通过Web服务器获得网页,应用逻辑由APP服务器处理。最后通过Web服务器进行展现。

可以把Web看做显示终端,APP看做CPU和内存,将DB看做硬盘

一虚多

计算虚拟化:模拟硬件系统,将程序对这个硬件系统CPU发送的指令经过处理之后,加以虚拟传到物理CPU上。比如Vmware的ESX

用磁盘阵列来虚拟磁带库

VTL,Virtual Tape Lib

要提高磁带库的速度,只能多个驱动器同时工作,成本高。

VTL使用磁盘来存储数据而不是磁带,虚拟出机械手、磁带驱动器、磁带

原文地址:https://www.cnblogs.com/dy2903/p/8443908.html