CentOS创建KVM虚拟机

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 虚拟机名即可。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容