宿主机平台是Centos和Ubuntu搭建虚拟机会有一些区别,所以对二者都进行介绍一下
宿主机:Centos7
查看宿主机IP,如果没有ifconfig命令则需要安装网络插件包:
yum install net-tools
安装KVM
yum -y install kvm
yum -y install qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools bridge-utils virt-install
检测是否安装成功
lsmod | grep kvm
如果安装成功则显示如下,关键是前面的kvm_intel和kvm
kvm_intel 162153 0
kvm 525259 1 kvm_intel
开启kvm服务
systemctl start libvirtd.service
创建虚拟网桥连接
cd /etc/sysconfig/network-scripts/
vi ifcfg-br0
#在文件中输入如下内容
BOOTPROTO=static
ONBOOT=YES
DEVICE=br0
NAME=br0
TYPE=Bridge
IPADDR=192.168.1.95
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
DNS1=114.114.114.114
将刚创建的网桥连接添加到当前网卡配置中
示例在eth0/em1中添加BRIDGE=br0(注意:BRIDGE要大写),保留name,device,onboot属性即可,其他的可以注释掉
或者使用如下配置网桥
1. 查看当前宿主机网络配置所使用的网卡,选择需要桥接的网卡。转去宿主机的/etc/sysconfig/network-scripts目录下。
2. 假如当前配置的物理网卡为eth0,我们将eth0的ip地址桥接出去。cp -a ifcfg-eth0 ifcfg-br0
3. 将ifcfg-eth0文件中配置的ip地址、掩码、网关、DNS等信息统统删掉,并增加一行BRIDGE=br0
4. 将ifcfg-br0文件中的UUID IPV6的信息统统删掉,将TYPE修改为Bridge,NAME和DEVICE修改为br0. 修改完毕之后的内容示例如下。
5. 将网络服务重新启动或者将宿主机重新启动使得配置生效。使用ifconfig命令查看ip地址信息。
修改完如下图所示
重启网络
systemctl restart network
查看虚拟网卡
brctl show
创建虚拟机
sudo virt-install --name test --ram 4096 --disk path=/var/lib/libvirt/images/test.img,size=200 --vcpus 2 --os-type linux --network bridge=br0 --graphics none --virt-type kvm --location /tmp/CentOS-7-x86_64-DVD-1804.iso --os-variant none --extra-args='console=ttyS0'
使用命令之后会出现下图界面,然后需要在命令行中配置虚拟机信息
宿主机:Ubuntu16.04
安装kvm
sudo apt-get install qemu-kvm qemu-system libvirt-bin bridge-utils virt-manager
创建虚拟网卡:
vi /etc/network/interfaces
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address 10.0.101.10
netmask 255.255.255.0
gateway 10.0.101.254
dns-nameservers 114.114.114.114
bridge_ports eno1
bridge_stp on
bridge_fd 0
bridge_maxwait 0
Ubuntu创建虚拟网卡后需要重启系统才会生效
使用图形化界面virt-manager安装方式,之后在界面上配置虚拟机信息
sudo virt-manager
命令行创建:
sudo virt-install --virt-type=kvm --name=vm1 --vcpus=2 --memory=65536 --location=/tmp/CentOS-7-x86_64-DVD-1804.iso --disk path=/var/lib/libvirt/images/shebao.qcow2,size=200,format=qcow2 --network bridge=br0 --graphics none --extra-args='console=ttyS0' --force
kvm常用命令
virsh list #查看在运行的虚拟机
virsh list --all #查看所有虚拟机(关闭的也在内)
virsh start test #启动该虚拟机,test是创建时设置的虚拟机名字
virsh reboot test #重启虚拟机
virsh destroy test #强制关闭该虚拟机,但并非真的销毁该虚拟机,只是关闭而已
virsh undefine test #移除虚拟机,被该指令删除后不能启动
virsh console + 域名(虚拟机的名称) #连接虚拟机
virsh autostart + 域名 #虚拟机随宿主机启动
virsh auotstart --disable +域名 #取消自启动
彻底删除虚拟机
virsh destroy test
virsh undefine test --remove-all-storage
修改虚拟机CPU,内存,磁盘,修改完后需要重启虚拟机生效
virsh edit test.xml
ubuntu虚拟机(在宿主机上安装的虚拟机系统为Ubuntu)开启virsh console支持,可以在宿主机上使用virsh console test连接到虚拟机test上
sudo systemctl enable serial-getty@ttyS0.service
sudo systemctl start serial-getty@ttyS0.service
kvm虚拟机静态迁移
1. 确定虚拟机处于关闭状态
2. 查看虚拟机的磁盘配置文件
virsh domblklist test
3. 导入虚拟机的配置文件
virsh dumpxml test > /tmp/test.xml
4. 拷贝配置文件到目标主机上
5. 拷贝虚拟机的磁盘文件到目标主机上
6. 再目标主机上定义注册虚拟主机
virsh define /etc/libvirt/qemu/test.xml
7. 开启虚拟机
virsh start test