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. 20165207 Exp9 Web安全基础

    目录 20165207 Exp9 Web安全基础 一.实验过程 1.环境配置 2.代理工具burpsuite 2.1 Http proxies -> Use the intercept 3.sq ...

  2. 去掉input type=file的默认样式

    原样式: 解决: 加style="opacity: 0;"变成透明的 然后可以外面套个div,在div上自定义样式.

  3. linux常用查看系统操作的linux命令

    系统# uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo # 查看CPU信息# hostna ...

  4. js 里面call()的使用

    call 是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向.JavaScript 的一大特点是,函数存在「定义时上下文」和「运行时上下文」 ...

  5. 在oracle中使用基表建立月表的存储过程

    某些系统需要按月分表来保存数据.下面的存储过程演示了如何使用基表来建立每个月的月表. 处理思路是:     1:首先,为基表建立好表和对应的索引.     2:将基表保存到一个存储过程需要的表中.   ...

  6. Dev中GridView——背景颜色改变

    DevExpress.XtraGrid.Views 设置指定行的背景颜色 1.事件:CustomDrawCell2.示例: private void gridView1_CustomDrawCell( ...

  7. 在发布ASP.NET网站的时候,出现state server错误

    错误信息如下: 在发布ASP.NET网站的时候,出现state server错误: Server Error in '/' Application. ------------------------- ...

  8. Redis集群配置和常见异常解决

    前文 Redis的Cluster集群,是在分布式且开源环境下最佳的高可用解决方案,可以有效的解决服务器宕机下或高并发下,数据的完整性. 文档前提 Redis 3.0版本或更高版本.(3.0版本开始支持 ...

  9. Delphi让控件随着窗口的大小而改变

    Delphi让控件随着窗口的大小而改变方法1:设置Anchors属性,把akLeft,akTop,akRight,akBottom都设为True.方法2:设置Align属性,其值为alClient.

  10. 【知乎】github,Empty reply from server?

    http://www.zhihu.com/question/26717343   问:用hexo搭了个blog,之前一直正常,最近在deploy的时候无法连接到github了. fatal: unab ...