KVM 虚拟机
第1章 KVM介绍
虚拟化架构分类
- 寄居虚拟化架构:指在宿主操作系统之上安装和运行虚拟化程序,依赖于宿主操作系统对设备的支持和物理资源的管理。
- 裸金属虚拟化架构:指直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用,依赖虚拟层内核和服务器控制台进行管理。
- 操作系统虚拟化架构:在操作系统层面增加虚拟服务器功能。操作系统虚拟化架构把单个的操作系统划分为多个容器,使用容器管理器来进行管理。
宿主操作系统负责在多个虚拟服务器(即容器)之间分配硬件资源,并且让这些服务器彼此独立。 - 混合虚拟化架构:将一个内核级驱动器插入到宿主操作系统内核。这个驱动器作为虚拟硬件管理器来协调虚拟机和宿主操作系统之间的硬件访问。
参考于https://yq.aliyun.com/articles/693512
按虚拟对象分类
- 服务器虚拟化:通过虚拟化软件,在一个服务器上虚拟出多个服务器,每
个服务器都有自己的操作系统,每个系统相互独立,互不影响。充分利用
硬件资源,安全(应用之间互不影响)。 - 存储虚拟化:硬件上的存储设备整合为一个大的存储设备,而后根据需要
进行分配。 - 网络虚拟化:通过软件实现网络设备形成网络虚拟化,虚拟机之间进行数
据传输使用虚拟交换机。 - 桌面虚拟化:早期为远程桌面,将用户的操作环境和系统的运行环境进行
分离,现在为将用户,应用,操作系统,调用时调用不同的内容拼凑成一
个虚拟桌面。 - 应用虚拟化:运行环境与应用程序进行封装,使应用程序脱离框架库和操
作系统。
KVM简介
KVM --- 全称是基于内核的虚拟机(Kernel-based Virtual Machine)
KVM是一个开源软件,基于内核的虚拟化技术,实际是嵌入系统的一个'虚拟化模块',通过优化内核来使用虚拟技术,该内核模块使得 Linux 变成了一个Hypervisor,虚拟机使用 Linux 自身的'调度器'进行管理。
KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。
KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KMV 能够使用 Linux 内核的已有功能。但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 '/dev/kvm 接口'设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是 QEMU。
第2章 创建一个KVM虚拟机
1.VM虚拟机开启CPU虚拟化功能
设置-处理器-虚拟化
2.安装软件
yum install libvirt virt-install qemu-kvm -y
3.创建虚拟机
systemctl start libvirtd.service
systemctl status libvirtd.service
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos7.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
--virt-type :
--os-type :操作系统类型,如linux、unix或windows等
--os-varian :某类型操作系统的变体,如rhel5、fedora8等
--name :虚拟机名称,需全局惟一;
-memory :虚拟机内在大小,单位为MB;
--vcpus :VCPU个数及相关配置;
--cpu=CPU :
--disk :指定存储设备及其属性;
format :
size :
--cdrom :光盘安装介质
--network network :将虚拟机连入宿主机的网络中
--graphics :指定图形显示相关的配置
--noautoconsole :禁止自动连接至虚拟机的控制台;
4.连接虚拟机
安装VNC工具连接
第3章 KVM常用管理命令
1.查看虚拟机
#只可以查看运行的虚拟机
virsh list
#全部都可以查看
virsh list --all
2.启动虚拟机
virsh start centos7
3.重启虚拟机
virsh reboot centos7
4.关闭虚拟机
#正常关机
virsh shutdown centos7
##关闭电源模式关闭虚拟机centos7,如果跑了数据库,不允许使用destroy关闭。
virsh destroy centos7
5.查看配置文件
virsh dumpxml centos7
#磁盘文件 例: centos7.raw -> 在虚拟机的安装目录
#配置文件 例: centos7.xml -> /etc/libvirt/qemu/centos7.xml
6.导出配置文件(备份配置文件)
virsh dumpxml centos7 > centos7.xml
7.删除虚拟机
virsh destroy centos7
virsh undefine centos7
#删除虚拟机,配置文件会被删除,但是磁盘文件不会删除
8.导入虚拟机
virsh define centos7.xml
#导入虚拟机,只能恢复配置文件丢失的情况,恢复备份的配置文件
9.虚拟机重命名
virsh domrename panghu shouhu
#开机状态下不能修改,要在shut off下修改
10.主机挂起
#virsh可省略
virsh suspend centos7
#挂起的主机也可以用vnc连接
11.恢复主机
virsh resume centos7
12.kvm虚拟机开机启动
# 设置 libvirtd 服务开机自启动。
[root@kvm ~]# systemctl is-enabled libvirtd.service
enabled
设置宿主机开机虚拟机在其他
[root@kvm ~]# virsh autostart centos7
域 clsn7标记为自动开始 //翻译英文内容
# 实质为创建软连接
[root@kvm ~]# ll /etc/libvirt/qemu/autostart/centos7.xml
lrwxrwxrwx 1 root root 27 1月 22 12:17 /etc/libvirt/qemu/autostart/centos7.xml -> /etc/libvirt/qemu/centos7.xml
取消开机自启动
[root@kvm ~]# virsh autostart --disable centos7
域 clsn7取消标记为自动开始 //翻译英文内容
#有软连接,就会开机自启虚拟机登录
13.小项目:
把虚拟机磁盘迁移到/data目录并且启动
13.1.停止要迁移的虚拟机
virsh shutdown centos7
13.2.创建数据目录并移动磁盘文件
mkdir /data
mv /opt/centos7.raw /data
13.3.使用edit命令修改配置文件
#当磁盘文件丢失
virsh edit centos7
--------------------
<source file='/data/centos7.raw'/>
--------------------
#注释:用virsh edit 去修改配置文件,有语法检查,如果使用centos7.xml没有语法检测。(修改用edit,自带语法检查
13.4.启动虚拟机
virsh start centos7
virsh list
第4章 KVM连接方式
1.VNC
#查询虚拟机vnc端口
virsh vncdisplay centos7
:0
# :0 即 为 5900 端口,以此类推 :1为5901 。 短的端口可以在连接的时候使用
#VNC只能连接相同网段的宿主机与虚拟机
2.SSH
ssh 192.168.122.77
3.console显示
登录进需要开启console的虚拟机并添加参数
ssh 192.168.122.77
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
grep "115200" /boot/grub2/grub.cfg
reboot
virsh destroy centos7
virsh start centos7
virsh console centos7
退出
ctrl + ]
第5章 KVM磁盘管理
1.虚拟机磁盘格式介绍
raw:不支持做快照,性能好
qcow2:支持快照,性能不如raw好
2.查看磁盘信息
qemu-img info centos7.raw
3.创建磁盘
qemu-img create -f qcow2 /data/centos7.qcow2 1G
4.查看磁盘信息
qemu-img info centos7.qcow2
5.调整磁盘容量: 只能加不能减
qemu-img resize /data/centos7.qcow2 1T
6.磁盘格式转换
6.1.将虚拟机关机
virsh destroy centos7
6.2.转换磁盘格式
qemu-img convert -f raw -O qcow2 centos7.raw centos7.qcow2
6.3.编辑配置文件修改为qcow2格式
virsh edit centos7
------------------------------------------
<driver name='qemu' type='qcow2'/>
<source file='/opt/centos7.qcow2'/>
------------------------------------------
6.4.重新启动
virsh start centos7
virsh console centos7
第6章 KVM快照管理
1.查看快照
virsh snapshot-list centos7
2.创建快照
virsh snapshot-create-as centos7 snap1
virsh snapshot-list centos7
3.恢复快照
virsh snapshot-revert centos7 snap1
4.删除快照
virsh snapshot-delete centos7 snap1
virsh snapshot-list centos7
第7章 KVM克隆虚拟机
1.完整克隆
virsh shutdown centos7
virt-clone --auto-clone -o centos7 -n centos7-backup
virsh list --all
virsh dumpxml web-blog-backup |grep "qcow2"
virsh snapshot-list centos7
2.链接克隆
2.1 生成虚拟机磁盘文件
qemu-img create -f qcow2 -b centos7.qcow2 centos7-clone.qcow2
2.2 查看磁盘信息
qemu-img info centos7-clone.qcow2
2.3 生成虚拟机配置文件
virsh dumpxml centos7 > centos7-clone.xml
sed -i '/uuid/d' centos7-clone.xml
sed -i '/mac address/d' centos7-clone.xml
sed -i 's#centos7.qcow2#centos7-clone.qcow2#g' centos7-clone.xml
sed -i '/<nam/s#centos7#centos7-clone#g' centos7-clone.xml
2.3 导入配置文件
virsh define centos7-clone.xml
virsh list --all
2.4 启动虚拟机
virsh start centos7-clone
第8章 KVM桥接网络
1.创建桥接网卡
virsh iface-bridge eth0 br0
2.连接克隆新磁盘
cd /opt
qemu-img create -f qcow2 -b centos7.qcow2 bridge.qcow2
3.创建新虚拟机
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7-bridge --memory 1024 --vcpus 1 --disk /opt/bridge.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
4.登录虚拟机查看网卡信息
virsh console centos7-bridge
ip a
5.在其他主机ping测试
ping xxxx
第9章 KVM虚拟机热添加磁盘
1.热添加硬盘
1.1 创建磁盘
qemu-img create -f qcow2 centos7-add.qcow2 10G
1.2 临时生效添加
virsh attach-disk centos7 /opt/centos7-add.qcow2 vdb --subdriver qcow2
1.3 虚拟机格式化并挂载
virsh console centos7
fdisk -l
mkfs.xfs /dev/vdb
mount /dev/vdb /mnt/
df -h
1.4 永久生效添加
virsh attach-disk centos7 /opt/centos7-add.qcow2 vdb --subdriver qcow2
virsh attach-disk centos7 /opt/centos7-add.qcow2 vdb --subdriver qcow2 --config
2.剥离磁盘
2.1 临时剥离
virsh detach-disk centos7 vdb
2.2 永久剥离
virsh detach-disk centos7 vdb
virsh detach-disk centos7 vdb --config
3.调整磁盘大小
3.1 调整磁盘大小
qemu-img info /opt/centos7-add.qcow2
qemu-img resize /opt/centos7-add.qcow2 +10G
3.2 添加到虚拟机并查看
virsh attach-disk centos7 /opt/centos7-add.qcow2 vdb --subdriver qcow2
virsh console centos7
fdisk -l /dev/vdb
mount /dev/vdb /mnt/
df -h|tail -1
3.3 调整磁盘信息
xfs_growfs /dev/vdb
df -h|tail -1
第10章 KVM热添加网卡
1.临时添加
virsh attach-interface centos7 --type bridge --mac 52:54:00:b1:b5:8a --source br0 --model virtio detachinterface
2.永久生效
virsh attach-interface centos7 --type bridge --mac 52:54:00:b1:b5:8a --source br0 --model virtio detachinterface --config
3,临时剥离
virsh detach-interface centos7 bridge
4.永久剥离
virsh detach-interface centos7 bridge
virsh detach-interface centos7 bridge --config
第11章 KVM热添加内存
1.创建虚拟机时直接添加最大内存参数
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --
memory 512,maxmemory=2048 --vcpus 1 --disk /opt/centos7.qcow2 --boot hd --network bridge=br0 --
graphics vnc,listen=0.0.0.0 --noautoconsole
2.如果创建虚拟机的时候没有设置最大内存限制,执行如下操作添加配置
virsh destroy centos7
virsh setmaxmem centos7 4096M
virsh start centos7
virsh console centos7
free -h
3.临时添加
virsh setmem centos7 2048M --live
virsh console centos7
free -h
4.永久增大内存
virsh setmem centos7 2048M --config
virsh console centos7
free -h
第12章 KVM冷添加CPU
1.编辑配置文件
virsh edit centos7
------------------------------------------------
<vcpu placement='static' current='2'>4</vcpu>
------------------------------------------------
2.添加cpu核数
virsh setvcpus centos7 4 --live
3.永久添加cpu核数
setvcpus centos7 4 --config