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. linux系统空间不足,lsof看到异常的delete状态的文件。

    #20191101更新---这篇文章适用于产生僵尸文件的进程是可kill的状态参考,就是这个进程死亡不影响业务,那么另外一种情况,也是我现在管理的项目中生产环境中出现过的情况,产生僵尸文件的进程是we ...

  2. STL priority_queue

    priority_queue 优先队列(Priority Queues):顾名思义,一个有着优先级的队列.它是一种ADT,和队列的思想差不多—— 排队,数据结构中的队列是不能插队的,不能颠倒排队的顺序 ...

  3. SprintBoot日志

    yml配置 #logging logging.file: "logs/app.log" logging: level: root: debug file: max-size: 10 ...

  4. log4net保留几天内的日志

    想实现保留7天(一周)内的日志,网上一堆下述代码 <appender name="RollingLogFileAppender" type="log4net.App ...

  5. SSD 页、块、垃圾回收

    基本操作: 读出.写入.擦除: 因为NAND闪存单元的组织结构限制,单独读写一个闪存单元是不可能的.存储单元被组织起来并有着十分特别的属性.要知道这些属性对于为固态硬盘优化数据结构的过程和理解其行为来 ...

  6. 数据库CASE 函数 时间用法

    select * from warehouse_trade_detail whereb_createtime>= cast('2016-01-01' as date) and b_createt ...

  7. 动态加载、移除css文件

    修改样式有通过修改class属性来更改,也可以通过动态引入外部的css文件来改变对应的样式展示. 这里就介绍动态引入.移除css文件 ///添加平板样式文件 function loadStyles() ...

  8. MongoDB 日志中出现“UserNotFound: Could not find user ceilometer@ceilometer”,如何解决?

    MongoDB 日志中出现“UserNotFound: Could not find user ceilometer@ceilometer” 问题描述 MongoDB(版本 3.2.9) 服务启动后, ...

  9. 解决 JDK1.7 不支持 VCenter 6.7 的问题(涉及到Https TLS1.2协议)

    解决 JDK1.7 不支持 VCenter 6.7 的问题 问题描述 原项目工程是使用JDK 1.7,可以连接 5.X版本和 6.0版本的 VCenter资源池. 但是,现在VCenter已经升到 6 ...

  10. java解析和组装json以及一些方法的理解

    这是一个json格式的字符串 第一种情况(简单格式) String result = "{\"name\":\"小明\",\"age\&qu ...