目录
【概念】
KVM必须要配置一个目录当作他存储磁盘镜像(存储卷)的目录,我们称这个目录为存储池。
默认存储池
/ar/lib/libvirt/images/
一、存储池管理
1.创建基于文件夹的存储池(目录)
[root@localhost ~]# mkdir -p /data/vmfs
2.定义存储池与其目录
[root@localhost ~]# virsh pool-define-as vmdisk --type dir --target /data/vmfs
Pool vmdisk defined
3.创建已定义的存储池
- (1) 创建已定义的存储池
[root@localhost ~]# virsh pool-build vmdisk
Pool vmdisk built
- (2) 查看已定义的存储池,存储池不激活无法使用
[root@localhost ~]# virsh pool-list --all
Name State Autostart
-------------------------------------------
data active yes
images active yes
vmdisk inactive no
4.激活并自动启动已定义的存储池
[root@localhost ~]# virsh pool-start vmdisk
Pool vmdisk started
[root@localhost ~]# virsh pool-autostart vmdisk
Pool vmdisk marked as autostarted
[root@localhost ~]# virsh pool-list --all
Name State Autostart
-------------------------------------------
data active yes
images active yes
vmdisk active yes
这样vmdisk存储池就创建好了,可以直接在这个存储池中创建虚拟磁盘文件了。
5.在存储池中创建虚拟机存储卷
[root@localhost ~]# virsh vol-create-as vmdisk test.qcow2 3G --format qcow2
Vol test.qcow2 created
- 注1:KVM存储池主要是体现一种管理方式,可以通过挂载存储目录,lvm逻辑卷的方式创建存储池,虚拟机存储卷创建完成后,剩下的操作与无存储卷的方式无任何区别了。
- 注2:KVM存储池也要用于虚拟机迁移任务。
6.存储池相关管理命令
- (1)在存储池中删除虚拟机存储卷
[root@localhost ~]# virsh vol-delete --pool vmdisk test.qcow2
Vol test.qcow2 deleted
- (2)取消激活存储池
[root@localhost ~]# virsh pool-destroy vmdisk
Pool vmdisk destroyed
- (3)删除存储池定义的目录/data/vmfs
[root@localhost ~]# virsh pool-delete vmdisk
Pool vmdisk deleted
- (4)取消定义存储池
[root@localhost ~]# virsh pool-undefine vmdisk
Pool vmdisk has been undefined
二、生产环境存储池使用
添加Ivm和远程存储即可
三、磁盘格式
1.磁盘镜像文件格式
raw
- 原始格式,性能最好
qcow
- 先去网上了解一下cow(写时拷贝copy on write),性能远不能和raw相比,所以很快天折了,所以出现了qcow2
qcow2
- 性能上还是不如raw,但是raw不支持快照,qcow2支持快照
ged
- 现在默认安装好的用的是raw格式,所有做快照要把他转换成qcow2格式
什么叫写时拷贝?
- raw立刻分配空间,不管你有没有用到那么多空间
- qcow2只是承诺给你分配空间,但是只有当你需要用空间的时候,才会给你空间。最多只给你承诺空间的大小,避免空间浪费
2.创建磁盘文件
- 建立qcow2格式磁盘文件:
[root@localhost ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/test.qcow2 3G
Formatting '/var/lib/libvirt/images/test.qcow2', fmt=qcow2 size=3221225472 encryption=off cluster_size=65536 lazy_refcounts=off
- 建立raw格式磁盘文件:
[root@localhost ~]# qemu-img create -f raw /var/lib/libvirt/images/test.img 3G
Formatting '/var/lib/libvirt/images/test.img', fmt=raw size=3221225472
- 查看已经创建的虚拟碰盘文件:
[root@localhost ~]# qemu-img info /var/lib/libvirt/images/test.qcow2
image: /var/lib/libvirt/images/test.qcow2
file format: qcow2
virtual size: 3.0G (3221225472 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
下面可以看出来raw文件格式的直接就有3G空间,而qcow2初识空间很小
[root@localhost ~]# ll -h /var/lib/libvirt/images
total 11G
-rw-r--r-- 1 root root 3.0G Feb 2 09:39 test.img
-rw-r--r-- 1 root root 193K Feb 2 09:38 test.qcow2
-rw------- 1 qemu qemu 11G Jan 20 10:12 win2k12r2.img
四、挂载磁盘
作为虚拟化环境管理员,你肯定遇到过虚拟机无法启动的情况。实施排错时,你需要对虚拟机的内部进行检查。而Libguestfs Linux工具集可以在这种情况下为你提供帮助。
利用Libguestfs找出损坏的虚拟机文件。
Libguestfs允许在虚拟机上挂载任何类型的文件系统,以便修复启动故障。
使用Libguestfs,首先需要使用Libvirt。Libvirt是一个管理接口,可以和KVM、Xen和其他一些基于Liunx的虚拟机相互连接。Libguestfs的功能更加强大,可以打开Windows虚拟机上的文件。但是首先你需要将虚拟机迁移到libguestfs可用的环境当中,也就是Linux环境。
假如你是vmware的ESXI虚拟机,为了将虚拟机迁移到Linux当中,你可以使用SSH连接到ESXi主机,这意味着你首先需要启用ESXi主机上的SSH访问方式。完成之后,在Linux平台上运行下面的scp命令:
- 查看磁盘镜像分区信息:
[root@localhost ~]# virsh list --all
Id Name State
----------------------------------------------------
- win2k12r2 shut off
[root@localhost ~]# virt-df -h -d win2k12r2
Filesystem Size Used Available Use%
win2k12r2:/dev/sdb 4.1G 4.1G 0 100%
[root@localhost ~]# virt-filesystems -d win2k12r2
/dev/sdb
/dev/sda1
/dev/sda2
- 挂载磁盘镜像分区:
[root@localhost ~]# guestmount -d win2k12r2 -m /dev/sdb --rw /mnt
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 16G 1013M 95% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 12M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 147M 868M 15% /boot
tmpfs 781M 0 781M 0% /run/user/0
/dev/fuse 4.2G 4.2G 0 100% /mnt
[root@localhost mnt]# ls
autorun.inf boot bootmgr bootmgr.efi efi setup.exe sources support
- 取消挂载
[root@localhost mnt]# guestunmount /mnt