KVM CentOS7 安装
关闭防火墙, 修改selinux
1 2
| systemctl stop firewalld setenforce 0
|
检查 CPU 虚拟化
1
| cat /proc/cpuinfo | egrep 'vmx|svm'
|
KVM 模块是否加载
安装 KVM 并启动
1 2 3
| yum install -y qemu-kvm libvirt virt-install net-tools systemctl start libvirtd systemctl enable libvirtd
|
创建虚拟硬盘
1 2
| qemu-img create -f qcow2 /opt/test.qcow2 50G
|
配置网络
先暂时关闭 NetworkManager
1
| systemctl stop NetworkManager
|
配置 br0
/etc/sysconfig/network-scripts/ifcfg-br01 2 3 4 5 6 7 8 9
| TYPE=Bridge BOOTPROTO=static NAME=br0 DEVICE=br0 ONBOOT=yes IPADDR= NETMASK= GATEWAY= DNS1=119.29.29.29
|
配置物理网卡
/etc/sysconfig/network-scripts/ifcfg-enp2s0f01 2 3 4 5 6 7
| DEVICE="enp2s0f0" NM_CONTROLLED=no ONBOOT="yes" TYPE=Ethernet BOOTPROTO=none BRIDGE="br0" NAME="enp2s0f0"
|
重启网卡:service network restart
创建虚拟机
1
| virt-install --virt-type kvm --name [虚拟机名] --ram [内存大小 MB] --cdrom=[安装镜像位置] --disk path=[虚拟硬盘位置] --network bridge=br0 --graphics vnc,listen=0.0.0.0,port=[开放端口] --noautoconsole
|
其他命令
1 2 3
| virsh list virsh start ...
|
添加硬盘
1 2 3 4 5 6 7
| virsh attach-disk [虚拟机名] --source [虚拟磁盘位置] --target [磁盘标识 vdb] --subdriver qcow2 --persistent
virsh domblklist [虚拟机名]
virsh detach-disk [虚拟机名] [磁盘标识]
|
创建虚拟网络
创建配置文件
1 2
| vi /etc/libvirt/qemu/networks/hostonly1.xml
|
点击查看示例配置文件
nat: 所有连接到该虚拟网络的虚拟的网络都会经过物理机器的网卡,并转换成物理网卡的地址。1 2 3 4 5 6 7 8 9 10 11
| <network> <name>default</name> <bridge name="virbr0" /> <forward mode="nat"/> <ip address="192.168.122.1" netmask="255.255.255.0"> <dhcp> <range start="192.168.122.2" end="192.168.122.254" /> </dhcp> </ip> <ip family="ipv6" address="2001:db8:ca2:2::1" prefix="64" /> </network>
|
route: 类似于 NAT,但是不使用NAT,而是使用routing table。1 2 3 4 5 6 7 8 9 10 11 12
| <network> <name>hostonly1</name> <uuid>4f6b1b65-3991-4742-ad8e-6c08df197955</uuid> # 这个自己生成 <forward mode='route'/> <bridge name='hostonly1' stp='on' delay='0'/> <mac address='52:54:00:09:57:fc'/> <ip address='192.168.100.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.100.2' end='192.168.100.254'/> </dhcp> </ip> </network>
|
bridge: 使用不受libvirt管理的bridge,比如主机上已有的bridge;open vswitch bridge;使用 macvtap's "bridge" 模式1 2 3 4 5
| <network> <name>host-bridge</name> <forward mode="bridge"/> <bridge name="br0"/> </network>
|
passthrough: 使用 a macvtap "direct" connection in "passthrough" mode 指定主机上的特定网卡用于虚拟网络1 2 3 4 5 6 7
| <forward mode='passthrough'> <interface dev='eth10'/> <interface dev='eth11'/> <interface dev='eth12'/> <interface dev='eth13'/> <interface dev='eth14'/> </forward>
|
hostdev: 直接分配主机上的网络设备。1 2 3 4 5 6
| <forward mode='hostdev' managed='yes'> <driver name='vfio'/> <address type='pci' domain='0' bus='4' slot='0' function='1'/> <address type='pci' domain='0' bus='4' slot='0' function='2'/> <address type='pci' domain='0' bus='4' slot='0' function='3'/> </forward>
|
启动网络并验证
1 2 3 4
| virsh net-define /etc/libvirt/qemu/networks/hostonly1.xml virsh net-start hostonly1 ip addr virsh net-autostart hostonly1
|
virsh 虚拟网络管理命令
1 2 3 4 5 6 7
| virsh net-list [–all] 列出虚拟网络 virsh net-start 启动虚拟交换机 virsh net-destroy 强制停止虚拟交换机 virsh net-define 根据xml文件创建虚拟网络,要用绝对路径定义 virsh net-undefine 删除一个虚拟网络设备 virsh net-edit 修改虚拟机交换机配置 virsh net-autostart 设置虚拟交换机开机自启动
|
增加虚拟网卡
临时增加
1
| virsh attach-interface controller --type bridge --source virbr0
|
永久增加
1 2 3
| virsh attach-interface controller --type bridge --source virbr0 --config virsh define /etc/libvirt/qemu/controller.xml # 然后启动虚拟机 在虚拟机里查看 永久增加需重启虚拟机后使用
|