自建 KVM 记录
目录
安装和启动
安装 KVM 相关工具:
yum -y install qemu-kvm libvirt virt-install bridge-utils qemu
systemctl start libvirtd
创建存储目录:
mkdir /data/kvm/imgs
mkdir /data/kvm/vms
宿主机网络配置
配置网桥 br0,编辑 /etc/sysconfig/network-scripts/ifcfg-br0:
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO=static
IPADDR=192.168.1.133
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DEFROUTE=yes
配置 bonding(可选),编辑 /etc/sysconfig/network-scripts/ifcfg-bond0:
DEVICE=bond0
TYPE=Ethernet
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=none
BRIDGE=br0
ONBOOT=yes
BONDING_OPTS="mode=5 miimon=100"
重启网络服务:
systemctl restart network
创建虚拟机
使用 virt-install 创建虚拟机(注意:distpath 定义选择 qcow2 格式,img 格式占用空间更大):
virt-install --name t3 \
--ram 2048 \
--disk path=/data/kvm/vms/t3.qcow2,size=22 \
--vcpus 1 \
--os-type linux \
--os-variant rhel6 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location '/data/kvm/imgs/CentOS-7-x86_64-DVD-1708.iso' \
--extra-args 'console=ttyS0,115200n8 serial'
然后进入虚拟机操作系统安装界面进行安装。
虚拟机内网络配置
安装完成后,在虚拟机内配置网络。编辑 /etc/sysconfig/network-scripts/ifcfg-eth0:
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=eth0
UUID=a38ceceb-5f4e-4d08-a108-d83c176ea85b
DEVICE=eth0
ONBOOT=yes
IPADDR="192.168.0.206"
PREFIX="24"
GATEWAY="192.168.0.1"
DNS1="114.114.114.114"
启动网卡后可以 ping 宿主机的 br0,反向也能通,可以进行 SSH 连接。
安装虚拟机时的常见问题
安装后进入问题
安装完成后如果直接进入虚拟机(不自动 exit),按 exit 退出会一直循环在 login 界面。
挂载 ISO
在 virt-install 中使用 --cdrom 参数配置。如安装后忘记配置,可编辑 cdrom.xml:
<disk type='file'>
<target dev='vde' bus='virtio'/>
<source file='/data/kvm/imgs/CentOS-7-x86_64-DVD-1708.iso'/>
</disk>
执行挂载:
virsh attach-device --domain t3 --file cdrom.xml --live --config
在虚拟机内 mount 到目录即可使用。
虚拟机定义和启动的另一种方法
编辑虚拟机 XML 配置文件 t4.xml,然后:
virsh define t4.xml # 定义虚拟机
virsh list --all # 查看虚拟机列表(应看到 t4)
virsh start t4 # 启动虚拟机
注意:该方法要求内核已加载 KVM 模块。在某些特殊环境(如 tlinux)上可能无法加载 KVM 模块。
注意事项
- 使用
qcow2格式的磁盘比img格式更高效 - 虚拟机创建后的初始网络配置很重要,建议在安装时配置好网络
- 在虚拟机内部进行的配置更改后需要重启相关服务或虚拟机才能生效