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. jxbrowser 实现java 和 js互相调用

    https://blog.csdn.net/shuaizai88/article/details/73743626 今天我们使用jxbrowser  实现js直接调用java代码. 调用javaTes ...

  2. ListView中用鼠标拖动各项上下移动的问题。(100分)

    在OnDragDrop事件中處理:以下是delphi的例子 procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integ ...

  3. Redis 分库

    Redis 可以分库,相当于 MySQL 中的 database.控制数据库总数在 redis配置文件中设置,默认是 16 个.数据库名称是整数索引标识,而不是由一个数据库名称字符串. 选择数据库用 ...

  4. java:redis(redis安装配置,redis的伪集群配置)

    1.redis安装配置: .安装gcc : yum install gcc-c++ .使用FTP工具FileZilla上传redis安装包到linux根目录下(当前步骤可以替换为:在root目录下执行 ...

  5. java:Linux(简单命令,远程ssh使用hostname访问,.免密钥登录配置)

    1.临时关闭防火墙: service  iptables  stop 临时开启防火墙: service  iptables  start 查看防火墙状态: service  iptables  sta ...

  6. Qt qss 动态属性-不同条件不同显示

    一. 1.为了用户界面外观的动态变化,属性选择器可以与动态属性组合使用. 2.当一个属性值变化时,所引用的样式不会自动更新.相反地,必须手动触发更新才会生效.unpolish()用于清理之前的样式,而 ...

  7. Android测试之查看package和activity名称的方法

    方法一:使用aapt    //aapt是sdk自带的一个工具,在sdk\builds-tools\目录下 1.命令行中切换到aapt.exe目录执行:aapt dump badging + 路径  ...

  8. PJzhang:一道看线索找答案的逻辑题

    猫宁!!! 这道逻辑题,2年前就有打算解决,但是没上心,今天抽空梳理出来了思路,逻辑上可以跑的通,不至于以后慢慢忘了,这道题和数独题基本类似,但是也许更花时间,做这种题最好看着线索列图标,省的不停翻页 ...

  9. 【DSP开发】mailbox的使用

    在DSP项目开发中,我用mailbox实现了进程间的通信,通过接收网络控制进程发来的mailbox,实现了云台的控制,其中需要学习的地方有两点:一是mailbox通信机制的学习,二是DSP时间管理机制 ...

  10. 非常好的一个JS代码(CJL.0.1.js)

    /*! * Cloudgamer JavaScript Library v0.1 * Copyright (c) 2009 cloudgamer * Blog: http://cloudgamer.c ...