图形化方式和模板方式创建KVM虚拟机

文章目录

一、搭建环境

首先搭建一个图形化界面的centos操作系统

1 打开虚拟化引擎

在这里插入图片描述

2 安装相关软件

yum -y install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install virt-manager wget

3 启动服务并开启开机自动启动

systemctl enable libvirtd && systemctl start libvirtd

二、图形化方式创建虚拟机

1 上传镜像文件到宿主机(阿里云镜像)

wget http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso

2 安装流程

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
开始进行centos系统的安装

3 查看虚拟机的配置文件和虚拟磁盘文件

3.1 配置文件

[root@localhost ~]# cd /etc/libvirt/qemu/
[root@localhost qemu]# ls
centos7-1.xml  networks

以.xml结尾的文件就是虚拟机的配置文件

[root@localhost qemu]# vim centos7-1.xml 

虚拟机名称(第9行)

 <name>centos7-1</name>

uuid(第10行)

<uuid>17d1195b-27b5-4ff4-bf14-801fed0d6635</uuid>

内存(第11行)

<memory unit='KiB'>1048576</memory>

磁盘

    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/centos7-1.qcow2'/> #磁盘文件路径
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </disk>

mac地址(第77行)

<mac address='52:54:00:5e:ae:a6'/>

3.2虚拟磁盘文件(以.qcow2结尾的文件)

[root@localhost ~]# cd /var/lib/libvirt/images/
[root@localhost images]# ls
centos7-1.qcow2

三、利用模板创建虚拟机

1 创建新虚拟机的配置文件

复制已存在的虚拟机的配置文件

cp /etc/libvirt/qemu/centos7-1.xml /etc/libvirt/qemu/centos7-2.xml

注意:此配置文件可能和你们机器上的文件名不同,请以你们机器上的以.xml结尾的文件为准

2 创建新虚拟机的虚拟磁盘文件

复制已存在的虚拟磁盘文件

[root@localhost ~]# cp /var/lib/libvirt/images/centos7-1.qcow2 /var/lib/libvirt/images/centos7-2.qcow2

注意:此配置文件可能和你们机器上的文件名不同,请以你们机器上的以.qcow2结尾的文件为准

3 修改配置文件里的虚拟机名称、uuid、磁盘、mac地址

[root@localhost ~]# vim /etc/libvirt/qemu/centos7-2.xml
<name>centos7-2</name>  
<uuid>17d1195b-27b5-4ff4-bf14-801fed0d6635</uuid>  #修改uuid其中一个数即可(不用复制我的)
...
<source file='/var/lib/libvirt/images/centos7-2.qcow2'/> #要和复制的虚拟磁盘文件的绝对路径相同
...
<mac address='52:54:00:5e:ae:a6'/>  #和uuid一样,修改其中一个数即可

4 定义虚拟机

[root@localhost ~]# virsh define /var/lib/libvirt/images/centos7-2.qcow2
定义域 centos7-2(从 /etc/libvirt/qemu/centos7-2.xml)

注意:要以结对路径来定义虚拟机

5 启动虚拟机

[root@localhost ~]# virsh list --all  # 列出所有KVM虚拟机
 Id    名称                         状态
----------------------------------------------------
 -     centos7-1                      关闭
[root@localhost ~]# virsh start centos7-1 # 启动指定KVM虚拟机
域 centos7-1 已开始
[root@localhost ~]# virsh list
 Id    名称                         状态
----------------------------------------------------
 5     centos7-1                      running

[root@localhost ~]# virsh domifaddr 5
 名称     MAC 地址           Protocol     Address
-------------------------------------------------------------------------------
 vnet0      52:54:00:15:42:35    ipv4         192.168.122.168/24

四、virsh 管理虚拟机

1 列出正在运行的虚拟机

virsh list

2 列出所有的虚拟机

virsh list  --all

3 查看指定虚拟机的元数据信息

virsh dominfo centos7-1
#这里的centos7-1是虚拟机名称,你的是啥就写啥

