ubuntu18_kvm快速部署
环境
- 系统:Ubuntu 18.04 LTS(bionic)
- 网卡:
ens33(按实际网卡名修改) - 桥接:
br0 - 主机 IP:
192.168.3.239/24 - 网关:
192.168.3.2 - DNS:
223.5.5.5、223.6.6.6
以下命令默认以 root 执行。IP / 网卡名请按实际环境替换。
1. 配置 SSH(可选,允许 root 登录)
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
systemctl restart sshd
生产环境建议使用密钥登录,并限制
PermitRootLogin。
2. 配置网络(桥接 br0)
备份并写入 netplan 配置:
cp /etc/netplan/01-netcfg.yaml{,.bak$(date +%Y%m%d)}
tee /etc/netplan/01-netcfg.yaml <<'EOF'
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
bridges:
br0:
interfaces: [ens33]
dhcp4: no
addresses: [192.168.3.239/24]
gateway4: 192.168.3.2
nameservers:
addresses: [223.5.5.5, 223.6.6.6]
EOF
netplan apply
验证:
ip a show br0
ip route
ping -c 3 192.168.3.2
3. 配置阿里云 Ubuntu 18 源
cat > /etc/apt/sources.list <<'EOF'
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
EOF
apt update
bionic-proposed为测试源,稳定性要求高时可去掉对应两行。
4. 安装 QEMU/KVM 及相关工具
先确认 CPU 支持虚拟化:
egrep -c '(vmx|svm)' /proc/cpuinfo
# 返回值 > 0 表示支持
安装软件包:
apt-get install -y \
qemu-kvm libvirt-bin virtinst bridge-utils virt-manager cpu-checker \
lrzsz ipmitool iperf iftop iotop curl vlan jq libguestfs-tools \
libosinfo-bin
检查并启动服务:
kvm-ok
systemctl enable --now libvirtd
virsh list --all
5. 创建 KVM 工作目录
mkdir -p /data/kvm /data/iso
cd /data/kvm
将 ISO 放到 /data/iso/(或按实际路径调整下文命令)。
6. 安装虚拟机(两种方式)
方式一:virt-install 从 ISO 安装
6.1 CentOS 7 示例(VNC)
virt-install \
--name=igo_cent7 \
--ram=1024 \
--cpu=host \
--vcpus=2 \
--os-type=Linux \
--os-variant=centos7.0 \
--disk /data/kvm/cent79.qcow2,size=10 \
--cdrom /data/iso/CentOS-7.9-x86_64-Minimal-2009.iso \
--network=bridge=br0,model=virtio \
--graphics vnc,port=3344,listen=0.0.0.0 \
--boot uefi
纯文本串口安装(无图形)可改用:
virt-install \
--name=igo_cent7 \
--ram=1024 \
--cpu=host \
--vcpus=2 \
--os-type=Linux \
--os-variant=centos7.0 \
--disk /data/kvm/cent79.qcow2,size=10 \
--cdrom /data/iso/CentOS-7.9-x86_64-Minimal-2009.iso \
--network=bridge=br0,model=virtio \
--graphics=none \
--console=pty,target_type=serial \
--extra-args="console=tty0 console=ttyS0"
6.2 Windows 10 示例(VNC)
virt-install \
--name=win10-3090 \
--ram=65536 \
--cpu=host \
--vcpus=24 \
--os-type=Windows \
--os-variant=win10 \
--disk /data/kvm/win10-3090.qcow2,size=100 \
--cdrom /home/iso/cn_windows_10_business_editions_version_20h2_updated_nov_2020_x64_dvd_87114b18.iso \
--network=bridge=br0,model=virtio \
--graphics vnc,port=33344,listen=0.0.0.0
Windows 建议额外挂载 virtio 驱动 ISO(
virtio-win.iso),否则网卡/磁盘驱动可能缺失。
VNC 连接:宿主机IP:端口(如192.168.3.239:3344)。
可用系统变体查询:
osinfo-query os | grep -i centos
osinfo-query os | grep -i win10
方式二:基于模板 qcow2 + XML 克隆
- 拷贝模板磁盘与 XML(示例名
igotest01):
# 拷贝模板磁盘到工作目录(按实际模板路径调整)
cp /path/to/template.qcow2 /data/kvm/igotest01.qcow2
# 导出原虚拟机 XML
virsh dumpxml igotest01 > /etc/libvirt/qemu/igotest01.xml
-
编辑 XML:至少修改
name、uuid、磁盘路径、MAC 地址、VNC 端口等,避免冲突。 -
定义并启动:
virsh define /etc/libvirt/qemu/igotest01.xml
virsh start igotest01
virsh list --all
也可用
virt-clone简化克隆流程。
7. 常用 Tips
7.1 宿主机进入虚拟机 Console
# 按域 ID
virsh console 5
# 或按名称
virsh console igo_cent7
图形界面:
virt-viewer -c qemu:///system 5
# 或
virt-viewer vm_name
7.2 虚拟机内开启串口登录(便于调试网络)
在 客户机 内执行:
systemctl start serial-getty@ttyS0
systemctl enable serial-getty@ttyS0
然后宿主机用 virsh console <域名> 连接。
7.3 为已有虚拟机添加 VNC 设备
编辑 XML(virsh edit <域名>),在 <devices> 下添加:
<graphics type='vnc' port='33344' autoport='no' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
保存后重启虚拟机使配置生效:
virsh shutdown <域名>
virsh start <域名>
7.4 用 virt-customize 改镜像 root 密码
virt-customize -a rhel-server-7.6.qcow2 --root-password password:StrongRootPassword
附录:常用运维命令
virsh list --all # 查看虚拟机
virsh start <name> # 启动
virsh shutdown <name> # 正常关机
virsh destroy <name> # 强制断电
virsh undefine <name> # 删除定义(默认不删磁盘)
virsh dumpxml <name> # 导出 XML
virsh edit <name> # 编辑 XML
virsh vncdisplay <name> # 查看 VNC 显示/端口