KVM 的存储虚拟化是通过存储池(Storage Pool) 和 卷(Volume)来管理的。
 
Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种类型,后面会详细讨论。Volume是在Storage Pool中划出的一块空间,宿主机将 Volume分配给虚拟机,Volume在寻机中看到的就是一块硬盘。
 
下面我们学习不同类型的 Storage Pool。
 
目录型 Storage Pool
 
文件目录是最常用的 Storage Pool类型。KVM将宿主机目录 /var/lib/libvirt/images/ 作为默认的Storage Pool
 
那么 Volume 是什么呢? 那就是该目录下的文件,一个文件就是一个 Volume。
 
比如在我们前面的实验中,我们将一个img文件放到了该目录下,这个img文件就是 Volume,对于kvm1来说,这就是他的启动磁盘。
 
 
那KVM是怎么知道要把 /var/lib/libvirt/images 这个目录当做默认 Storage Pool 的呢?实际上KVM所有可以使用的Storage Pool 都定义在宿主机的 /etc/libvirt/storage 目录下,每个Pool 一个xml文件,默认有一个 default.xml ,内容如下:
 
root@ubuntu:~# cat /etc/libvirt/storage/default.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh pool-edit default
or other application using the libvirt API.
-->
 
<pool type='dir'>
  <name>default</name>
  <uuid>a57379a4-797d-476f-952b-3bae232035e1</uuid>
  <capacity unit='bytes'>0</capacity>
  <allocation unit='bytes'>0</allocation>
  <available unit='bytes'>0</available>
  <source>
  </source>
  <target>
    <path>/var/lib/libvirt/images</path>
  </target>
</pool>
 
上面可以看到 Storage Pool 的类型是 dir ,目录的路径就是 /var/lib/libvirt/images ,下面我们给kvm1 添加一个新的磁盘,看看有什么变化。
 
 
 
 
root@ubuntu:/var/lib/libvirt/images# ll -h
total 18M
drwx--x--x 2 root         root 4.0K May 20 21:05 ./
drwxr-xr-x 7 root         root 4.0K May 20 20:25 ../
-rwxrwxrwx 1 libvirt-qemu kvm   14M May 20 20:40 cirros-0.3.3-x86_64-disk.img*
-rw------- 1 root         root  21G May 20 21:05 kvm1.qcow2
 
 
 
使用文件做 Volume有很多优点:存储方便、移植性好、可复制、可远程访问。前面几个有点都很好理解,这里对 可远程访问 解释一下。
 
远程访问的意思是镜像文件不一定都放置到宿主机本地文件系统中,也可以存储在网络上的远程文件系统上,比如 NFS,或者是分布式的文件系统,比如 GlusterFS。
 
这样镜像文件就可以在多个宿主机之间共享,便于虚拟在不同的宿主机之间做 Live Migration,如果是分布式的文件系统,多副本的特性还可以保证镜像文件的高可用。
 
KVM 支持多种Volume文件格式,在添加 Volume时可以选择。
 
 
raw 是默认格式,即原始磁盘镜像格式,移植性好、性能好、但大小固定,不能节省磁盘空间。
 
qcow2 是推荐使用的格式, cow 表示 copy on write ,能够节省磁盘空间,支持 AES 加密,支持zlib压缩,支持多快照,功能很多。
 
vmdk 是 VMWare 的虚拟磁盘格式,也就是说 VMWare虚机可以直接在KVM上运行。
 
 

