- 确认CPU已经支持虚拟化,intel的CPU虚拟化技术交vmx,AMD的CPU交svm:
grep -E "vmx|svm" /proc/cpuinfo
- 安装kvm平台及工具包
yum install qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install
- 启动libvirtsd并设置为开机启动,librirtd会创建一个桥接的网卡virbr0而且IP地址是192.168.122.1:
systemctl start libvirtd systemctl enable libvirtd ifconfig virbr0
- 查看为虚拟机分配ip的服务
ps -aux | grep dns
- 创建磁盘
#创建一个格式为raw大小为50G的裸磁盘 cd /home qemu-img create -f raw test1.raw 50G
- 开始安装
#网络模式默认模式: virt-install --virt-type kvm --name CentOS-7-x86_64 --ram 1024 --cdrom=/opt/CentOS-7-x86_64-DVD-1511.iso --disk path=/home/test1.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole #桥接网络,目前没有做bro后面专门演示 virt-install --virt-type kvm --name openstack-middleware1 --ram 4096 --vcpus 4 --cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-1511.iso --disk path=/home/test1.raw --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole #安装Windows qemu-img create -f qcow2 /var/lib/libvirt/images/Windows-2008_r2-x86_64.qcow2 200G virt-install --virt-type kvm --name Win_2008_r2-x86_64 --ram 3072 --vcpus=2 --os-type=windows --cdrom=/usr/local/src/windows_server_2008_r2.iso --disk path=/var/lib/libvirt/images/Windows-2008_r2-x86_64.qcow2,format=qcow2,bus=virtio --disk path=/usr/local/src/virtio-win-0.1.141_amd64.vfd,device=floppy --network bridge=br0,model=virtio --graphics vnc,listen=0.0.0.0 --noautoconsole
-
virt-install --help命令可自行查看
-
通过vnc客户端连接到安装界面,kvm虚拟机的默认端口从5900开始
-
查看正在运行的虚拟机
#查看当前所有虚拟机 virsh list --all #帮助命令 virsh list --help #停止虚拟机 virsh shutdown test1 #启动虚拟机 virsh start test1
- 配置文件路径
cd /etc/libvirt/qemu/ ls #注意:保存了虚拟机的配置xml配置文件,不能使用vim直接更改虚拟机配置文件,需要使用virsh edit test1
- 配置说明
cat test1.xml#虚拟化类型kvm test1 #虚拟机名称447c99b2-932e-49ae-b37d-4ed0ff3618cd #唯一标示UUID2097152 #内存2097152 #当前内存1 1个cpu并且是静态分配hvm #hvm标示是硬件虚拟化#从硬盘启动 Haswell-noTSX destroy restart destroy /usr/libexec/qemu-kvm #磁盘信息 #虚拟磁盘,半虚拟化 #网络信息 #鼠标和键盘 /dev/urandom
- dumpxml命令,导出虚拟机的xml文件
virsh dumpxml test1 > test1.bak.xm
- undefine:彻底摧毁一个虚拟机
virsh undefine test1
- define恢复
#从备份的xml文件中恢复虚拟机 virsh define /home/test1.xml.bak virsh list --all
- 修改虚拟机的xml描述文件
virsh edit test1
- 重启虚拟机验证CPU数量
- 动态修改CPU数量
virsh setvcpus test1 4 –live
- 查看新添加的CPU是否在线,即是否处于工作状态
cat /sys/devices/system/cpu/cpu3/online 显示1
- 减小内存,如果创建虚拟机的时候内存是固定的,那么只能减少内存而不能动态添加内存
#查看当前内存 virsh qemu-monitor-command test1 --hmp --cmd info balloon #尝试增加内存 virsh qemu-monitor-command test1 --hmp --cmd balloon 4069 #增加之后还是之前的大小 virsh qemu-monitor-command test1 --hmp --cmd info balloon #尝试减少内存 virsh qemu-monitor-command test1 --hmp --cmd balloon 512 #减少之后的大小 virsh qemu-monitor-command test1 --hmp --cmd info balloon
- 创建br0网桥,制作桥接模式
默认是使用的nat网络,会成为虚拟机的瓶颈,因此需要创建一个桥接网卡并把虚拟机桥接至网卡,然后将虚拟机桥接一下即可使用物理网络
#创建网卡 brctl addbr br0 #会断网,这是将br0和eth0进行关联 brctl addif br0 enp2s0 #删除网卡的IP地址信息 ip addr del dev enp2s0 192.168.1.79/24 #为br0配置IP并启动网卡,此时可以远程连接 ifconfig br0 192.168.1.79/24 up #添加网关 route add default gw 192.168.1.1 ping www.baidu.com
- 通过配置文件文件创建桥接网卡
cd /etc/sysconfig/network-scripts/ cp ifcfg-enp2s0 ifcfg-br0 #去掉enp2s0网卡配置文件中的UUID/MAC/IP等信息 cat ifcfg-enp2s0 BOOTPROTO=static DEVICE=enp2s0 ONBOOT=yes BRIDGE=br0 NM_CONTROLLED=no #br0的配置信息如下 cat ifcfg-br0 TYPE=Bridge #类型为桥接 BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no NAME=br0 #网卡名称 DEVICE=br0 #设备名称 ONBOOT=yes IPADDR=192.168.1.79 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=114.114.114.114
- 最后重启服务器,验证重启服务器之后br0网卡生效
- 修改虚拟机配置文件
virsh edit test1#类型改为bridge #注意是bridge='br0' #类型为通过virtio实现的
- 重启虚拟机
virsh shutdown test1 virsh start test1
- 磁盘格式转换,使用qemu-img工具实现,如果机器上没有,可以通过rpm或yum进行安装,包名为qemu-img
#raw转换为qcow2 qemu-img convert -f raw centos.img -O qcow2 centos.qcow2 #qcow2转换为raw qemu-img convert -O qcow2 my.raw myqow.qcow #VMDK转换为qcow2 qemu-img convert -f vmdk -O qcow2 xxx.vmdk xxx.img