4 查看指定虚拟机的 IP 地址

virsh domifaddr centos7-1

5 启动虚拟机

virsh start centos7-1

6 正常关闭虚拟机

virsh shutdown centos7-1

7 强制关闭虚拟机,相当于拔掉电源

virsh destroy centos7-1

8 重启虚拟机

virsh reboot vm-name centos7-1

9 删除虚拟机(虚拟机磁盘文件回保留,需要手动删除)

virsh undefine centos7-1

五、给虚拟机添加硬件

1.命令行方式添加

1.1添加内存

首先关闭想要添加内存的虚拟机

virsh shutdown centos7-1

设置最大可分配内存

virsh setmaxmem centos7-1 6G

查看虚拟机信息

[root@localhost network-scripts]# virsh dominfo centos7-1
Id:             -
名称:       centos7-1
UUID:           32799c03-95c9-4b2e-9b79-cc7ca82e872c
OS 类型:    hvm
状态:       关闭
CPU:          1
最大内存: 6291456 KiB
使用的内存: 1048576 KiB
持久:       是
自动启动: 禁用
管理的保存: 否
安全性模式: selinux
安全性 DOI: 0

之后启动该虚拟机,然后添加内存

[root@localhost network-scripts]# virsh start centos7-1
域 centos7-1 已开始

[root@localhost network-scripts]# virsh setmem centos7-1 4G

[root@localhost network-scripts]# virsh dominfo centos7-1
Id:             1
名称:       centos7-1
UUID:           96ba6be9-2586-4bc8-918c-80614c22a1bf
OS 类型:    hvm
状态:       running
CPU:          1
CPU 时间:   14.4s
最大内存: 6291456 KiB
使用的内存: 4194304 KiB
持久:       是
自动启动: 禁用
管理的保存: 否
安全性模式: selinux
安全性 DOI: 0
安全性标签: system_u:system_r:svirt_t:s0:c319,c373 (enforcing)

1.2添加硬盘

创建一个虚拟硬盘

[root@localhost ~]# qemu-img create -f qcow2 centos7-1-2.qcow2 1G
Formatting 'centos7-1-2.qcow2', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 lazy_refcounts=off 

编辑一个虚拟硬盘的 xml 文件模板

[root@localhost ~]# cat disk.xml 
<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2' cache='writeback' io='threads'/>
  <source file='/root/centos7-1-2.qcow2'/>  #指定创建的虚拟硬盘的绝对路径
  <target dev='vdb' bus='virtio'/> #dev=''指定添加的硬盘名称
</disk>

然后使用 attach-device 命令从XML文件添加

virsh attach-device centos7-1 disk.xml --persistent

查看虚拟机的所有磁盘

virsh domblklist centos7-1

1.3添加网卡

生成mac地址后三位

[root@localhost ~]# openssl rand -hex 3 | sed -r 's/..\B/&:/g'
90:71:b8

参考当前需要添加网卡的这台虚拟机的xml配置文件中的网络部分,创建一个新网卡的 xml 配置文件

[root@localhost ~]# cat mac.xml 
<interface type='network'>
      <mac address='52:54:00:90:71:b8'/> #把后三位修改成生成的那三位数
        <source network='default'/>
          <model type='virtio'/>
      </interface>

然后使用 attach-device 命令从XML文件添加

[root@localhost ~]# virsh attach-device centos7-1 network.xml --persistent
成功附加设备

用命令查看虚拟机网卡信息

[root@localhost ~]# virsh domiflist centos7-1
接口     类型     源        型号      MAC
-------------------------------------------------------
vnet0      network    default    virtio      52:54:00:ba:ac:be
vnet1      network    default    virtio      52:54:00:90:71:b8

六、虚拟机的存储池

1.KVM默认存储池位置

/var/lib/libvirt/images/

2.定义存储池

使用 virsh pool-define-as 命令创建持久性存储池

[root@localhost ~]# mkdir /vm-pool/centos7
[root@localhost ~]# virsh pool-define-a --name centos7-pool --type dir --target "/vm-pool/centos7"
创建池 centos7-pool

