一、KVM 存储虚拟化介绍
KVM 的存储虚拟化是通过存储池(Storage Pool)和卷(Volume)来管理的。
Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种型;
Volume 是在 Storage Pool 中划分出的一块空间,宿主机将 Volume 分配给虚拟机,Volume 在虚拟机中看到的就是一块硬盘。
存储池的意思就是可以在kvm 环境当中给你虚拟机提供硬盘资源目录
/var/lib//libvirt/images/ 这个目录就是存储池
centos7.0-test.qcow2 CentOS-7-x86_64-DVD-1804.iso test1.qcow2 testone.qcow2 这些文件就是卷
test1.qcow2 这就是一个磁盘
二、目录类型的 Storage Pool
文件目录是最常用的 Storage Pool 类型。KVM 将宿主机目录 /var/lib/libvirt/images/ 作为默认的 Storage Pool
Volume 是该目录下面的文件了,一个文件就是一个 Volume。
怎么去添加硬盘呢
默认路径就是这个
这边也有了
virtual size: 5.1G (5476083712 bytes) 5G大小
disk size: 1.4M 实际用量
VirtIO 是更好地支持qemu对虚拟机的输入输出的管理,只有虚拟化里磁盘的类型才有VirtIO
现在打开虚拟机看看这个卷在虚拟 机里是怎样的状态
lsblk 查看块设备
想用这块盘就先分区
fdsik
完后做文件系统
mkfs
完后在挂载
mount
如果不想要了直接删除
完后再确认一下
发现没有了
再查看默认存储池里有没有
发现还在
如果不用直接删除就可以
那这是默认的存储池,如果觉得默认的特别麻烦,或者是想把这个存储池另外用一块硬盘,给它提供存储池
首先先要在宿主机里添加一块儿硬盘并且把这个硬盘挂载到目录下面=
在宿主机里
[root@server ~]# mkdir /pool
想把pool当做存储池
如果用的话就选择和刚才的流程都一样
那么kvm是如何把这个pool目录当成存储池的呢
实际上kvm都把所以的存储池都定义在宿主机的/etc/libvirt/storaged 目录下,每一个存储池都是.xml 的文件
[root@server images]# cd /etc/libvirt/
[root@server libvirt]# ls
libvirt-admin.conf libvirtd.conf nwfilter qemu.conf secrets virtlockd.conf
libvirt.conf lxc.conf qemu qemu-lockd.conf storage virtlogd.conf
[root@server libvirt]# cd storage/
[root@server storage]# ls
autostart default.xml pool.xml
[root@server storage]# vim default.xml 和我们虚拟机的配置文件一样
[root@server storage]# vim pool.xml 查看新创建的存储池
虚拟机的配置文件也保存在
也储存在 /etc/libvirt/qemu
这是我们刚才的两个虚拟机
虚拟机的配置文件
/etc/libvirt/qemu
默认存储池在
/var/lib/libvirt/images/
存储池配置文件在
/etc/libvirt/storage
如果是在环境下删除虚拟机(首先虚拟机在关机状态下)
virsh list --all 查看是否关机状态
virsh undefine 虚拟机名字
删除一个虚拟机只是把它的配置文件在KVM中删除了,那么硬盘还是保留在的,如果想完整删除,必须得把硬盘也删除了
下图为老师的操作
如何恢复删除的虚拟机(前提是你得把虚拟机的配置文件cp一份到别的路径下这样才能恢复,如果没有是恢复不了的)
virsh define 配置文件名
首先路径不能修改
这样就恢复了可以 virsh list --all 查看
把A2虚拟机迁移到B1里面 让它直接就可以使用
就是把配置文件和磁盘发过去
发送配置文件
[root@server qemu]# pwd
/etc/libvirt/qemu
[root@server qemu]# ls
centos7.0-test.xml networks testone.xml
[root@server qemu]# scp testone.xml root@192.168.193.135:/root/
root@192.168.193.135's password:
testone.xml 100% 4569 294.1KB/s 00:00
发送磁盘
[root@server images]# pwd
/var/lib/libvirt/images
[root@server images]# scp testone.qcow2 root@192.168.193.135:/root/
发送过去后还需修改磁盘路径
[root@server images]# ssh 192.168.193.135
root@192.168.193.135's password:
Last login: Tue May 28 20:12:40 2019
[root@localhost ~]# ls
testone.qcow2 testone.xml
把硬盘移动到
[root@localhost ~]# mv testone.qcow2 /var//lib/libvirt/images/
修改配置文件 此路径要和 mv 的路径要一致
[root@localhost ~]# vim testone.xml
[root@localhost ~]# virsh define testone.xml 定义域
定义域 testone(从 testone.xml)
[root@localhost ~]# virsh list --all
Id 名称 状态
----------------------------------------------------
- centos7.0-testone 关闭
- testone 关闭
查看是否存在
登录
检查是否能运行,可以运行的话冷迁移实验成功
热迁移:机器在开机的状态下迁移
冷迁移:机器关机状态进行迁移
ssh 如果出现报错
是因为之前连过这个IP 公钥已存在,而现在公钥跟新,或者是IP一样,机器不一样
在/root 下有隐藏文件 .ssh
ls -a 查看
cd .ssh/
ls 查看 有个 known_hosts 文件
vim known_hosts 编辑
把IP错误的那个IP和他有关的删除重新就可以了