zoukankan      html  css  js  c++  java
  • 【大话存储】学习笔记(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使用磁盘来存储数据而不是磁带,虚拟出机械手、磁带驱动器、磁带

  • 相关阅读:
    CXF对Interceptor拦截器的支持
    SpringBoot 自定义Banner
    Spring Boot应用的后台运行配置
    CXF 开发 REST 服务
    CXF SOAP 及其安全控制
    Cxf 自动生成客户端服务端代码
    跨域的另一种解决方案CORS(CrossOrigin Resource Sharing)跨域资源共享
    从 MVC 到前后端分离
    远程通信的几种选择(RPC,Webservice,RMI,JMS的区别)
    MYSQL
  • 原文地址:https://www.cnblogs.com/dy2903/p/8443908.html
Copyright © 2011-2022 走看看