目录
b、定义一个存储池并绑定目录,建立基于文件夹的存储池、激活、设置开机启动
五、修改kvm虚拟机内存、CPU等参数(内存扩充,修改cpu个数)
一、实验环境
1、cpu信息
[root@localhost ~]# lscpu
架构: aarch64
CPU 运行模式: 64-bit
字节序: Little Endian
CPU: 4
在线 CPU 列表: 0-3
每个核的线程数: 1
每个座的核数: 4
座: 1
NUMA 节点: 1
厂商 ID: HiSilicon
型号: 0
型号名称: Kunpeng-920
步进: 0x1
CPU 最大 MHz: 2600.0000
CPU 最小 MHz: 200.0000
BogoMIPS: 200.00
L1d 缓存: 256 KiB
L1i 缓存: 256 KiB
L2 缓存: 2 MiB
L3 缓存: 32 MiB
NUMA 节点0 CPU: 0-3
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Spec store bypass: Not affected
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Not affected
Vulnerability Tsx async abort: Not affected
标记: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma dcpop asimddp asimdfhm
2、操作系统版本
[root@localhost ~]# cat /etc/kylin-release
Kylin Linux Advanced Server release V10 (Tercel)
[root@localhost ~]# cat /proc/version
Linux version 4.19.90-17.ky10.aarch64 (YHKYLIN-OS@localhost.localdomain) (gcc version 7.3.0 (GCC)) #1 SMP Sun Jun 28 14:27:40 CST 2020
简单查看是否支持虚拟化:
[root@localhost ~]# dmesg | grep kvm
[ 0.718369] kvm [1]: Hisi ncsnp: enabled
[ 0.718372] kvm [1]: 16-bit VMID
[ 0.718373] kvm [1]: IPA Size Limit: 48bits
[ 0.718377] kvm [1]: GICv4 support disabled
[ 0.718378] kvm [1]: vgic-v2@9b020000
[ 0.718379] kvm [1]: GIC system register CPU interface enabled
[ 0.718394] kvm [1]: vgic interrupt IRQ1
[ 0.718414] kvm [1]: VHE mode initialized successfully
注:VHE(Virtualization Host Extension support)是armv8.1的新特性,支持type-2的hypervisors这种扩展让kernel直接跑在el2上。
二、准备工作
1、安装虚拟化软件
yum -y install qemu* libvirt* virt-install
2、修改vi /etc/libvirt/qemu.conf
注:这里不改的话,后面创建的img及要用到的iso文件的所有者需要改成qemu用户。
3、重启libvirtd服务
service libvirtd restart
4、设置开机启动
[root@localhost ~]#
[root@localhost ~]# systemctl enable libvirtd
[root@localhost ~]#
[root@localhost ~]# service libvirtd status
Redirecting to /bin/systemctl status libvirtd.service
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-04-07 10:40:07 CST; 10s ago
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 92805 (libvirtd)
Tasks: 19 (limit: 32768)
Memory: 29.3M
CGroup: /system.slice/libvirtd.service
├─92645 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
├─92646 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
└─92805 /usr/sbin/libvirtd
4月 07 10:40:07 localhost.localdomain systemd[1]: Starting Virtualization daemon...
4月 07 10:40:07 localhost.localdomain systemd[1]: Started Virtualization daemon.
4月 07 10:40:07 localhost.localdomain dnsmasq[92645]: read /etc/hosts - 2 addresses
4月 07 10:40:07 localhost.localdomain dnsmasq[92645]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 addresses
4月 07 10:40:07 localhost.localdomain dnsmasq-dhcp[92645]: read /var/lib/libvirt/dnsmasq/default.hostsfile
4月 07 10:40:07 localhost.localdomain libvirtd[92805]: libvirt version: 5.5.0, package: 6.ky10 (Koji, 2020-03-18-20:23:00, ae4af90b50c84bc0baf802aca7ec6143)
4月 07 10:40:07 localhost.localdomain libvirtd[92805]: hostname: localhost.localdomain
4月 07 10:40:07 localhost.localdomain libvirtd[92805]: Failed to get host CPU cache info
5、关闭selinux
setenforce 0
6、查看安装的版本
[root@localhost ~]# virsh version
根据库编译:libvirt 5.5.0
使用库:libvirt 5.5.0
使用的 API: QEMU 5.5.0
运行管理程序: QEMU 4.0.1
若yum源安装的版本太低,建议下载源码安装新版(libvirt、qemu)。
二、安装
1、创建存储池
a、创建存储池目录,配置目录权限
[root@localhost ~]# mkdir -p /home/kvm/images
[root@localhost ~]# chown root:root /home/kvm/images
[root@localhost ~]#
[root@localhost ~]# ll /home/kvm/
总用量 0
drwx------ 2 root root 6 4月 7 10:42 images
[root@localhost ~]# chmod 755 /home/kvm/images
[root@localhost ~]#
注意:【一】中第二条没改的话,这里要chown qemu:qemu/home/kvm/images
b、定义一个存储池并绑定目录,建立基于文件夹的存储池、激活、设置开机启动
[root@localhost ~]# virsh pool-define-as StoragePool --type dir --target /home/kvm/images
定义池 StoragePool
[root@localhost ~]# virsh pool-build StoragePool
构建池 StoragePool
[root@localhost ~]# virsh pool-start StoragePool
池 StoragePool 已启动
[root@localhost ~]# virsh pool-autostart StoragePool
池 StoragePool 标记为自动启动
[root@localhost ~]# virsh pool-info StoragePool
名称: StoragePool
UUID: 66ae0c61-05fe-454d-b215-8f9d27c6573c
状态: 运行中
持久: 是
自动启动: 是
容量: 1.08 TiB
分配: 37.12 GiB
可用: 1.05 TiB
[root@localhost ~]# virsh pool-list
名称 状态 自动开始
--------------------------------
StoragePool 活动 是
[root@localhost ~]#
2、创建虚拟机磁盘空间
[root@localhost ~]# virsh vol-create-as --pool StoragePool --name kylinv10.img --capacity 120G --allocation 1G --format qcow2
创建卷 1.img
[root@localhost ~]# virsh vol-info /home/kvm/images/kylinv10.img
名称: kylinv10.img
类型: 文件
容量: 120.00 GiB
分配: 4.17 GiB
[root@localhost ~]#
3、创建网桥br1
[root@localhost ~]# brctl addbr br1
本文创建虚拟机的网络适配模式为桥接模式,所以要先新增个网桥,用于创建虚拟机,虚拟机的网络配置,本文后面会详细讲到。
4、创建虚拟机
[root@localhost ~]# virt-install --name=vm_kylinv10 --vcpus=2 --ram=4096 --disk path=/home/kvm/images/kylinv10.img,format=qcow2,size=120,bus=virtio --cdrom /home/kvm/images/Kylin-Server-10-SP1-Release-Build04-20200711-arm64.iso --network bridge=br1,model=virtio --force --autostart
** (process:94273): WARNING **: 11:02:02.996: Entity http://kylin.cn/kylin/10.0 should be in file os/kylin.cn/kylin-10.0.xml not os/kylin.cn/kylin-10.xml
** (process:94273): WARNING **: 11:02:03.063: Entity http://cs2c.com.cn/neokylin/6.9 should be in file os/cs2c.com.cn/neokylin-6.9.xml not os/cs2c.com.cn/neokylin-6.xml
** (process:94273): WARNING **: 11:02:03.065: Entity http://cs2c.com.cn/neokylin/7.0 should be in file os/cs2c.com.cn/neokylin-7.0.xml not os/cs2c.com.cn/neokylin-7.xml
WARNING CDROM 介质默认情况下不输出信息到文本控制台,所以您可能看不到安装的输出。您可能需要使用 --location 选项。 请参考 man 手册以了解使用 --location 选项与 CDROM 介质的示例
开始安装......
连接到域 vm_kylinv10
换码符为 ^]
注:这里创建虚拟机网络是桥接模式,跟宿主机一个网段
这里如果报权限不够的话,把/home/kvm/目录所属用户递归修改所需账户即可:
ERROR Cannot access storage file '/home/kvm/images/1.img' (as uid:107, gid:107): 权限不够
域安装失败,您可以运行下列命令重启您的域:
'virsh start virsh --connect qemu:///system start vm_kylinv10'
否则请重新开始安装。
[root@localhost ~]# chown -R qemu:qemu /home/kvm
[root@localhost ~]#
5、开始安装系统
选择第一个安装即可。
将带[!]的选项都操作下,按多对应的数字即可,然后输入 c 继续,最后输入b开始安装系统,大约等待半小时左右,系统安装完毕:
此时,敲下enter完成安装,虚拟机系统重启,启动完成后,登录系统就能使用了:
\
三、桥接模式网络配置
1、宿主机上
a、停止NetworkManager服务
[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# systemctl disable NetworkManager
Removed /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.
Removed /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
[root@localhost ~]#
b、修改ifcfg-xxx文件
(1)、修改宿主机原网络配置文件
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-enp125s0f0 ifcfg-enp125s0f0.bak
[root@localhost network-scripts]# vi ifcfg-enp125s0f0
将IPADDR、NETMASK、GATEWAY三项删掉,添加以下内容:
BRIDGE="br1"
(2)、配置网桥
[root@localhost network-scripts]# vi ifcfg-br1
BOOTPROTO=static
NAME=br1
DEVICE=br1
TYPE=Bridge
ONBOOT=yes
IPADDR=192.168.xx.xx
NETMASK=255.255.255.0
GATEWAY=192.168.xx.xxx
2、虚拟机内部网络配置
修改/etc/sysconfig/network-scripts/ifcfg-xxx,配置ip跟宿主机同一网段即可。
3、网桥设置
[root@localhost ~]# ip tuntap add dev tap0 mod tap
[root@localhost ~]# brctl addif br1 tap0
[root@localhost ~]#
[root@localhost ~]# ifconfig tap0 0.0.0.0 promisc up
[root@localhost ~]#
[root@localhost ~]#
4、重启网络服务
[root@localhost ~]# service network restart
[root@localhost ~]#
到此,网络配置完成,可以ssh连上了。
现在,在宿主机上可以使用virsh命令管理虚拟机了。
四、克隆虚拟机
1、关闭虚拟机
[root@localhost ~]# virsh list
Id 名称 状态
----------------------------------
11 vm_kylinv10_arm64 运行中
[root@localhost ~]# virsh shutdown vm_kylinv10_arm64
域 vm_kylinv10_arm64 被关闭
[root@localhost ~]#
[root@localhost ~]# virsh list
Id 名称 状态
-------------------
[root@localhost ~]#
2、使用virt-clone命令克隆虚拟机
[root@localhost ~]# virt-clone -o vm_kylinv10_arm64 -n vm_kylin10_bak -f /home/kvm/images/kylin10_bak.img
正在分配 'kylin10_bak.img' 0% [- ] 0 B/s | 898 MB --:--:-- 正在分配 'kylin10_bak.img' 0% [- ] 0 B/s | 898 MB --:--:-- 正在分配 'kylin10_bak.img' 1% [= ] 205 MB/s | 1.9 GB 00:09:50 正在分配 'kylin10_bak.img' 1% [= ] 164 MB/s | 1.9 GB 00:12:18 正在分配 'kylin10_bak.img' 1% [= ] 131 MB/s | 1.9 GB 00:15:22 正在分配 'kylin10_bak.img' 1% [= ] 105 MB/s | 1.9 GB 00:19:13 正在分配 'kylin10_bak.img' 1% [= ] 84 MB/s | 1.9 GB 00:24:02 正在分配 'kylin10_bak.img' 1% [= ] 67 MB/s | 1.9 GB 00:30:03 正在分配 'kylin10_bak.img' 1% [= ] 54 MB/s | 1.9 GB 00:37:35 正在分配 'kylin10_bak.img' 1% [= ] 43 MB/s | 1.9 GB 00:46:59 正在分配 'kylin10_bak.img' 1% [= ] 34 MB/s | 1.9 GB 00:58:45 正在分配 'kylin10_bak.img' 3% [== ] 437 MB/s | 3.9 GB 00:04:32 正在分配 'kylin10_bak.img' 3% [== ] 350 MB/s | 3.9 GB 00:05:40 正在分配 'kylin10_bak.img' 3% [== ] 280 MB/s | 3.9 GB 00:07:05 正在分配 'kylin10_bak.img' 3% [== ] 224 MB/s | 3.9 GB 00:08:51 正在分配 'kylin10_bak.img' 3% [== ] 179 MB/s | 3.9 GB 00:11:04 正在分配 'kylin10_bak.img' 3% [== ] 143 MB/s | 3.9 GB 00:13:51 正在分配 'kylin10_bak.img' 3% [== ] 114 MB/s | 3.9 GB 00:17:19 正在分配 'kylin10_bak.img' 3% [== ] 91 MB/s | 3.9 GB 00:21:39 正在分配 'kylin10_bak.img' 3% [== ] 73 MB/s | 3.9 GB 00:27:05 正在分配 'kylin10_bak.img' 3% [== ] 59 MB/s | 3.9 GB 00:33:51 正在分配 'kylin10_bak.img' 3% [== ] 47 MB/s | 3.9 GB 00:42:20 正在分配 'kylin10_bak.img' 3% [== ] 37 MB/s | 3.9 GB 00:52:56 正在分配 'kylin10_bak.img' 3% [== ] 30 MB/s | 3.9 GB 01:06:11 正在分配 'kylin10_bak.img' 3% [== ] 24 MB/s | 3.9 GB 01:22:46 正在分配 'kylin10_bak.img' 3% [== ] 19 MB/s | 3.9 GB 01:43:29 正在分配 'kylin10_bak.img' 3% [== ] 15 MB/s | 3.9 GB 02:09:23 正在分配 'kylin10_bak.img' 3% [== ] 12 MB/s | 3.9 GB 02:41:47 正在分配 'kylin10_bak.img' | 120 GB 00:00:29
正在分配 'vm_kylin10_bak_VARS.fd' | 64 MB 00:00:00
成功克隆 'vm_kylin10_bak'。
[root@localhost ~]#
3、查看当前有哪些虚拟机
[root@localhost ~]# virsh list
Id 名称 状态
-------------------
[root@localhost ~]# virsh list --all
Id 名称 状态
--------------------------------
- vm_kylin10_bak 关闭
- vm_kylinv10_arm64 关闭
[root@localhost ~]#
[root@localhost ~]#
4、修改克隆的虚拟机的主机名、ip相关
[root@localhost ~]# virsh start vm_kylin10_bak
域 vm_kylin10_bak 已开始
[root@localhost ~]# ssh root@192.168.xx.xx
Authorized users only. All activities may be monitored and reported.
root@192.168.52.150's password:
Authorized users only. All activities may be monitored and reported.
Web console: https://localhost:9090/ or https://192.168.xx.xx:9090/
Last login: Wed Apr 7 15:23:15 2021 from 192.168.xx.xx
[root@localhost ~]# hostnamectl --static set-hostname kylinv10
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# hostname
kylinv10
[root@localhost ~]# /etc/sysconfig/network-scripts/ifcfg-enp1s0
修改完成后,重启机器即可。
五、修改kvm虚拟机内存、CPU等参数(内存扩充,修改cpu个数)
1、修改虚拟机内存
使用virsh setmem命令
[root@localhost ~]# virsh setmem --help
命令名称
setmem - 改变内存的分配
概览
setmem <domain> <size> [--config] [--live] [--current]
说明
改变当前在 guest 域中的内存分配。
选项
[--domain] <字符串> domain name, id or uuid
[--size] <数字> 新内存大小,以整数计(默认为 KiB)
--config 影响下一次引导
--live 影响运行的域
--current 影响当前域
如果修改时,有如下报错,则:
[root@localhost /]# virsh setmem vm_test 12G --config
错误:无效参数:无法将内存设置为高于最大内存
[root@localhost /]#
此时,要先修改虚拟机的内存的最大值
[root@localhost /]#
[root@localhost /]# virsh setmaxmem vm_test 16G
[root@localhost /]#
[root@localhost /]#
[root@localhost /]# virsh setmem vm_test 12G --config
[root@localhost /]#
[root@localhost /]#
2、修改CPU个数
使用virsh setvcpus命令
[root@localhost ~]# virsh setvcpus --help
命令名称
setvcpus - 改变虚拟 CPU 的号
概览
setvcpus <domain> <count> [--maximum] [--config] [--live] [--current] [--guest] [--hotpluggable]
说明
在客户域中修改虚拟 CPU 号。
选项
[--domain] <字符串> domain name, id or uuid
[--count] <数字> 虚拟 CPU 号
--maximum 设定下一次引导的上限
--config 影响下一次引导
--live 影响运行的域
--current 影响当前域
--guest 在虚拟机中修改 cpu 状态
--hotpluggable make added vcpus hot(un)pluggable
六、彻底删除虚拟机
1、关闭虚拟机
virsh destroy vm_xxx
2、删除虚拟机
virsh undefine vm_xxx
3、删除该虚拟机用到的img
rm -rf /home/kvm/images/xxx.img
4、删除该虚拟机对应的xml文件
rm -rf /etc/libvirt/qemu/xxx.xml
5、重启服务
systemctl restart libvirtd.service
6、再查看虚拟机还在不在列表
virsh list --all
欢迎关注我的微信公众号【大胖聊编程】,我的公众号中有更多文章分享,也可以在公众号中联系到我,加好友一起交流学习。