banner
NEWS LETTER

KVM虚拟化

Scroll down

本文作者:丁辉

KVM虚拟化

文档真难找!!可恶

官方文档

官网导航页

内核要求

Ubuntu部署文档

VNC链接工具RealVNC下载

开始部署KVM

环境准备

  1. 关闭 SELINUX

    1
    2
    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  2. 关闭防火墙

    1
    2
    systemctl stop firewalld
    systemctl disable firewalld
  3. 查看CPU是否支持硬件虚拟化

    • vmx: Intel VT-x
    • svm: AMD AMD-v
    1
    egrep -i 'vmx|svm|lm' /proc/cpuinfo
  4. 检查 KVM 模块当前是否加载

    1
    lsmod | grep kvm
  5. 加载模块

    1
    2
    echo "kvm" >> /etc/modules-load.d/kvm.conf
    modprobe kvm
  6. 加载适当的模块

    1
    2
    modprobe kvm_intel  # Intel processors
    modprobe kvm_amd # AMD processors

开始安装

  • Centos安装

    1. 安装KVM

      1
      yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install virt-manager -y
    2. 启动

      1
      systemctl enable libvirtd && systemctl start libvirtd
  • Ubuntu安装

    1. 安装KVM

      1
      apt-get install gcc libsdl1.2-dev zlib1g-dev libasound2-dev linux-kernel-headers pkg-config libgnutls-dev libpci-dev
    2. 启动

      1
      systemctl enable libvirtd && systemctl start libvirtd

网卡配置

  1. 编辑默认文件

    1
    vi /etc/libvirt/qemu/networks/default.xml

    内容如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <network>
    <name>default</name>
    <uuid>1113ac18-e430-4940-a412-6e838c42efbc</uuid> #不是必要的可以注释
    <forward mode='nat'/>
    <bridge name='virbr0' stp='on' delay='0'/>
    <mac address='52:54:00:c1:cd:3e'/> #不是必要的可以注释
    <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>
  2. 重载配置

    1
    virsh net-define /etc/libvirt/qemu/networks/default.xml
  3. 重启网络

    1
    virsh net-destroy default && virsh net-start default

启动 Windows 虚拟机

  1. 创建一个 qcow2 格式的虚拟磁盘文件

    1
    qemu-img create -f qcow2 /var/lib/libvirt/images/windows.qcow2 50G
  2. 拷贝 ISO 镜像文件到 images 下

    1
    mv *.iso /var/lib/libvirt/images/windows.iso
  3. 启动 KVM 虚拟机

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    virt-install \
    --name=windows \
    --ram=4096 \
    --vcpus=2 \
    --os-type=windows \
    --os-variant=win10 \
    --disk path=/var/lib/libvirt/images/windows.qcow2,size=50 \
    --cdrom=/var/lib/libvirt/images/windows.iso \
    --network bridge=virbr0 \
    --graphics vnc,listen=0.0.0.0,port=5901 \
    --noautoconsole

启动 Linux 虚拟机

查看KVM支持的操作系统变种和类型

1
osinfo-query os | grep CentOS
  1. 创建一个 qcow2 格式的虚拟磁盘文件

    1
    qemu-img create -f qcow2 /var/lib/libvirt/images/centos.qcow2 50G
  2. 拷贝 ISO 镜像文件到 images 下

    1
    mv *.iso /var/lib/libvirt/images/centos.iso
  3. 启动 KVM 虚拟机

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    virt-install \
    --name=centos \
    --ram=4096 \
    --vcpus=2 \
    --os-type=centos7.0 \
    --os-variant=centos7.0 \
    --disk path=/var/lib/libvirt/images/centos.qcow2,size=50 \
    --cdrom=/var/lib/libvirt/images/centos.iso \
    --network bridge=virbr0 \
    --graphics vnc,listen=0.0.0.0,port=5902 \
    --noautoconsole

常用命令及参数解释

