linux虚拟化软件
- qemu:硬件纯模拟全虚拟化软件,特别慢!兼容性好!
- xen:性能特别好,需要使用专门修改之后的内核,兼容性差,redhat 5.5之前使用xen时候使用kvm
- KVM:全虚拟机,它有硬件支持cpu,基于内核,而且不需要使用专门的内核,centos6使用kvm
性能较好,兼容较好
安装kvm
yum install libvirt virt-install qemu-kvm -y
生成一台虚拟机
virt-install --virt-type kvm
--os-type=linux
--os-variant rhel7
--name centos7
--memory 1024
--vcpus 1
--disk /opt/centos2.raw,format=raw,size=10
--cdrom /opt/CentOS-7-x86_64-DVD-1708.iso
--network network=default
--graphics vnc,listen=0.0.0.0
--noautoconsole #可有可无
- 云主机没有swap分区
拔电源关机
virsh destroy 实例名称/id
删除实例
undefine #先关机后删除,否则出现没有配置文件的实例,导致关机后消失
导入配置文件
define
重命名实例
domrename #低版本不支持
挂起与恢复
suspend #导致时间出错
resume
查询实例端口号
vncdisplay
实现console登录虚拟机
grubby --update-kernel=ALL --args=“console=ttyS0,115200n8”
reboot
查看磁盘信息
qemu-img info 磁盘文件名称
创建一块磁盘
qemu-img create -f qcow2 test.qcow2 2G #-f指定类型
调整磁盘磁盘容量
qemu-img resize test.qcow2 20G
转换磁盘类型
raw转qcow2:qemu-img convert -f raw -O qcow2 oldboy.raw oldboy.qcow2 #不会删除原磁盘
修改实例的配置
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/data/centos2.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
关机后启动生效
创建快照(raw不支持快照)
virsh snapshot-create-as centos7 --name install_ok #指定名字,不指定是随机字符
查看快照
virsh snapshot-list centos7
还原快照
virsh snapshot-revert centos7 --snapshotname 快照名称
删除快照
virsh snapshot-delete centos7 --snapshotname
完整克隆实例
自动挡
virt-clone --auto-clone -o web01 -n web02
手动挡
qemu-img convert -f qcow2 -O qcow2 -c web01.qcow2 web03.qcow2 #-c压缩
virsh dumpxml web01 >web02.xml
vim web02.xml
#修改虚拟机的名字
#删除虚拟机uuid
#删除mac地址
#修改磁盘路径
virsh define web02.xml
virsh start web02
链接克隆
- 生成磁盘文件
qemu-img create -f qcow2 -b web03.qcow2 web04.qcow2 #-b生成引用盘
- 生成配置文件
virsh dumpxml web01 >web03.xml
vim web03.xml
#修改虚拟机的名字
<name>web03</name>
#删除虚拟机uuid
<uuid>8e505e25-5175-46ab-a9f6-feaa096daaa4</uuid>
#删除mac地址
<mac address='52:54:00:4e:5b:89'/>
#修改磁盘路径
<source file='/opt/web03.qcow2'/>
- 导入配置文件
全自动链接克隆脚本
[root@kvm01 scripts]# cat link_clone.sh
#!/bin/bash
old_vm=$1
new_vm=$2
#a:生成虚拟机磁盘文件
old_disk=`virsh dumpxml $old_vm|grep "<source file"|awk -F"'" '{print $2}'`
disk_tmp=`dirname $old_disk`
qemu-img create -f qcow2 -b $old_disk ${disk_tmp}/${new_vm}.qcow2
#b:生成虚拟机的配置文件
virsh dumpxml $old_vm >/tmp/${new_vm}.xml
#修改虚拟机的名字
sed -ri "s#(<name>)(.*)(</name>)#\1${new_vm}\3#g" /tmp/${new_vm}.xml
#删除虚拟机uuid
sed -i '/<uuid>/d' /tmp/${new_vm}.xml
#删除mac地址
sed -i '/<mac address/d' /tmp/${new_vm}.xml
#修改磁盘路径
sed -ri "s#(<source file=')(.*)('/>)#\1${disk_tmp}/${new_vm}.qcow2\3#g" /tmp/${new_vm}.xml
#c:导入虚拟机并进行启动测试
virsh define /tmp/${new_vm}.xml
virsh start ${new_vm}
创建桥接网络
virsh iface-bridge eth0 网卡名称
取消桥接网络
virsh iface-unbridge br0
生成桥接网络实例命令
--network bridge=br0
修改net模式为桥接模式
<interface type='bridge'>
<source bridge='br0'/>
给虚拟机配置ip地址
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.99
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
DNS1=180.76.76.76
DNS2=223.5.5.5
热添加技术
热添加硬盘
virsh attach-disk web01 /data/web01-add.qcow2 vdb --subdriver qcow2 #绝对路径,立即生效
--config #修改配置文件,重启生效
剥离硬盘
virsh detach-disk web01 vdb
对硬盘进行扩容
卸载硬盘
剥离硬盘
调整硬盘大小
添加硬盘
挂在硬盘
更新超级块(inode和block)信息xfs_growfs
添加网卡
virsh attach-interface web04 --type bridge --source br0 --model virtio #--model参数规范网卡名称
剥离网卡
virsh detach-interface web04 --type bridge --mac 52:54:00:35:d3:71
生成实例时调整最大内存
--memory 512,maxmemory=2048
调整内存(开机时修改)
virsh setmem web04 1024M
调整最大内存(永久生效,关机时修改)
virsh setmaxmem web04 4G
生成实例时调整最大cpu数量
--vcpus 1,maxvcpus=10
调整cpu数量(不能减小,cpu时调整cpu参数)
virsh setvcpus web04 4
调整cpu的最大值
<vcpu placement='static' current='1'>4</vcpu> #当前为1,最大为4
热迁移
yum install rpcbind -y
vim /etc/exports
/data 10.0.0.0/24(rw,async,no_root_squash,no_all_squash)
#将两个宿主机的磁盘文件目录挂载到nfs中
virsh migrate
--live #显示进度
--verbose web03 qemu+ssh://10.0.0.100/system #添加hosts解析
--unsafe #调过安全检查
--persistent #磁盘和配置文件都迁移
--undefinesource #删除原宿主机的实例
kvm虚拟机迁移esxi
转换类型
qemu-img convert -f qcow2 oldimage.qcow2 -O vmdk newimage.vmdk
通过df查看磁盘文件的存放位置
vmkfstools -i newimage.vmdk -d thin centos-t1.vmdk
esxi迁移kvm
导出ova文件
yum install virt-v2v -y
virt-v2v -i ova centos-dev-test01-v2v.ova -o local -os /opt/test -of qcow2 #-o本机
设置导入的实例监听在所有网卡
<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' >
<listen type='address' address='0.0.0.0' />
</graphics>