O007、KVM 存储虚拟化的更多相关文章

  1. KVM 存储虚拟化 - 每天5分钟玩转 OpenStack(7)

    KVM 的存储虚拟化是通过存储池(Storage Pool)和卷(Volume)来管理的. Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种类型,后面会详细讨论.Volume 是 ...

  2. KVM存储虚拟化---玩转openstack

    KVM 的存储虚拟化是通过存储池(Storage Pool)和卷(Volume)来管理的. Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种类型,后面会详细讨论.Volume 是 ...

  3. KVM 存储虚拟化

    KVM 的存储虚拟化是通过存储池(Storage Pool)和卷(Volume)来管理的. Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种类型,后面会详细讨论.Volume 是 ...

  4. 基于KVM的虚拟化研究及应用

    引言 虚拟化技术是IBM在20世纪70年代首先应用在IBM/370大型机上,这项技术极大地提高了大型机资源利用率.随着软硬件技术的迅速发展,这项属于大型机及专利的技术开始在普通X86计算机上应用并成为 ...

  5. KVM的虚拟化研究及应用

    引言 虚拟化技术是IBM在20世纪70年代首先应用在IBM/370大型机上,这项技术极大地提高了大型机资源利用率.随着软硬件技术的迅速发展,这项属于大型机及专利的技术开始在普通X86计算机上应用并成为 ...

  6. Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解析

    Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解析 2018年04月03日 13:51:55 阅读数:936   XEN 与 VMware ESXi,Hyper-V 以及 K ...

  7. KVM 内存虚拟化

    内存虚拟化的概念     除了 CPU 虚拟化,另一个关键是内存虚拟化,通过内存虚拟化共享物理系统内存,动态分配给虚拟机.虚拟机的内存虚拟化很象现在的操作系统支持的虚拟内存方式,应用程序看到邻近的内存 ...

  8. KVM中断虚拟化浅析

    2017-08-24 今天咱们聊聊KVM中断虚拟化,虚拟机的中断源大致有两种方式,来自于用户空间qemu和来自于KVM内部. 中断虚拟化起始关键在于对中断控制器的虚拟化,中断控制器目前主要有APIC, ...

  9. VMware/KVM/OpenStack虚拟化之网络模式总结

    一.VMware虚拟机网络模式 Vmware虚拟机有三种网络模式:Bridged (桥接模式).NAT (网络地址转换模式).Host-Only (仅主机模式).下面分别总结下这三种网络模式: 1. ...

随机推荐

  1. TCP主动打开 之 第一次握手-发送SYN

    tcp客户端与服务器端建立连接需要经过三次握手过程,本文主要分析客户端主动打开中的第一次握手部分,即客户端发送syn段到服务器端: tcp_v4_connect为发起连接主流程,首先对必要参数进行检查 ...

  2. Solr 5.2.1 部署并索引Mysql数据库

    1.Solr简介 Solr是一个高性能,采用Java5开发,SolrSolr基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查 ...

  3. 2、记录代码----Ajax

    $.ajax({ url:'/content-engine/index.php/tracker/confirmSendEmail', async: false, //默认为true,同意异步传输 da ...

  4. websphere部署不能发布war文件,提示“配置库中已存在应用程序

    碰上这种问题, 要是全删除与war相关配置文件,要么按网上教程,一点点搜下面的文件中包含的相关文件: $WAS_HOME/profiles/AppSrv01/config/cells/...cell/ ...

  5. vue生命周期updated的触发时机之debug过程中发现的firefox问题

    现象描述: 断点位置1 谷歌debug的过程: 火狐debug的过程: 只要在改变数据之后有断点停顿,就会先去执行updated函数 断点位置2 此时火狐和谷歌是一样的效果,但是执行顺序是不一致的 谷 ...

  6. [SQL]学习中遇到的错误

    1.中英文模式切换 查找语句中不能出现中文字符!!!

  7. 阶段3 3.SpringMVC·_06.异常处理及拦截器_6 SpringMVC拦截器之拦截器入门代码

    创建拦截器 新建包 实现拦截器的接口 接口中没有强制实现里面的方法.jdk1.8的特性.接口中已经实现了方法 这就是相当于实现了这个接口.方法已经全帮你实现过了. 如果想去写新的实现方法.Ctrl+o ...

  8. 深入理解红黑树及C++实现

    介绍 红黑树是一种特殊的平衡二叉树(AVL),可以保证在最坏的情况下,基本动态集合操作的时间复杂度为O(logn).因此,被广泛应用于企业级的开发中. 红黑树的性质 在一棵红黑树中,其每个结点上增加了 ...

  9. 在web项目中获取ApplicationContext上下文的3种主要方式及适用情况

    最近在做web项目,需要写一些工具方法,涉及到通过Java代码来获取spring中配置的bean,并对该bean进行操作的情形.而最关键的一步就是获取ApplicationContext,过程中纠结和 ...

  10. 【Java】递归删除目录以及文件

    public static void deleteDirectory(String path) { File pFile = new File(path); //若目录以及文件不存在,则终止继续执行方 ...