命令

  • 制作虚拟机快照

    1
    virsh snapshot-create <虚拟机名称>

    自定义快照名称

    1
    virsh snapshot-create-as <虚拟机名称> <快照名称>

    查看当前虚拟机所有快照

    1
    virsh snapshot-list <虚拟机名称>

    查看当前虚拟机处于哪个快照

    1
    virsh snapshot-current <虚拟机名称> | head -2

    恢复快照

    1
    virsh snapshot-revert <虚拟机名称> <快照名称>

    删除快照

    1
    virsh snapshot-delete <虚拟机名称> <快照名称>
  • 显示有关虚拟磁盘镜像文件的信息

    1
    qemu-img info centos.qcow2
  • 启动虚拟机

    1
    virsh start <虚拟机名称>

    这个命令用于启动指定名称的虚拟机。

  • 停止虚拟机

    1
    virsh shutdown <虚拟机名称>

    通过这个命令,你可以优雅地关闭虚拟机。也可以使用 destroy 选项来强制关闭虚拟机。

  • 重启虚拟机

    1
    virsh reboot <虚拟机名称>

    这个命令用于重启虚拟机。

  • 查看虚拟机列表

    1
    virsh list --all

    该命令列出当前主机上正在运行的虚拟机。

  • 创建虚拟机

    1
    virt-install [options]

    使用 virt-install 命令创建新的虚拟机,可以根据需要配置虚拟机的各种参数,如名称、内存、CPU、磁盘、网络等。

  • 删除虚拟机

    1
    virsh undefine <虚拟机名称>

    这个命令用于删除虚拟机的定义,但保留虚拟机磁盘文件。

  • 克隆虚拟机

    1
    virt-clone -o <源虚拟机名称> -n <新虚拟机名称> -f <新虚拟机磁盘路径>

    使用这个命令可以克隆一个现有虚拟机,创建一个具有相同配置的新虚拟机。

  • 查看虚拟机详细信息

    1
    virsh dominfo <虚拟机名称>

    这个命令提供了关于指定虚拟机的详细信息,如内存、CPU使用情况等。

  • 连接到虚拟机控制台

    1
    virsh console <虚拟机名称>

    通过这个命令可以连接到虚拟机的控制台,类似于物理终端。

  • 导出虚拟机配置文件

    1
    virsh dumpxml <虚拟机名称> > <文件名>.xml

    这个命令可以将虚拟机的配置信息导出为XML格式,以便备份或迁移虚拟机。

  • 虚拟机管理工具

    1
    virt-manager

    这是一个虚拟机管理工具,通常拥有图形用户界面,用于创建、配置和管理虚拟机。

  • VNC 显示端口信息

    1
    virsh vncdisplay <虚拟机名称>

    此命令用于获取虚拟机 “windows” 的 VNC 显示端口信息。VNC 是一种用于远程访问虚拟机图形界面的协议,该命令可用于查看虚拟机的 VNC 显示端口号。

  • 定义虚拟机配置

    1
    virsh define /etc/libvirt/qemu/<虚拟机名称>.xml

    使用此命令,您可以定义(或注册)一个名为 “windows” 的虚拟机,其配置文件位于 “/etc/libvirt/qemu/windows.xml”。这将使虚拟机配置成为 libvirt 系统中的一部分,以便后续进行管理和操作。

  • 编辑虚拟机配置

    1
    virsh edit <虚拟机名称>

    通过执行此命令,您可以编辑虚拟机 “windows” 的配置。这将打开一个文本编辑器,允许您修改虚拟机的配置参数,例如虚拟硬件设备、CPU、内存等。编辑后,您需要保存并退出编辑器,以便应用更改。

  • 挂起、恢复虚拟机

    挂起

    1
    virsh suspend <虚拟机名称>

    恢复

    1
    virsh resume <虚拟机名称>
  • 自动开机

    开启开机自启动

    1
    virsh autostart <虚拟机名称>

    关闭开机自启动

    1
    virsh autostart --disable <虚拟机名称>
  • 虚拟机镜像格式转换

    –f :源镜像格式

    –O :目标镜像格式

    • 将 img 转换 raw 格式

      1
      qemu-img convert -f qcow2 -O raw /var/lib/libvirt/images/windows.img /var/lib/libvirt/images/windows.raw
    • 将 vmdk 转换为 qcow2

      1
      qemu-img convert -f vmdk -O qcow2 /var/lib/libvirt/images/windows.vmdk /var/lib/libvirt/images/windows.qcow2
    • 将 qcow2 转换为 vmdk

      1
      qemu-img convert -f qcow2 -O vmdk /var/lib/libvirt/images/windows.qcow2 /var/lib/libvirt/images/windows.vmdk