使用 virsh pool-list --all 命令列出所有现有的存储池

[root@localhost ~]# virsh pool-list
 名称               状态     自动开始
-------------------------------------------
 centos7-pool         非活动     否
 default              活动     是

3.启动存储池

[root@localhost ~]# virsh pool-start centos7-pool
池 centos7-pool 已启动

[root@localhost ~]# virsh pool-list --all
 名称               状态     自动开始
-------------------------------------------
 centos7-pool         活动     否
 default              活动     是

4.打开自动启动

可以使用 virsh pool-autostart 命令将存储池配置为自动启动

[root@localhost ~]# virsh pool-autostart centos7-pool

[root@localhost ~]# virsh pool-list --all
 名称               状态     自动开始
-------------------------------------------
 centos7-pool         活动     是
 default              活动     是

5.删除存储池

5.1 停止要删除的存储池

[root@localhost ~]# virsh pool-destroy centos7-pool 
销毁池 centos7-pool

5.2 对于某些类型的存储池,您可以选择删除存储池所在的目录(可选)

[root@localhost ~]# virsh pool-delete centos7-pool 
池 centos7-pool 被删除

5.3 取消存储池的定义

[root@localhost ~]# virsh pool-undefine centos7-pool 
池 centos7-pool 已经被取消定义

5.4 存储池删除成功

[root@localhost ~]# virsh pool-list --all
 名称               状态     自动开始
-------------------------------------------
 default              活动     是

七、虚拟机的快照

这里以为虚拟机 centos7-1 创建一个快照(磁盘格式必须为qcow2)为例说明对一个虚拟机快照的创建、查询、删除操作。

[root@localhost ~]# qemu-img info /home/kvm/virtual-img/centos7-1.qcow2 
image: /home/kvm/virtual-img/centos7-1.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.7G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

1. 给指定的虚拟机创建快照

[root@localhost ~]# virsh snapshot-create-as centos7-1 centos7-1.snap1
已生成域快照 centos7-1.snap1

2. 查看指定虚拟机的快照

[root@localhost ~]# virsh snapshot-list centos7-1 
 名称               生成时间              状态
------------------------------------------------------------
 centos7-1.snap1      2021-03-29 16:50:53 +0800 shutoff

3. 恢复快照

[root@kvm ~]# virsh snapshot-revert centos7-1 --snapshotname centos7-1.snap1

4. 删除快照

[root@localhost ~]# virsh snapshot-delete centos7-1 --snapshotname centos7-1.snap1 
已删除域快照 centos7-1.snap1

八、虚拟机网络

1. 网络模式介绍

Libvirt虚拟网络使用虚拟网络交换机的概念。虚拟网络交换机是一种在主机物理机服务器上运行的软件结构。
虚拟机通过这个虚拟的网络交换机和物理宿主机进行通信,从而数据通过物理机和外部网络进行通信。
Linux主机物理机服务器将虚拟网络交换机表示为网络接口。
首次安装并启动libvirtd守护程序(libvirtd)时,表示虚拟网络交换机的默认网络接口是virbr0。

libvirt 会依赖 ip_forward 参数, 并添加响应的 iptables(防火墙)规则,允许去往和来自虚拟机的数据。有些程序可能会关闭 ip_forward 参数,因此最好的选择是将以下内容添加到KVM虚拟机的 /etc/sysctl.conf下

[root@localhost ~]# echo 'net.ipv4.ip_forward = 1' >> 1.sh

注意:在KVM虚拟机中运行此命令

2. 设置桥接模式网络

配置文件方式配置桥接:在宿主机上

ip a #找到宿主机用哪个网络,我的是ens33

2.1 创建虚拟网卡配置文件

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-br0 
[root@localhost network-scripts]# cat ifcfg-br0 
TYPE=Bridge
NAME=br0
DEVICE=br0
ONBOOT="yes"
BOOTPROTO=static
IPADDR=192.168.42.129 #要和宿主机IP地址相同
NETMASK=255.255.255.0 
GATEWAY=192.168.42.2

