igozhang

——

    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 克隆

    1. 拷贝模板磁盘与 XML(示例名 igotest01):
    # 拷贝模板磁盘到工作目录(按实际模板路径调整)
    cp /path/to/template.qcow2 /data/kvm/igotest01.qcow2
    
    # 导出原虚拟机 XML
    virsh dumpxml igotest01 > /etc/libvirt/qemu/igotest01.xml
    
    1. 编辑 XML:至少修改 name、uuid、磁盘路径、MAC 地址、VNC 端口等,避免冲突。

    2. 定义并启动:

    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 显示/端口
    

    MP3