参数

  1. virt-install:这是用于创建虚拟机的命令。
  2. --name=windows:指定虚拟机的名称为 “windows”。
  3. --ram=4096:分配给虚拟机的内存大小,这里是4096 MB(4 GB)。
  4. --vcpus=2:分配给虚拟机的虚拟CPU核心数量,这里是2个。
  5. --boot=cdrom:指定虚拟机从光盘启动。
  6. --os-type=windows:指定虚拟机的操作系统类型为 Windows。
  7. --os-variant=win10:指定虚拟机的操作系统变种为 Windows 10。
  8. --disk path=/var/lib/libvirt/images/windows.qcow2,size=50:定义虚拟机的磁盘配置。它使用QEMU Copy-On-Write(qcow2)格式,存储路径为/var/lib/libvirt/images/windows.qcow2,并分配了50 GB的磁盘空间。
  9. --cdrom=/var/lib/libvirt/images/windows.iso:指定虚拟机的光盘映像文件路径,用于安装操作系统或引导。
  10. --network bridge=virbr0:配置虚拟机的网络接口,将其连接到一个虚拟网络桥接接口,名为 virbr0
  11. --graphics vnc,listen=0.0.0.0,port=5901:配置虚拟机的图形输出,使用VNC协议,并监听所有可用网络接口(0.0.0.0),端口号为5901。
  12. --noautoconsole:禁止自动连接到虚拟机的控制台,这意味着不会在命令行中自动打开虚拟机的控制台,你需要手动连接到VNC端口5901来查看虚拟机的图形界面。

镜像格式

  1. Raw(.raw)
    • Raw格式是一种未经压缩或处理的纯二进制磁盘映像格式。
    • 这是一种较为简单的格式,通常用于兼容多个虚拟化平台。
    • Raw格式通常没有额外的特性,如快照或压缩。
  2. Cow(Copy-On-Write)
    • Cow格式是一种写时复制格式,也称为差异磁盘映像。
    • Cow格式的磁盘文件只保存虚拟机中已经发生更改的数据,而不是整个虚拟硬盘。
    • 这可以减小虚拟硬盘的大小,但可能会导致性能损失。
  3. Qcow(.qcow)
    • Qcow是QEMU的一种虚拟磁盘格式,类似于Cow格式。
    • 它支持写时复制技术,允许快速创建虚拟机快照。
    • Qcow格式通常比Raw格式更节省磁盘空间。
  4. Qcow2(.qcow2)
    • Qcow2是QEMU的改进版本,是一种流行的虚拟磁盘格式。
    • 它支持高级特性,如快照、压缩和加密。
    • Qcow2格式通常是一种高度灵活且性能良好的格式,适用于多种虚拟化平台。
  5. VMDK
    • VMDK(Virtual Machine Disk)是VMware虚拟化软件使用的虚拟磁盘格式。
    • VMDK格式有多个子格式,包括单一精简、多精简和懒惰精简等,以满足不同的需求。
    • VMware Workstation、vSphere和其他VMware产品通常使用VMDK格式。

基础命令之控制网络

  1. virsh net-destroy default:
    • 这个命令用于停止名为 “default” 的虚拟网络。虚拟网络是用来连接虚拟机的网络,类似于物理网络。通过执行这个命令,您停止了名为 “default” 的虚拟网络,中断了与该网络关联的虚拟机的网络连接。
  2. virsh net-start default:
    • 这个命令用于启动名为 “default” 的虚拟网络。一旦虚拟网络被停止,您可以使用这个命令来重新启动它,使其再次可用于虚拟机。
  3. virsh net-autostart default:
    • 这个命令用于配置虚拟网络 “default” 以在系统启动时自动启动。这意味着,当系统启动时,虚拟网络 “default” 将会自动启动,而无需手动执行 virsh net-start 命令。这对于确保虚拟网络的可用性很有用。
  4. virsh net-undefine default:
    • 这个命令用于从 virsh 的配置中移除名为 “default” 的虚拟网络定义。它不仅会停止虚拟网络,还会从系统中删除虚拟网络的配置。这意味着虚拟网络 “default” 不再受 virsh 管理,且无法再通过 virsh 直接管理它。
  5. virsh net-autostart –disable virbr0:
    • 这个命令用于禁用名为 “virbr0” 的虚拟网络在系统启动时自动启动。通过执行这个命令,您阻止了 “virbr0” 虚拟网络在系统启动时自动启动,需要手动启动它(使用 virsh net-start virbr0)以使其可用。

I'm so cute. Please give me money.

其他文章
cover
磁盘清理
  • 70/01/01
  • 00:00
  • Linux-存储
cover
Keepalived部署
  • 70/01/01
  • 00:00
  • Linux-资源安装
目录导航 置顶
  1. 1. KVM虚拟化
    1. 1.1. 开始部署KVM
      1. 1.1.1. 环境准备
      2. 1.1.2. 开始安装
      3. 1.1.3. 网卡配置
    2. 1.2. 启动 Windows 虚拟机
    3. 1.3. 启动 Linux 虚拟机
    4. 1.4. 常用命令及参数解释
      1. 1.4.1. 命令
      2. 1.4.2. 参数
      3. 1.4.3. 镜像格式
      4. 1.4.4. 基础命令之控制网络
请输入关键词进行搜索