美文网首页
CentOS创建KVM虚拟机

CentOS创建KVM虚拟机

作者: tinychen | 来源:发表于2021-03-22 09:50 被阅读0次
    image

    使用qemu-kvm在CentOS8上通过GUI创建虚拟机。

    1、安装系统组件

    首先我们需要安装epel源和相应的虚拟机工具

    yum install epel-release -y
    yum install qemu-kvm qemu-img libvirt virt-manager virt-top.x86_64 virtio-win.noarch virt-viewer.x86_64 virt-install.noarch -y
    
    virt-install 
    libvirt #安装libvirt会将libvirt-client作为依赖进行安装,libvirt-client即libvirt的客户端,最重要的功能之一就是就在宿主机关机时可以通知虚拟机也关机,使虚拟机系统正常关机,而不是被强制关机,造成数据丢失
    ipxe-roms-qemu #虚拟机iPXE的启动固件,支持虚拟机从网络启动
    qemu-kvm #KVM在用户空间运行的程序
    virt-manager  #基于 Libvirt 的图像化虚拟机管理软件
    libvirt   #用于管理虚拟机,它提供了一套虚拟机操作API
    virt-viewer  #显示虚拟机的控制台console
    virt-top  #类似于top命令,查看虚拟机的资源使用情况
    virt-what  #在虚拟机内部执行,查看虚拟机运行的虚拟化平台
    qemu-img  #用于操作虚拟机硬盘镜像的创建、查看和格式转化
    

    一些主要组件的功能介绍如下:

    • virt-install

      Description : Package includes several command line utilities, including virt-install
      : (build and install new VMs) and virt-clone (clone an existing virtual
      : machine).

    • virt-who

      Description : Agent that collects information about virtual guests present in the system and
      : report them to the subscription manager.

    • virt-top

      Description : virt-top is a 'top(1)'-like utility for showing stats of virtualized
      : domains. Many keys and command line options are the same as for
      : ordinary 'top'.
      :
      : It uses libvirt so it is capable of showing stats across a variety of
      : different virtualization systems.

    • virt-viewer

      Description : Virtual Machine Viewer provides a graphical console client for connecting
      : to virtual machines. It uses the GTK-VNC or SPICE-GTK widgets to provide
      : the display, and libvirt for looking up VNC/SPICE server details.

    • virt-manager

      Description : Virtual Machine Manager provides a graphical tool for administering virtual
      : machines for KVM, Xen, and LXC. Start, stop, add or remove virtual devices,
      : connect to a graphical or serial console, and see resource usage statistics
      : for existing VMs on local or remote machines. Uses libvirt as the backend
      : management API.

    • libvirt

      Description : Libvirt is a C toolkit to interact with the virtualization capabilities
      : of recent versions of Linux (and other OSes). The main package includes
      : the libvirtd server exporting the virtualization support.

    • qemu-kvm

      Description : qemu-kvm is an open source virtualizer that provides hardware
      : emulation for the KVM hypervisor. qemu-kvm acts as a virtual
      : machine monitor together with the KVM kernel modules, and emulates the
      : hardware for a full system such as a PC and its associated peripherals.

    2、创建虚拟机

    2.1 配置虚拟机存储目录

    这里我们直接开启宿主机Linux系统上面的GUI模式并且使用xrdp远程到桌面,然后使用virt-manager来进行GUI模式的创建虚拟机。

    这里需要注意的是因为我们使用的是ISO镜像文件来进行虚拟机系统的安装,因此必须需要一个GUI界面来进行最开始的系统安装,等待系统安装完成之后,我们可以直接使用命令行操作来克隆虚拟机,就不用每次都打开GUI模式安装系统这么麻烦了。

    接着我们创建一个目录专门用来存放虚拟机相关的镜像和文件,同时我们还需要注意权限的问题:

    sudo mkdir -p /kvm/iso
    sudo chown tinychen:tinychen /kvm -R
    

    接着我们把相应的系统安装镜像复制进去(对应的系统安装镜像文件均可直接在对应的官网下载),然后打开Virtual Machine Manager(以下简称VMM)来创建虚拟机

    image

    首先我们在Edit→Preferences里面开启XML文件编辑功能,XML模式可以最大程度的控制虚拟机的所有配置,一些特殊的配置或者组件操作无法通过VMM的GUI界面完成的我们可以直接编辑对应的XML文件块来实现。

    image

    2.2 创建虚拟机

    直接点击加号或者上面的File→New Virtual Machine然后选择使用本地媒体创建虚拟机(这里我们使用刚刚复制进去的ISO镜像文件)

    image

    接着我们可以看到有四种创建虚拟机的方式:

    • 从本地的媒体资源安装(iso文件或者CD光盘)
    • 通过网络协议获取安装的镜像文件然后进行安装
    • 通过PXE进行安装
    • 导入已有的虚拟机硬盘镜像文件

    我们选择第一种方式进行新建虚拟机操作。

    image

    由于是第一次创建虚拟机,我们需要先在VMM中添加一个池(pool),把先前创建的存放iso镜像文件的目录作为一个池添加到VMM中。

    image

    添加完成之后我们就可以看到里面的镜像文件,这里我们选择CentOS7的版本进行安装。

    image

    选择镜像之后VMM会自动检测镜像文件内包含的操作系统。

    image

    接下来是设定CPU和内存,注意这里的内存单位是MB,而CPU的单位是个,即并不是我们常说的CPU核心数量或者是超线程的线程数量,而是虚拟设定的多少个CPU,这里选择4即为4个CPU而不是一个4核CPU,这个选项我们后面需要再进行修改

    image

    接下来便是进行虚拟机的硬盘参数设置,我们这里选择手动创建一个硬盘。

    image

    和之前一样我们再创建一个池专门用来存放虚拟机的系统镜像文件。

    image

    接着在对应的池中新建一个qcow2磁盘文件。

    image

    这里我们可以看到硬盘的格式主要有raw和qcow2两种。qcow2 镜像格式是 QEMU 模拟器支持的一种磁盘镜像。它也是可以用一个文件的形式来表示一块固定大小的块设备磁盘。与普通的 raw 格式的镜像相比,有以下特性:

    • 更小的空间占用,即使文件系统不支持空洞(holes);
    • 支持写时拷贝(COW, copy-on-write),镜像文件只反映底层磁盘的变化;
    • 支持快照(snapshot),镜像文件能够包含多个快照的历史;
    • 可选择基于 zlib 的压缩方式
    • 可以选择 AES 加密

    qcow2最大的特点就是可以节省硬盘空间,只有在虚拟机实际占用了磁盘空间时,其文件才会增长。比如这里我们创建了一个40G的硬盘镜像文件,但是实际占用并没有40G,只有在虚拟机实际使用了硬盘空间之后,qcow2格式的镜像文件才会增大。

    image image

    最后需要设置的就是虚拟机的网卡,这里我们要勾选Customize configuration before install,在系统开始安装之前进行一些参数的设置。

    image

    2.3 配置虚拟机其他参数

    首先我们看到Overview中的ChipsetFirmware两个参数,它们分别相当于物理机电脑主板的芯片组和固件模式(BIOS或UEFI),如果有新版本的需求(如虚拟机KVM直通GPU)可以选择UEFI(OVMF)来进行启动,需要注意VMM中的快照(snapshot)功能不支持UEFI(OVMF)固件的虚拟机,因此这里我们选择默认的Q35和BIOS即可。

    image

    接下来我们需要对前面设定的CPU参数进行更改。这里我们编辑对应的XML文件将CPU模式修改为host-passthrough以便将CPU的全部特性传递到虚拟机中,同时修改CPU个数为1,核心数为4,每个核心的线程数为1。

    image
      <cpu mode="host-passthrough">
        <topology sockets="1" cores="4" threads="1"/>
      </cpu>
    
    image

    设定安装系统的ISO为只读,保证ISO文件不会被修改,同时设置数据总线方式为SATA保证最好的兼容性。

    image

    配置两个网卡,分别为桥接宿主机的网卡和NAT模式,其中桥接网卡使用e1000e型号保证最好的兼容性,NAT模式的网卡使用VirtIO型号可以达到最大100G的传输速度。

    image image

    其他还会默认添加一些常用的组件,我们根据自己的需求进行修改,这里我只保留了常用的USB重定向设备,声卡、网卡、串行总线等基本设备,如果不清楚具体需求,建议保留。

    image

    最后整个完整的xml文件如下:

    <domain type="kvm">
      <name>centos7_demo</name>
      <uuid>2e80a698-c4f9-464b-bb3e-28c4987cbe9a</uuid>
      <metadata>
        <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
          <libosinfo:os id="http://centos.org/centos/7.0"/>
        </libosinfo:libosinfo>
      </metadata>
      <memory>8388608</memory>
      <currentMemory>8388608</currentMemory>
      <vcpu current="4">4</vcpu>
      <os>
        <type arch="x86_64" machine="q35">hvm</type>
        <boot dev="hd"/>
      </os>
      <features>
        <acpi/>
        <apic/>
        <vmport state="off"/>
      </features>
      <cpu mode="host-passthrough">
        <topology sockets="1" cores="4" threads="1"/>
      </cpu>
      <clock offset="utc">
        <timer name="rtc" tickpolicy="catchup"/>
        <timer name="pit" tickpolicy="delay"/>
        <timer name="hpet" present="no"/>
      </clock>
      <pm>
        <suspend-to-mem enabled="no"/>
        <suspend-to-disk enabled="no"/>
      </pm>
      <devices>
        <emulator>/usr/libexec/qemu-kvm</emulator>
        <disk type="file" device="disk">
          <driver name="qemu" type="qcow2"/>
          <source file="/kvm/vm/centos7_demo.qcow2"/>
          <target dev="vda" bus="virtio"/>
        </disk>
        <disk type="file" device="cdrom">
          <driver name="qemu" type="raw"/>
          <source file="/kvm/iso/centos7.7.iso"/>
          <target dev="sda" bus="sata"/>
          <readonly/>
        </disk>
        <interface type="network">
          <source network="default"/>
          <mac address="52:54:00:83:cc:6d"/>
          <model type="virtio"/>
        </interface>
        <console type="pty"/>
        <channel type="unix">
          <source mode="bind"/>
          <target type="virtio" name="org.qemu.guest_agent.0"/>
        </channel>
        <channel type="spicevmc">
          <target type="virtio" name="com.redhat.spice.0"/>
        </channel>
        <input type="tablet" bus="usb"/>
        <graphics type="spice" port="-1" tlsPort="-1" autoport="yes">
          <image compression="off"/>
        </graphics>
        <video>
          <model type="qxl"/>
        </video>
        <memballoon model="virtio"/>
        <rng model="virtio">
          <backend model="random">/dev/urandom</backend>
        </rng>
        <interface type="direct">
          <source dev="enp6s0" mode="bridge"/>
          <mac address="52:54:00:31:ad:1d"/>
          <model type="e1000e"/>
        </interface>
      </devices>
    </domain>
    

    2.4开始安装

    image

    接下来的安装就和正常的物理机安装操作系统一样,这里我们就不再赘述了,由于是CentOS的虚拟机,为了节约系统资源,我选择了最小化安装(Minimal Install)、关闭了KDUMP功能,并且使用LVM来设定分区以便后期扩容

    image

    最后可以通过virsh命令来查看虚拟机的状态

    image

    如果需要开启虚拟机只需要使用virsh start 虚拟机名即可。

    相关文章

      网友评论

          本文标题:CentOS创建KVM虚拟机

          本文链接:https://www.haomeiwen.com/subject/znqmfltx.html