前面介绍了存储的配置和qemu-img工具来管理镜像,QEMU/KVM中,客户机镜像文件可以由很多种方式来构建,其中几种如下:

1) 本地存储的客户机镜像文件。

2) 物理磁盘或磁盘分区。

3) LVM(Logical Volume Management ), 逻辑分区。

4 ) NFS(Network File System), 网络文件系统。

5) iSCSI(Internet Small Computer System Interface ), 基于Internet的小型计算机系统接口。

6) 本地或光纤通道连接的LUN(Logical Unit Number)。

7) GFS2(Global File System 2)。

本地存储的客户机镜像文件是最常用的一种方式:

它有预分配空间的raw文件、稀疏文件类型的raw文件、qcow2等多种格式。

预分配空间的raw文件不随镜像的使用而增长,而是在创建之初即完全占用磁盘空间,其消耗较多磁盘空间,不过运行效率较高。

稀疏文件(包括raw和qcow2格式)在一开始时并不占用多的磁盘空间,而是随实际写入数据才占用物理磁盘,比较灵活且节省磁盘空间,不过其在第一次写入数据时需要额外在宿主机中分配空间,因此其效率较低一些。

而qcow2具有加密的安全性,所以在对磁盘IO性能要求不是很高时建议选择qcow2类型的镜像文件。

不仅一个文件可以分配给客户机作为镜像文件系统,且一个完整的磁盘或LVM分区也可以作为镜像分配给客户机使用。不过,磁盘分区、LVM分区由于没有磁盘的MBR引导记录,不能作为客户机的启动镜像,只能作为客户机附属的非启动块设备

一般来说,磁盘或LVM分区会有较好的性能,读写的延迟较低、吞吐量较高。

不过为了防止客户机破坏物理磁盘分区,一般不将整个磁盘作为镜像由客户机使用。使用磁盘或LVM分区的劣势在于管理和移动性方面都不如镜像文件方便,而且不方便通过网络远程使用。

NFS作为使用非常广泛的分布式文件系统,可以使客户端挂载远程NFS服务器中的共享目录,然后像使用本地文件系统一样使用NFS远程文件系统。

如果NFS服务器端向客户端开放了读写的权限,那么可以直接挂载NFS,然后使用其中的镜像文件作为客户启动磁盘。

如果NFS服务器端没有向客户端开放写权限,也可以NFS客户端系统将远程NFS系统上的镜像文件作为后端镜像(backing file),以建立qcow2格式Copy-On-Write的本地镜像文件供客户机使用。这样做还有一个好处是保持NFS服务器上的镜像一致性、完整性,从而可以供给多个客户端同时使用。而且由于NFS的共享特性,因此NFS方式为客户机的动态迁移提供了非常方便的共享存储系统

下面的命令行演示了NFS作为后端镜像的应用,在本地用qcow2格式镜像文件启动一个客户机。

在宿主机中,挂载NFS文件系统、建立qcow2镜像,然后启动客户机,如下所示:

在客户机中,查看磁盘文件系统,指令如下:

fdisk  -1

iSCSl是一套基于IP协议的网络存储标准,真正的物理存储放在初始端(initiator),而使用iSCSI磁盘的是目标端(target),它们之间实现了SCSI标准的命令,让目标端使用起来就和使用本地的SCSI硬盘一样,只是数据是在网络上进行读写操作的。

光纤通道(Fibre Channel)也可以实现与iSCSI类似的存储区域网络(storage area network,SAN),不过它需要光纤作为特殊的网络媒介。

GFS2是由Redhat公司主导开发的主要给Linux计算机集群使用的共享磁盘文件系统,一般在Redhat的RHEL系列系统中有较多使用,它也可被用做QEMU/KVM的磁盘存储系统。

如果需要获得更高性能的磁盘IO,可以使用半虚拟化的virtio作为磁盘驱动程序

