https://blog.csdn.net/chengyinwu/article/details/103281476 有待整理
kvm集群管理 ovirt 、 proxmox
一、简单介绍
KVM(Kernel-based Virtual Machine)是内核级虚拟化技术
1、kvm和qemu
kvm硬件虚拟化(CPU和内存) ,qemu软件虚拟化 。二者相辅相成,QEMU通过KVM达到了硬件虚拟化的速度,而KVM则通过QEMU来模拟设备。对于KVM来说,其匹配的用户空间工具并不仅仅只有QEMU,还有其他的,比如RedHat开发的libvirt、virsh、virt-manager等,QEMU并不是KVM的唯一选择
2、kvm和docker
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案,但它本质上是进程隔离(namespace)和资源限制(cgroups),严格来说不算是虚拟化技术。
作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。
二、KVM 安装配置
1、环境准备
关闭Selinux & 防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
设置Yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache
查看是否支持虚拟化
cat /proc/cpuinfo | grep -E 'vmx|svm'
查看KVM 驱动是否加载
lsmod | grep kvm
如果没有加载kvm驱动,利用命令加载驱动
modprobe -a kvm
modprobe -a kvm_intel
2、安装kvm及相关组件
安装所需工具包qemu-kvm
librvirt
virt-manager
在安装之前我们最好更新一下软件包
yum update -y
安装qemu-kvm
yum install -y qemu-kvm
安装libvirt
yum install -y libvirt
[root@abcdocker.com ~]# systemctl restart libvirtd
[root@abcdocker.com ~]# systemctl enable libvirtd
#libvirt 用来管理kvm
安装virt-manager工具
yum install -y virt-manager
解决字符集问题(CRT会出现)
yum install dejavu-lgc-sans-fonts
或者一条通配符
# yum install *qemu* *virt* librbd1-devel -y
3、查看版本(编译安装的较新)
# /usr/libexec/qemu-kvm -version
QEMU emulator version 2.12.0 (qemu-kvm-ev-2.12.0-33.1.el7)
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers
# qemu-img --help | grep version
qemu-img version 2.12.0 (qemu-kvm-ev-2.12.0-33.1.el7)
'-V', '--version' output version information and exit
conversion. If the number of bytes is 0, the source will not be scanned for
4、相关工具
libvirt:操作和管理KVM虚机的虚拟化 API,使用 C 语言编写,可以由 Python,Ruby, Perl, PHP, Java 等语言调用。可以操作包括 KVM,vmware,XEN,Hyper-v, LXC 等 Hypervisor。
Virsh:基于 libvirt 的 命令行工具 (CLI)
Virt-Manager:基于 libvirt 的 GUI 工具
virt-v2v:虚机格式迁移工具
virt-* 工具:包括 Virt-install (创建KVM虚机的命令行工具), Virt-viewer (连接到虚机屏幕的工具),Virt-clone(虚机克隆工具),virt-top 等
sVirt:安全工具
三、KVM 网络
1、KVM 客户机网络连接有两种方式:
(1)用户模式(NAT):这种方式是默认网络,数据包由NAT方式通过主机的接口进行传送,可以访问外网,但是无法从外网访问虚拟机网络
(2)桥接模式(Bridge):这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的主机可以直接访问到虚拟机内部
2、配置桥接网络
IP地址 说明 备注 10.4.82.220 本机IP 10.4.82.200 网关地址 10.4.82.116 虚拟机IP
1.编辑宿主机网卡
[root@YZSJHL82-220 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=em1
ONBOOT=yes
HWADDR=B4:99:BA:B1:24:57
TYPE=Ethernet
BOOTPROTO=static
BRIDGE=br0
## 注释网络配置,添加BRIDGE=br0
2.添加bro虚拟网卡
# vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
BOOTPROTO=none
ONBOOT=yes
TYPE=Bridge
IPADDR=10.4.82.220
NETMASK=255.255.255.0
GATEWAY=10.4.82.200
##添加网络配置,TPYE设置为Bridge
3. 重启网卡
# systemctl restart network
如果重启网卡有报错,内容如下
Linux : Bridge support not available: brctl not found
请安装br网卡依赖包
yum install bridge-utils -y
4.查看IP地址
此时ens33物理网卡应该没有IP,IP应该都在br0网卡上
5、配置虚拟机ip
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
HWADDR=52:54:00:ED:7A:16
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
PEERDNS=yes
NAME=eth0
UUID=1c1d3828-0adb-4d1a-ada5-80eda0646952
ONBOOT=yes
IPADDR=10.4.82.113
NETMASK=255.255.255.0
GATEWAY=10.4.82.200 #和宿主机的网关一样
DNS1=114.114.114.114
四、制作快照
命令行方式(磁盘格式为qcow2才支持快照)
虚拟机创建快照:
# virsh snapshot-create-as vm8 vm8.snap1(vm8为虚拟机)
# virsh snapshot-create centos7.0 (不如上面的方便)
已生成域快照 1583311966
# virsh snapshot-list centos7.0 查看当前快照
名称 生成时间 状态
------------------------------------------------------------
centos7.sanp1 2020-03-03 16:13:43 +0800 shutoff
centos7.snap2 2020-03-03 16:26:07 +0800 shutoff
# qemu-img info /var/lib/libvirt/images/centos7.0.qcow2 (查看虚拟机信息)
image: /var/lib/libvirt/images/centos7.0.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 11G
cluster_size: 65536
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 centos7.sanp1 0 2020-03-03 16:13:44 00:00:00.000
2 centos7.snap2 0 2020-03-03 16:26:07 00:00:00.000
3 1583311966 364M 2020-03-04 16:52:46 00:39:42.734
Format specific information:
compat: 1.1
lazy refcounts: true
关闭虚拟机,恢复到第一个快照
# virsh shutdown vm8
# virsh snapshot-revert vm8 vm8.snap1
# virsh snapshot-delete test01 1560191837 #删除快照
五、kvm常用指令和文件夹
# virt-manage 调用图形管理界面
查看kvm支持的os版本:
# man virt-install
# osinfo-query os | grep centos
# virsh -h #查看命令帮助
# ls /etc/libvirt/qemu #查看KVM的配置文件存放目录
networks test01.xml (test01.xml是虚拟机系统实例的配置文件)
# virsh list --all #查看虚拟机状态
Id 名称 状态
----------------------------------------------------
2 test01 running
# virsh shutdown test01 #关闭虚拟机
# virsh start test01 #开启虚拟机
# virsh destroy test01 #强制关机
# virsh create /etc/libvirt/qemu/test01.xml #通过配置文件启动虚拟机
# virsh suspend test01 #挂起虚拟机
# virsh resume test01 #从挂起状态恢复运行虚拟机
# virsh autostart test01 #设置虚拟机伴随宿主机自动启动
#虚拟机的删除与添加:
[root@localhost ~]# virsh dumpxml test01 > /etc/libvirt/qemu/test02.xml #导出虚拟机配置
#删除虚拟机:
[root@localhost ~]# virsh shutdown test01
[root@localhost ~]# virsh undefine test01
[root@localhost ~]# virsh list --all #查看虚拟机是否被删除
Id 名称 状态
----------------------------------------------------
#通过备份的配置文件重新定义虚拟机:
[root@localhost ~]# cd /etc/libvirt/qemu/
[root@localhost qemu]# mv test02.xml test01.xml
[root@localhost qemu]# virsh define test01.xml
#修改虚拟机配置(内存大小等)信息:
# vim /etc/libvirt/qemu/test01.xml
# virt-df -h test01 #在宿主机上查看虚拟机磁盘信息
克隆虚拟机:
# virt-clone -o test01 -n test02 -f /kvm/store/test02.qcow2
#将test01克隆为test02
[root@localhost qemu]# virsh list --all #查看现有虚拟机
Id 名称 状态
----------------------------------------------------
- test01 关闭
- test02 关闭
转化格式
qemu-img convert -c -O qcow2 test.raw test.qcow2
改变镜像文件大小(raw和qcow2都可以支持resize)
qemu-img resize test.raw +1GB
六、 使用iso制作qcow2镜像
https://www.cnblogs.com/elvi/p/8001298.htm 制作windos镜像
首选创建虚拟磁盘
#qemu-img create -f qcow2 CentOS-6.3-x86_64.qcow2 10G
其次从iso启动镜像
#virt-install --name centos-7.4 --ram 1024 --cdrom=CentOS-7.4-x86_64-bin-DVD1.iso --disk CentOS-7.4-x86_64.qcow2,format=qcow2 --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel6 --check all=off
报错
开始安装......
ERROR Cannot access storage file '/root/CentOS-7.4-x86_64.qcow2' (as uid:107, gid:107): 权限不够
域安装失败,您可以运行下列命令重启您的域:
'virsh start virsh --connect qemu:///system start centos-7.4'
解决:
sed -i 's/#vnc_listen = "0.0.0.0"/vnc_listen = "0.0.0.0"/g' /etc/libvirt/qemu.conf
sed -i 's/#group = "root"/group = "root"/g' /etc/libvirt/qemu.conf
sed -i 's/#user = "root"/user = "root"/g' /etc/libvirt/qemu.conf
service libvirtd restart
#virt-install --name Windows2008_x64 --ram 2048 --cdrom=win2008_x64fre_server_eval_zh-cn-GRMSXEVAL_CN_DVD.iso --disk Windows2008_x64.qcow2,format=qcow2 --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=windows --os-variant=win2k8 --check all=off
查看vnc端口
#virsh vncdisplay centos-6.3
使用vnc去连接安装系统
最后关闭系统后就可以使用QCOW2的镜像了
七、创建kvm虚拟机的三种方式
1 使用 virt-install 命令
virt-install \
--name=guest1-rhel5-64 \ --file=/var/lib/libvirt/images/guest1-rhel5-64.dsk \
--file-size=8 \
--nonsparse --graphics spice \
--vcpus=2 --ram=2048 \
--location=http://example1.com/installation_tree/RHEL5.6-Serverx86_64/os \
--network bridge=br0 \
--os-type=linux \
--os-variant=rhel5.4
2 使用 virt-manager 工具
不做介绍
3 使用 qemu-img 和 qemu-kvm 命令行方式安装
(1)创建一个空的qcow2格式的镜像文件
qemu-img create -f qcow2 windows-master.qcow2 10G
(2)启动一个虚机,将系统安装盘挂到 cdrom,安装操作系统
qemu-kvm -hda windows-master.qcow2 -m 512 -boot d -cdrom /home/user/isos/en_winxp_pro_with_sp2.iso
(3)现在你就拥有了一个带操作系统的镜像文件。你可以以它为模板创建新的镜像文件。使用模板的好处是,它会被设置为只读所以可以免于破坏。
qemu-img create -b windows-master.qcow2 -f qcow2 windows-clone.qcow2
(4)新的镜像文件上启动虚机了
https://www.sohu.com/a/312683006_120115703 问题解决方法
ln -s /usr/libexec/qemu-kvm /usr/sbin/ (可执行文件软连接)
qemu-kvm -hda windows-clone.qcow2 -m 400
1、使用dd创建虚拟机硬盘
dd if=/dev/zero of=centos.img bs=2k seek=4096k count=1
<domain type="kvm">
<name>centos</name> <!--虚拟机名称-->
<memory unit="MiB">1024</memory> <!--最大内存,单位k-->
<currentMemory unit="MiB">1024</currentMemory> <!--可用内存,单位k-->
<vcpu>2</vcpu> <!--//虚拟cpu个数-->
<os>
<type arch="x86_64" machine="pc">hvm</type>
<boot dev="hd" /> <!-- 硬盘启动 -->
<boot dev="cdrom" /> <!--//光盘启动-->
</os>
<features>
<acpi />
<apic />
<pae />
</features>
<clock offset="localtime" />
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2" />
<source file="/var/lib/libvirt/images/test.qcow2" /> <!--目的镜像路径-->
<target dev="hda" bus="ide" />
</disk>
<disk type="file" device="cdrom">
<source file="/var/lib/libvirt/images/ubuntu.iso" /> <!--光盘镜像路径 -->
<target dev="hdb" bus="ide" />
</disk>
<interface type="bridge"> <!--虚拟机网络连接方式-->
<source bridge="br0" /> <!--当前主机网桥的名称-->
</interface>
<input type="mouse" bus="ps2" />
<!--vnc方式登录,端口号自动分配,自动加1,可以通过virsh vncdisplay来查询-->
<graphics type="vnc" port="-1" autoport="yes" listen="0.0.0.0" keymap="en-us" />
</devices>
</domain>
3、创建虚拟机
virsh define centos.xml
###将配置导入到虚拟机
virsh start centos
#### 启动虚拟机