文章目录
- 前言
- 一、HCLA存储技术趋势与智能存储组件
- 1、HCLA存储技术趋势
- (1)、什么是数据存储
- (2)、数据存储系统
- (3)、数据分类
- (4)、数据存储发展趋势
- 小结
- 2、智能存储组件
- 控制框
- 硬盘框
- 级联模块
- 硬盘
- 接口模块
- 二、虚拟化与网络存储技术
- 1、虚拟化技术
- 2、KVM原理简介
- (1)、KVM工作流程
- KVM模块
- (2)、KVM原理简介
- 3、Qemu原理介绍
- (1)Qemu模块
- (2)Qemu的三种运行模式
- (3)、Qemu的特点
- 3、KVM和Qemu的关系
- 4、Qemu工具介绍
- qemu-img
- qemu-kvm
- qemu-ga
- qemu-io
- qemu-nbd
- qemu-nbd
前言
信息在网络中的传输,需要借助数据作为载体,那么信息和数据的关系 是什么,数据存储的作用是什么?本文将介绍在计算机领域信息和数据的定义,以及它们之间的关系,数据存储的概念,发展历史和发展趋势
一、HCLA存储技术趋势与智能存储组件
1、HCLA存储技术趋势
(1)、什么是数据存储
(2)、数据存储系统
(3)、数据分类
(4)、数据存储发展趋势
小结
2、智能存储组件
控制框
(2)、控制器
(3)电源模块
硬盘框
(1)、硬盘框形态
(2)硬盘框正后视图
级联模块
(1)
(2)交换机
硬盘
机械硬盘
(1)机械硬盘工作原理
(2)硬盘容量和缓存
(3)影响硬盘性能的因素
(4)硬盘的IOS和传输宽带
(5)、接口技术
固态硬盘
(1)概述
(2)
接口模块
二、虚拟化与网络存储技术
1、虚拟化技术
一、简单叙述常见的虚拟化技术分类;
三、XEN虚拟化技术的优缺点;
三、KVM虚拟化技术功能特性及优缺点;
四、红帽RHEV技术功能特性及优缺点;
五、简单叙述其他虚拟化技术的实现方法。
详细内容
2、KVM原理简介
(1)、KVM工作流程
用户模式的qemu利用libkvm通过ioctl进入内核模式,kvm模块为虚拟机创建虚拟内存,虚拟CPU后执行VMLauch指令进入客户模式。加载Guest OS并执行。如果Guest OS 发生外部中断或者影子页表缺页之类的情况,会暂停Guest OS的执行,退出客户模式,执行异常处理,之后重新进入客户模式,执行客户代码。如果发生I/O事件或者信号队列中有信号到达,就会进入用户模式处理。
KVM模块
KVM模块是KVM虚拟机的核心部分。其主要功能是初始化CPU硬件,打开虚拟化模式,然后将虚拟客户机运行在虚拟机模式下,并对虚拟客户机的运行提供一定的支持。
KVM模块加载之初,只存在/dev/kvm文件,而针对该文件的最重要的IOCTL调用就是“创建虚拟机”。在这里,“创建虚拟机”可以理解成KVM为了某个特定的虚拟客户机(用户空间程序创建并初始化)创建对应的内核数据结构。
处理器对设备的访问主要是通过IO指令和MMIO,其中IO指令会被处理器直接截获,MMIO会通过配置内存虚拟化来捕捉。但是,外设的模拟一般并不由KVM模块负责。一般来说,只有对性能要求比较高的虚拟设备才会由KVM内核模块来直接负责,比如虚拟终端控制器和虚拟时钟,这样可以大量减少处理器的模式切换的开销
(2)、KVM原理简介
KVM工作原理: 用户模式的qemu利用libkvm通过ioctl进入内核模式,kvm模块为虚拟机创建虚拟内存,虚拟CPU后执行VMLauch指令进入客户模式。加载Guest OS并执行。如果Guest OS 发生外部中断或者影子页表缺页之类的情况,会暂停Guest OS的执行,退出客户模式,执行异常处理,之后重新进入客户模式,执行客户代码。如果发生I/O事件或者信号队列中有信号到达,就会进入用户模式处理。
3、Qemu原理介绍
(1)Qemu模块
QEMU本身并不是KVM的一部分,其自身就是一个著名的开源虚拟机软件。与KVM不同,QEMU虚拟机是一个纯软件的实现,所以性能地下。但是,其优点是在支持QEMU本身编译运行的平台上就可以实现虚拟机的功能,甚至虚拟机可以与宿主机并不是同一个架构。作为一个存在已久的虚拟机,QEMU的代码中有整套的虚拟机实现,包括处理器虚拟化、内存虚拟化,以及KVM使用到的虚拟设备模拟(比如网卡、显卡、存储控制器和硬盘等)。
从QEMU和KVM模块之间的关系可以看出,这是典型的开源社区在代码共用和开发项目共用上面的合作。诚然,QEMU可以选择其他的虚拟机或技术来加速,比如Xen或者KQEMU;KVM也可以选择其他的用户空间程序作为虚拟机实现,只要它按照KVM提供的API来设计。但是在现实中,QEMU与KVM两者的结合是最成熟的选择,这对一个新开发和后起的项目(KVM)来说,无疑多了一份未来成功的保障。
(2)Qemu的三种运行模式
1)第一种模式是通过kqemu模块实现内核态的加速。
2)第二种模式是在用户态直接运行QEMU,由QEMU对目标机的 所有 指令进行翻译后执行,相当于全虚拟化。
3)第三种模式则是KVM官方提供的kvm-qemu加速模式。
(3)、Qemu的特点
(1)QEMU的两种操作模式:完整的系统仿真和用户模式仿真。
(2)QEMU具有以下特点:
1、QEMU可以在没有主机内核驱动程序的情况下运行。
2、它适用于多种操作系统(GNU / Linux,* BSD,Mac OS X,Windows)和体系结构。
3、它执行FPU的精确软件仿真。
(3)QEMU用户模式仿真具有以下功能:
1、通用Linux系统调用转换器,包括大部分ioctls
2、使用本机CPU clone的仿真为线程使用Linux调度程序。
3、通过将主机信号重新映射到目标信号来实现精确信号处理。
(4)QEMU全系统仿真具有以下特点:
1、QEMU使用完整的软件MMU来实现最大的便携性。
2、QEMU可以选择使用内核加速器,如kvm。加速器本地执行大部分客户代码,同时继续模拟机器的其余部分。
3、可以仿真各种硬件设备,并且在某些情况下,客户机操作系统可以透明地使用主机设备(例如串行和并行端口,USB,驱动器)。主机设备传递可用于与外部物理外围设备(例如网络摄像头,调制解调器或磁带驱动器)交谈。
4、对称多处理(SMP)支持。目前,内核加速器需要使用多个主机CPU进行仿真。
3、KVM和Qemu的关系
Qemu是一个独立的虚拟化解决方案,通过intel-VT 或AMD SVM实现全虚拟化,安装qemu的系统,可以直接模拟出另一个完全不同的系统环境。QEMU本身可以不依赖于KVM,但是如果有KVM的存在并且硬件(处理器)支持比如Intel VT功能,那么QEMU在对处理器虚拟化这一块可以利用KVM提供的功能来提升性能。
KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(Intel-VT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。准确来说,KVM是Linux kernel的一个模块。
4、Qemu工具介绍
qemu-img
qemu-img是QEMU的磁盘管理工具,在qemu-kvm源码编译后就会默认编译好qemu-img这个二进制文件。qemu-img也是QEMU/KVM使用过程中一个比较重要的工具。下面我们将几条重要的选项讲解一下。
check [-f fmt] filename
对磁盘镜像文件进行一致性检查,查找镜像文件中的错误,目前仅支持对“qcow2”、“qed”、“vdi”格式文件的检查。
create [-f fmt] [-o options] filename [size]
创建一个格式为fmt大小为size文件名为filename的镜像文件。
commit [-f fmt] [-t cache] filename
提交filename文件中的更改到后端支持镜像文件(创建时通过backing_file指定的)中去。
convert [-c] [-p] [-f fmt] [-t cache] [-O output_fmt] [-o options] [-s snapshot_name] [-S sparse_size] filename [filename2 […]] output_filename
将fmt格式的filename镜像文件根据options选项转换为格式为output_fmt的名为output_filename的镜像文件。
info [-f fmt] filename
展示filename镜像文件的信息
snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename
“-l” 选项是查询并列出镜像文件中的所有快照,“-a snapshot”是让镜像文件使用某个快照,“-c snapshot”是创建一个快照,“-d”是删除一个快照。
rebase [-f fmt] [-t cache] [-p] [-u] -b backing_file [-F backing_fmt] filename
改变镜像文件的后端镜像文件,只有qcow2和qed格式支持rebase命令。
resize filename [+ | -]size
改变镜像文件的大小,使其不同于创建之时的大小。
qemu-kvm
此命令用于创建虚拟机,其使用格式为“qemu-kvm [options] [disk_image]”,其选项非常多,大致可分为如下几类:
标准选项;
USB选项;
显示选项;
i386平台专用选项;
网络选项;
字符设备选项;
蓝牙相关选项;
Linux系统引导专用选项;
调试/专家模式选项;
PowerPC专用选项;
Sparc32专用选项。
qemu-kvm的标准选项
该选项主要涉及指定主机类型、CPU模式NUMA、软驱设备、光驱设备及硬件设备等。
qemu-kvm的显示选项 该选项主要用来配置虚拟机的显示状态。
qemu-kvm的显示选项 该选项主要用来配置虚拟机的显示状态
qemu-ga
qga是一个运行在虚拟机内部的普通应用程序(可执行文件名称默认为qemu-ga,服务名称默认为qemu-guest-agent),其目的是实现一种宿主机和虚拟机进行交互的方式,这种方式不依赖于网络,而是依赖于virtio-serial(默认首选方式)或者isa-serial,而QEMU则提供了串口设备的模拟及数据交换的通道,最终呈现出来的是一个串口设备(虚拟机内部)和一个unix socket文件(宿主机上)。
qga通过读写串口设备与宿主机上的socket通道进行交互,宿主机上可以使用普通的unix socket读写方式对socket文件进行读写,最终实现与qga的交互,交互的协议与qmp(QEMU Monitor Protocol)相同(简单来说就是使用JSON格式进行数据交换),串口设备的速率通常都较低,所以比较适合小数据量的交换。
qemu-io
这是一个执行 Qemu I/O 操作的命令行工具,可以对qemu-img创建的镜像进行I/O测试,其帮助文档为,使用格式为qemu-io [-h] [-V] [-rsnm] [-c cmd] … [file],下面是常用的选项:
(1)-c, --cmd:执行指令;
(2)-r, --read-only:设置出口为只读模式;
(3)-s, --snapshot:使用快照文件进行测试;
(4)-n, --nocache:禁用主机缓存;
(5)-k, --native-aio:使用内核AIO实现(仅在Linux上);
(6)-t, --cache=MODE:对image使用指定的缓存模式。
qemu-nbd
qemu-nbd在有的系统上叫kvm-nbd,qemu-nbd-xen等。基本上都一样。用qemu-nbd实现mount虚拟硬盘到Host上的功能。
网络块设备: Network Block Device。可以将一个远程主机的磁盘空间,当作一个块设备来使用,就像一块硬盘一样。使用它,可以很方便的将另一台服务器的硬盘空间增加到本地服务器上。
NBD与NFS有所不同,NFS只是提供一个挂载点供客户端使用,客户端无法改变这个挂载点的分区格式。而NBD提供的是一个块设备,客户端可以把这个块设备格式化成各种类型的分区,更便于用户的使用。
##5 Qemu支持的磁盘格式介绍
qemu-nbd
raw
raw格式是简单的二进制镜像文件,一次性会把分配的磁盘空间占用。
host_device
在需要将镜像转化到不支持空洞的磁盘设备时需要用这种格式来代替raw格式
qcow2
qcow2是QEMU目前推荐的镜像格式,它是功能最多的格式。
qcow
较旧的QEMU镜像格式,现在已经很少使用了,一般用于兼容比较老版本的QEMU。它支持backing_file(后端镜像)和encryption(加密)两个选项
cow
copy-on-write format,写时复制格式。曾经qemu的写时拷贝的镜像格式,目前由于历史遗留原因不支持窗口模式,后来被qcow格式所取代。
vdi
兼容Oracle(Sun)VirtualBox1.1的镜像文件格式(Virtual Disk Image)
vmdk
VMDK(VMWare Virtual Machine Disk Format)是虚拟机VMware创建的虚拟硬盘格式,文件存在于VMware文件系统中,被称为VMFS(虚拟机文件系统
vpc
兼容Microsoft的Virtual PC的镜像文件格式(Virtual Hard Disk format)。
cloop
压缩的loop格式,主要用于可直接引导优盘或者光盘的一种镜像格式。