kvm客户机存储方式的更多相关文章

  1. kvm 客户机系统的代码是如何运行的

    一个普通的 Linux 内核有两种执行模式:内核模式(Kenerl)和用户模式 (User).为了支持带有虚拟化功能的 CPU,KVM 向 Linux 内核增加了第三种模式即客户机模式(Guest), ...

  2. KVM客户机使用主机USB设备

    有些时候KVM客户机还是要使用USB设备,比如USB密钥等 KVM命令行参数 -usb 打开usb驱动程序,启动客户机usb支持 -usbdevice devname 为客户机增加usb设备,devn ...

  3. kvm 客户机加载移动硬盘

    1,宿主机安装usbutils yum install usbutils -y 2,插入U盘或者移动硬盘并查看 [root@localhost ~]# lsusb Bus Device : ID 10 ...

  4. 解决KVM中宿主机通过console无法连接客户机

    转自https://www.linuxidc.com/Linux/2014-10/107891.htm 一.问题描述: KVM中宿主机通过console无法连接客户机,卡在这里不动了. # virsh ...

  5. 基于RDP瘦客户机协议的简要说明

    **************************************************************************************************** ...

  6. kvm虚拟机配置被克隆rhel6客户机的网卡

    例子:配置被克隆rhel6客户机的网卡 rhel6的网卡是通过udev规则来进行命名每个网卡都有不一样的macudev规则是根据网卡的mac来进行识别克隆出来的客户机,为了遵守每个网卡的mac都是全球 ...

  7. KVM 介绍(8):使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 [Nova Libvirt QEMU/KVM Live Migration]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  8. Docker存储方式选型建议

    转自:https://segmentfault.com/a/1190000007168476 第一部分 问题诊断 事情从一次实施项目说起,我们需要帮助客户将他们的应用容器化并在数人云平台上发布此应用. ...

  9. KVM(八)使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机

    1. QEMU/KVM 迁移的概念 迁移(migration)包括系统整体的迁移和某个工作负载的迁移.系统整理迁移,是将系统上所有软件包括操作系统完全复制到另一个物理机硬件机器上.虚拟化环境中的迁移, ...

随机推荐

  1. bzoj 2251: [2010Beijing Wc]外星联络【SA】

    先求SA,然后按字典序从小到大枚举子串,每到一个后缀从长到短枚举子串(跳过长为he[i]的和前一段重复的子串),然后维护一个点p,保证i~p之间最小的he>=当前枚举长度,p是单调向右移的 然后 ...

  2. postman接口测试系列:环境配置

      最近忙着项目接口测试,经过不同工具的对比,发现postman使用起来挺顺手的,所以马上决定使用这个工具进行接口测试工作.刚开始的时候,了解了下接口测试的相关信息,直接着手编写接口测试的测试用例信息 ...

  3. Mantis优化改造(技术篇)

    为什么要写这篇? 既然都过去这么久了,都回忆不起来了,为什么还要整理出来这篇文章呢? 这还要追溯到2018年3月份. 当时换工作,面试了国内某知名电视厂商. 简历上面写了我优化改造了bug管理系统ma ...

  4. CentOS7下如何正确安装并启动Docker(图文详解)

    我使用了CentOS 7操作系统,可以非常容易地安装Docker环境.假设,下面我们都是用root用户进行操作,执行如下命令进行准备工作: yum install -y yum-utils yum-c ...

  5. excel导入phpmyadmin

    1.将excel文件另存为txt文件,再将txt文件保存为.csv文件同时修改编码为UTF8 2.登录phpmyadmin,在phpmyadmin中创建好表格,按excel中的顺序创建每列 3.因为p ...

  6. 字符串处理 Codeforces Round #305 (Div. 2) A. Mike and Fax

    题目传送门 /* 字符串处理:回文串是串联的,一个一个判断 */ #include <cstdio> #include <cstring> #include <iostr ...

  7. 常用的DOCS命令

    1.Help 可以查看当前DOS常用命令,是帮助2.Help dir 查看Dir命令的帮助,使用帮助3.ipconfig 查看当前电脑的IP地址4.ping 127.0.0.1 测试与某一台电脑之间网 ...

  8. Java报表之JFreeChart

    一.JFreeChart简介 JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications,servlets以及JSP等使用所设计. JFre ...

  9. 使用MySQL统计页面访问及排名

    统计访问页面数量,以分辨率进行排名 SELECT CONCAT(`height` , '*', `width`) AS `resolution` , COUNT(CONCAT(`height`, '* ...

  10. ios 画板的使用

    由于项目需求需要用到一个画板功能,需要这个画板可以实时的画,并且需要保存画板点集合从一端发送给另一端 达到一个实时同步的功能,前后使用了三种方法,每一种都遇到各种坑(后面会提到,每一种方法的优缺点), ...