2.2 修改宿主机网卡配置文件(将物理机网卡桥到桥接网卡)

[root@localhost network-scripts]# mv ifcfg-ens33 ifcfg-ens33.back #先给网卡配置文件做备份,以防操作失误
[root@localhost network-scripts]# vim ifcfg-ens33
[root@localhost network-scripts]# cat ifcfg-ens33
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
BRIDGE=br0  #要和虚拟网卡名相同

2.3 重启服务

[root@localhost ~]# systemctl restart libvirtd 
[root@localhost ~]# systemctl restart network

KVM虚拟机网络模式就可以修改成桥接模式了

2.4 删除网桥模式

步骤:
1.删除br0配置文件
2.还原ens33的配置文件
3.重启服务

[root@localhost ~]# cd /etc/sysconfig/network-scripts/   #千万不要忘记这一步,不然可能会删根
[root@localhost network-scripts]# rm -rf ifcfg-br0  
[root@localhost network-scripts]# mv ifcfg-ens33.back ifcfg-ens33
[root@localhost ~]# systemctl restart libvirtd 
[root@localhost ~]# systemctl restart network

3 KVM虚拟机添加桥接模式的网卡

3.1 图形界面添加

3.1.1 打开虚拟系统管理器
3.1.2 双击想要添加网卡的KVM虚拟机


在这里插入图片描述
在这里插入图片描述
图形界面添加网卡完成

3.2 命令行模式添加(采用模板)

3.2.1 生成mac地址后三位
[root@localhost ~]# openssl rand -hex 3 | sed -r 's/..\B/&:/g'
b7:7f:c9
3.2.2 参考当前需要添加网卡的这台虚拟机的xml配置文件中的网络部分,创建一个新网卡的 xml 配置文件
[root@localhost ~]# cat mac.xml 
<interface type='network'>
      <mac address='52:54:00:b7:7f:c9'/> #把后三位修改成生成的那三位数
        <source network='br0'/> #要改成br0
          <model type='rtl8139'/> 
      </interface>
3.2.3 然后使用 attach-device 命令从XML文件添加
[root@localhost ~]# virsh attach-device centos7-1 network.xml --persistent
成功附加设备

使用命令行模式添加桥接网卡成功

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统上,可以使用KVM(Kernel-based Virtual Machine)创建虚拟机KVM是一种基于内核的虚拟化技术,可以在Linux系统上运行多个虚拟机。 以下是在Linux系统上使用KVM创建虚拟机的步骤: 1. 确认主机支持虚拟化。使用以下命令检查主机是否支持虚拟化: ``` grep -E 'svm|vmx' /proc/cpuinfo ``` 如果输出中包含"svm"或"vmx",则表示主机支持虚拟化。 2. 安装KVM和相关工具。使用以下命令安装KVM和相关工具: ``` sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager ``` 3. 创建虚拟网络。使用以下命令创建一个虚拟网络: ``` sudo virsh net-create network.xml ``` 其中,network.xml是一个XML配置文件,用于定义虚拟网络的配置信息。 4. 创建虚拟机。使用以下命令创建一个虚拟机: ``` sudo virt-install --name vm-name --ram 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/vm-name.qcow2,size=20 --network network=network-name --graphics vnc,listen=0.0.0.0 --os-type linux --os-variant ubuntu20.04 --cdrom /path/to/iso-image.iso ``` 其中,vm-name是虚拟机的名称,network-name是虚拟网络的名称,/var/lib/libvirt/images/vm-name.qcow2是虚拟机的磁盘镜像文件路径,20是虚拟机磁盘的大小(单位为GB),/path/to/iso-image.iso是用于安装操作系统的ISO镜像文件路径。 运行上述命令后,将会启动一个新的图形化窗口,用于安装操作系统。按照提示进行操作即可完成虚拟机创建。 这些步骤可以让您在Linux系统上使用KVM创建虚拟机

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值