提交 e64b9481 编写于 作者: O openeuler-ci-bot 提交者: Gitee

!149 【虚拟化】非root用户操作整改

Merge pull request !149 from alexchen/master
......@@ -4,6 +4,7 @@
- [准备虚拟机镜像](#准备虚拟机镜像)
- [准备虚拟机网络](#准备虚拟机网络)
- [准备引导固件](#准备引导固件)
- [非root用户配置](#非root用户配置)
<!-- /TOC -->
......@@ -17,7 +18,7 @@
制作qcow2格式镜像文件的操作步骤如下:
1. 安装qemu-img软件包。
1. 使用root用户安装qemu-img软件包。
```
# yum install -y qemu-img
......@@ -51,13 +52,13 @@
1. 查询当前虚拟机镜像磁盘空间大小,命令如下:
```
# qemu-img info <imgFiLeName>
$ qemu-img info <imgFiLeName>
```
例如,查询openEuler-image.qcow2镜像磁盘空间大小的命令和回显如下,说明该镜像磁盘空间大小为4GiB。
```
# qemu-img info openEuler-image.qcow2
$ qemu-img info openEuler-image.qcow2
image: openEuler-image.qcow2
file format: qcow2
virtual size: 4.0G (4294967296 bytes)
......@@ -73,26 +74,26 @@
2. 修改镜像磁盘空间大小,命令如下,其中_imgFiLeName_为镜像名称,“+”和“-”分别表示需要增加或减小的镜像磁盘空间大小,单位为K、M、G、T,代表KiB、MiB、GiB、TiB。
```
# qemu-img resize <imgFiLeName> [+|-]<size>
$ qemu-img resize <imgFiLeName> [+|-]<size>
```
例如,将上述openEuler-image.qcow2镜像磁盘空间大小扩展到24GiB,即在原来4GiB基础上增加20GiB,命令和回显如下:
```
# qemu-img resize openEuler-image.qcow2 +20G
$ qemu-img resize openEuler-image.qcow2 +20G
Image resized.
```
3. 查询修改后的镜像磁盘空间大小,确认是否修改成功,命令如下:
```
# qemu-img info <imgFiLeName>
$ qemu-img info <imgFiLeName>
```
例如,上述openEuler-image.qcow2镜像磁盘空间已扩展到24GiB,命令和回显如下:
```
# qemu-img info openEuler-image.qcow2
$ qemu-img info openEuler-image.qcow2
image: openEuler-image.qcow2
file format: qcow2
virtual size: 24G (25769803776 bytes)
......@@ -119,7 +120,7 @@
### 搭建Linux网桥
以物理网卡eth0绑定到Linux网桥br0的操作为例,搭建Linux网桥的操作步骤如下
以物理网卡eth0绑定到Linux网桥br0的操作为例,使用root用户执行如下命令搭建Linux网桥
1. 安装bridge-utils软件包。
......@@ -168,7 +169,7 @@ Open vSwitch网桥,具有更便捷的自动化编排能力。搭建Open vSwitc
**一、安装Open vSwitch组件**
使用Open vSwitch提供虚拟网络,需要安装Open vSwitch网络虚拟化组件
使用Open vSwitch提供虚拟网络,需要安装Open vSwitch网络虚拟化组件,使用root用户执行如下命令:
1. 安装Open vSwitch组件。
......@@ -191,7 +192,7 @@ Open vSwitch网桥,具有更便捷的自动化编排能力。搭建Open vSwitc
1. 确认openvswitch-kmod组件是否安装成功。若安装成功,可以看到软件包相关信息,命令和回显如下:
```
# rpm -qi openvswitch-kmod
$ rpm -qi openvswitch-kmod
Name : openvswitch-kmod
Version : 2.11.1
Release : 1.oe3
......@@ -217,7 +218,7 @@ Open vSwitch网桥,具有更便捷的自动化编排能力。搭建Open vSwitc
2. 确认openvswitch组件是否安装成功。若安装成功,可以看到软件包相关信息,命令和回显如下:
```
# rpm -qi openvswitch
$ rpm -qi openvswitch
Name : openvswitch
Version : 2.11.1
Release : 1
......@@ -243,7 +244,7 @@ Open vSwitch网桥,具有更便捷的自动化编排能力。搭建Open vSwitc
3. 查看Open vSwitch服务是否启动成功。若服务处于“Active”状态,说明服务启动成功,可以正常使用Open vSwitch提供的命令行工具,命令和回显如下:
```
# systemctl status openvswitch
$ systemctl status openvswitch
● openvswitch.service - LSB: Open vSwitch switch
Loaded: loaded (/etc/rc.d/init.d/openvswitch; generated)
Active: active (running) since Sat 2019-08-17 09:47:14 CST; 4min 39s ago
......@@ -261,7 +262,7 @@ Open vSwitch网桥,具有更便捷的自动化编排能力。搭建Open vSwitc
**三、搭建Open vSwitch网桥**
以创建Open vSwitch一层网桥br0为例,介绍搭建方法
以创建Open vSwitch一层网桥br0为例,介绍搭建方法,使用root用户执行如下命令:
1. 创建Open vSwitch网桥br0。
......@@ -308,7 +309,7 @@ Open vSwitch网桥,具有更便捷的自动化编排能力。搭建Open vSwitc
如果使用UEFI方式引导,需要安装工具集EDK II,AArch64架构对应的安装包为edk2-aarch64,x86架构对应的安装包为edk2-ovmf。这里以AArch64架构为例,给出具体的安装方法,x86架构仅需将edk2-aarch64替换为edk2-ovmf。
1. 安装edk软件包,命令如下
1. 安装edk软件包,使用root用户执行如下命令
在AArch64架构下edk2的包名为edk2-aarch64
......@@ -327,7 +328,7 @@ Open vSwitch网桥,具有更便捷的自动化编排能力。搭建Open vSwitc
在AArch64架构下查询如下
```
# rpm -qi edk2-aarch64
$ rpm -qi edk2-aarch64
```
若edk软件安装成功,回显类似如下:
......@@ -344,7 +345,7 @@ Open vSwitch网桥,具有更便捷的自动化编排能力。搭建Open vSwitc
在x86\_64架构下查询如下
```
# rpm -qi edk2-ovmf
$ rpm -qi edk2-ovmf
```
若edk软件安装成功,回显类似如下:
......@@ -357,4 +358,43 @@ Open vSwitch网桥,具有更便捷的自动化编排能力。搭建Open vSwitc
Install Date: Thu 19 Mar 2020 09:09:06 AM CST
```
## 非root用户配置
### 概述
openEuler虚拟化使用virsh管理虚拟机。如果希望在非root用户使用virsh命令管理虚拟机,在使用之前需要进行相关配置,这里给出配置指导。
### 操作指导
允许非root用户使用virsh命令管理虚拟机的配置操作如下,以下命令中的userName请改为实际的非root用户名称:
1. 使用root用户登陆主机。
2. 将非root用户添加到libvirt用户组。
```
# usermod -a -G libvirt userName
```
3. 切换到非root用户。
```
# su userName
```
4. 配置非root用户的环境变量。使用vim打开~/.bashrc文件:
```
$ vim ~/.bashrc
```
并在末尾加上如下内容后保存。
```
export LIBVIRT_DEFAULT_URI="qemu:///system"
```
5. 在虚拟机XML配置文件中的domain根元素中添加如下内容,使qemu-kvm进程可以访问磁盘镜像文件。
```
<seclabel type='dynamic' model='dac' relabel='yes'>
```
......@@ -30,7 +30,7 @@
#### 前提条件
- 已经配置yum源。配置方式请参见《openEuler 20.03 LTS 管理员指南》。
- 安装操作需要管理员权限。
- 安装操作需要root用户权限。
#### 安装步骤
......@@ -61,12 +61,12 @@
1. 查看内核是否支持KVM虚拟化,即查看/dev/kvm和/sys/module/kvm文件是否存在,命令和回显如下:
```
# ls /dev/kvm
$ ls /dev/kvm
/dev/kvm
```
```
# ls /sys/module/kvm
$ ls /sys/module/kvm
parameters uevent
```
......@@ -75,7 +75,7 @@
2. 确认QEMU是否安装成功。若安装成功则可以看到QEMU软件包信息,命令和回显如下:
```
# rpm -qi qemu
$ rpm -qi qemu
Name : qemu
Epoch : 2
Version : 4.0.1
......@@ -109,7 +109,7 @@
3. 确认libvirt是否安装成功。若安装成功则可以看到libvirt软件包信息,命令和回显如下:
```
# rpm -qi libvirt
$ rpm -qi libvirt
Name : libvirt
Version : 5.5.0
Release : 1
......@@ -134,7 +134,7 @@
4. 查看libvirt服务是否启动成功。若服务处于“Active”状态,说明服务启动成功,可以正常使用libvirt提供的virsh命令行工具,命令和回显如下:
```
# systemctl status libvirtd
$ systemctl status libvirtd
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-08-06 09:36:01 CST; 5h 12min ago
......
......@@ -31,7 +31,7 @@
系统默认开启了halt-polling特性,polling的时间默认为500000ns。用户可以通过文件halt\_poll\_ns内容动态修改vCPU用于halt-polling的时间,单位为ns。
例如设置polling时间为400000命令如下:
例如设置polling时间为400000,使用root用户执行命令如下:
```
# echo 400000 > /sys/module/kvm/parameters/halt_poll_ns
......@@ -158,7 +158,7 @@ kworker是Linux内核实现的per-CPU线程,用来执行系统中的workqueue
#### 操作步骤
用户可以通过修改/sys/devices/virtual/workqueue/cpumask文件,将workqueue中的任务绑定到cpumask中指定的CPU上。cpumask中的掩码以十六进制表示,例如将kworker绑定到CPU0\~CPU7上,对应掩码为ff,修改的命令如下:
用户可以通过修改/sys/devices/virtual/workqueue/cpumask文件,将workqueue中的任务绑定到cpumask中指定的CPU上。cpumask中的掩码以十六进制表示,例如将kworker绑定到CPU0\~CPU7上,对应掩码为ff,使用root用户执行命令如下:
```
# echo ff > /sys/devices/virtual/workqueue/cpumask
......@@ -235,7 +235,7 @@ kworker是Linux内核实现的per-CPU线程,用来执行系统中的workqueue
openEuler默认关闭libvirt远程调用功能,这里给出开启libvirt远程调用和libvirt鉴权功能的方法。
1. 登录主机。
1. 使用root用户登录主机。
2. 修改libvirt服务配置文件/etc/libvirt/libvirtd.conf,开启libvirt远程调用和libvirt鉴权功能。例如使用基于SASL(Simple Authentication and Security Layer)协议的TCP远程调用配置参考如下:
```
......@@ -293,7 +293,7 @@ openEuler默认关闭libvirt远程调用功能,这里给出开启libvirt远程
#### 管理SASL
这里给出管理SASL用户的操作。
这里给出管理SASL用户的操作,请使用root用户操作
- 查询数据库中存在的用户
......@@ -322,7 +322,7 @@ qemu-ga(Qemu Guest Agent)它是运行在虚拟机内部的守护进程,它
#### 操作方法
添加qemu-ga黑名单的操作步骤如下
请使用root用户按照如下操作步骤添加qemu-ga黑名单
1. 登录虚拟机,确定qemu-guest-agent服务存在且处于运行状态。
......@@ -380,7 +380,7 @@ qemu-ga(Qemu Guest Agent)它是运行在虚拟机内部的守护进程,它
#### 开启sVirt保护
**一、开启主机的SELinux**
**一、使用root用户按照如下操作步骤开启主机的SELinux**
1. 登录主机。
2. 开启主机SELinux功能。
......
......@@ -39,7 +39,7 @@ CPU份额表示一个虚拟机竞争物理CPU计算资源的能力大小总和
- 查看虚拟机的当前CPU份额:
```
# virsh schedinfo <VMInstance>
$ virsh schedinfo <VMInstance>
Scheduler : posix
cpu_shares : 1024
vcpu_period : 100000
......@@ -56,13 +56,13 @@ CPU份额表示一个虚拟机竞争物理CPU计算资源的能力大小总和
- 在线修改:修改处于running状态的虚拟机的当前CPU份额,使用带**--live**参数的virsh schedinfo命令:
```
# virsh schedinfo <VMInstance> --live cpu_shares=<number>
$ virsh schedinfo <VMInstance> --live cpu_shares=<number>
```
比如将正在运行的虚拟机openEulerVM的CPU份额从1024改为2048:
```
# virsh schedinfo openEulerVM --live cpu_shares=2048
$ virsh schedinfo openEulerVM --live cpu_shares=2048
Scheduler : posix
cpu_shares : 2048
vcpu_period : 100000
......@@ -80,13 +80,13 @@ CPU份额表示一个虚拟机竞争物理CPU计算资源的能力大小总和
- 持久化修改:在libvirt内部配置中修改虚拟机的CPU份额,使用带**--config**参数的virsh schedinfo命令:
```
# virsh schedinfo <VMInstance> --config cpu_shares=<number>
$ virsh schedinfo <VMInstance> --config cpu_shares=<number>
```
比如将虚拟机openEulerVM的CPU份额从1024改为2048:
```
# virsh schedinfo openEulerVM --config cpu_shares=2048
$ virsh schedinfo openEulerVM --config cpu_shares=2048
Scheduler : posix
cpu_shares : 2048
vcpu_period : 0
......@@ -99,7 +99,7 @@ CPU份额表示一个虚拟机竞争物理CPU计算资源的能力大小总和
iothread_quota : 0
```
对cpu\_shares值的修改不会立即生效,在虚拟机openEulerVM下一次启动后才生效,并持久生效。虚拟机euler能得到的运行时间将是原来的2倍。
对cpu\_shares值的修改不会立即生效,在虚拟机openEulerVM下一次启动后才生效,并持久生效。虚拟机openEulerVM能得到的运行时间将是原来的2倍。
### 绑定QEMU进程至物理CPU
......@@ -115,7 +115,7 @@ QEMU主进程绑定特性是将QEMU主进程绑定到特定的物理CPU范围内
- 查看QEMU进程当前绑定的物理CPU范围:
```
# virsh emulatorpin openEulerVM
$ virsh emulatorpin openEulerVM
emulator: CPU Affinity
----------------------------------
*: 0-63
......@@ -126,9 +126,9 @@ QEMU主进程绑定特性是将QEMU主进程绑定到特定的物理CPU范围内
- 在线绑定:修改处于running状态的虚拟机对应的QEMU进程的绑定关系,使用带**--live**参数的vcpu emulatorpin命令:
```
# virsh emulatorpin openEulerVM --live 2-3
$ virsh emulatorpin openEulerVM --live 2-3
# virsh emulatorpin openEulerVM
$ virsh emulatorpin openEulerVM
emulator: CPU Affinity
----------------------------------
*: 2-3
......@@ -139,15 +139,15 @@ QEMU主进程绑定特性是将QEMU主进程绑定到特定的物理CPU范围内
- 持久化绑定:在libvirt内部配置中修改虚拟机对应的QEMU进程的绑定关系,使用带**--config**参数的virsh emulatorpin命令:
```
# virsh emulatorpin openEulerVM --config 0-3,^1
$ virsh emulatorpin openEulerVM --config 0-3,^1
# virsh emulatorpin euler
$ virsh emulatorpin openEulerVM --config
emulator: CPU Affinity
----------------------------------
*: 0,2-3
```
以上命令把虚拟机_open__Euler__VM_对应的QEMU进程绑定到物理CPU0、2、3上,即限制了QEMU进程只在这三个物理CPU上调度。这一绑定关系的调整不会立即生效,在虚拟机下一次启动后才生效,并持久生效
以上命令把虚拟机_open__Euler__VM_对应的QEMU进程绑定到物理CPU0、2、3上,即限制了QEMU进程只在这三个物理CPU上调度。**这一绑定关系的调整不会立即生效,在虚拟机下一次启动后才生效,并持久生效**
### 调整虚拟CPU绑定关系
......@@ -163,7 +163,7 @@ QEMU主进程绑定特性是将QEMU主进程绑定到特定的物理CPU范围内
- 查看虚拟机的当前vCPU绑定信息:
```
# virsh vcpupin openEulerVM
$ virsh vcpupin openEulerVM
VCPU CPU Affinity
----------------------
0 0-63
......@@ -177,9 +177,9 @@ QEMU主进程绑定特性是将QEMU主进程绑定到特定的物理CPU范围内
- 在线调整:修改处于running状态的虚拟机的当前vCPU绑定关系,使用带**--live**参数的vcpu vcpupin命令:
```
# virsh vcpupin openEulerVM --live 0 2-3
$ virsh vcpupin openEulerVM --live 0 2-3
# virsh vcpupin euler
$ virsh vcpupin openEulerVM
VCPU CPU Affinity
----------------------
0 2-3
......@@ -193,9 +193,9 @@ QEMU主进程绑定特性是将QEMU主进程绑定到特定的物理CPU范围内
- 持久化调整:在libvirt内部配置中修改虚拟机的vCPU绑定关系,使用带**--config**参数的virsh vcpupin命令:
```
# virsh vcpupin openEulerVM --config 0 0-3,^1
$ virsh vcpupin openEulerVM --config 0 0-3,^1
# virsh vcpupin openEulerVM
$ virsh vcpupin openEulerVM --config
VCPU CPU Affinity
----------------------
0 0,2-3
......@@ -204,7 +204,7 @@ QEMU主进程绑定特性是将QEMU主进程绑定到特定的物理CPU范围内
3 0-63
```
以上命令把虚拟机_open__Euler__VM_的vCPU0绑定到物理CPU0、2、3上,即限制了vCPU0只在这三个物理CPU上调度。这一绑定关系的调整不会立即生效,在虚拟机下一次启动后才生效,并持久生效
以上命令把虚拟机_open__Euler__VM_的vCPU0绑定到物理CPU0、2、3上,即限制了vCPU0只在这三个物理CPU上调度。**这一绑定关系的调整不会立即生效,在虚拟机下一次启动后才生效,并持久生效**
## 管理虚拟内存
......@@ -224,7 +224,7 @@ NUMA(Non Uniform Memory Access Architecture) 模式是一种分布式存储
- 查看host的NUMA拓扑结构:
```
# numactl -H
$ numactl -H
available: 4 nodes (0-3)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
node 0 size: 31571 MB
......
......@@ -89,7 +89,7 @@
使用virsh attach-device命令挂载virtio-scsi虚拟磁盘:
```
# virsh attach-device <VMInstance> <attach-device.xml>
$ virsh attach-device <VMInstance> <attach-device.xml>
```
上述命令可以为虚拟机在线挂载磁盘,其中磁盘信息由attach-device.xml文件指定。下面是一个attach-device.xml文件的例子:
......@@ -112,7 +112,7 @@
通过在线挂载的磁盘,如果不需要再使用,可以通过virsh detach命令动态卸载:
```
# virsh detach-device <VMInstance> <detach-device.xml>
$ virsh detach-device <VMInstance> <detach-device.xml>
```
其中,detach-device.xml指定了需要卸载的磁盘的XML信息,与动态挂载时的XML信息保持一致。
......@@ -133,7 +133,7 @@
使用virsh attach-device命令挂载vhost-net虚拟网卡:
```
# virsh attach-device <VMInstance> <attach-device.xml>
$ virsh attach-device <VMInstance> <attach-device.xml>
```
上述命令可以为虚拟机在线挂载vhost-net网卡,其中网卡信息由attach-device.xml文件指定。下面是一个attach-device.xml文件的例子:
......@@ -156,7 +156,7 @@
通过在线挂载的网卡,如果不需要再使用,可以通过virsh detach命令动态卸载:
```
# virsh detach-device <VMInstance> <detach-device.xml>
$ virsh detach-device <VMInstance> <detach-device.xml>
```
其中,detach-device.xml指定了需要卸载虚拟网卡的XML信息,与动态挂载时的XML信息保持一致。
......@@ -185,13 +185,13 @@ Linux虚拟机串口控制台,即虚拟机串口连接到宿主机的一个伪
- 使用virsh console命令连接到正在运行的虚拟机的pty串口。
```
# virsh console <VMInstance>
$ virsh console <VMInstance>
```
- 如果要确保没有遗漏任何串口消息,请在启动虚拟机时使用--console选项连接到串口。
```
# virsh start --console <VMInstance>
$ virsh start --console <VMInstance>
```
......@@ -307,7 +307,7 @@ SR-IOV(Single Root I/O Virtualizaiton)是一种基于硬件的虚拟化解
#### 操作方法
配置SR-IOV直通网卡的操作步骤如下
请使用root用户按照如下操作步骤配置SR-IOV直通网卡
1. 开启网卡的SR-IOV模式。
1. 请确保Guest OS有网卡供应商提供的VF驱动支持,否则Guest OS内VF无法正常工作。
......@@ -568,7 +568,7 @@ USB设备的XML描述:
通过lsusb命令(需要安装usbutils软件包)查询主机上的USB设备信息,包含bus地址、device地址、设备厂商ID、设备ID和产品描述信息等。例如:
```
# lsusb
$ lsusb
```
```
......@@ -595,25 +595,25 @@ USB设备的XML描述:
- 热插USB设备,只对当前运行的虚拟机有效,虚拟机冷重启后需要重新配置。
```
# virsh attach-device openEulerVM usb.xml --live
$ virsh attach-device openEulerVM usb.xml --live
```
- 热插USB设备,持久化该配置,即该虚拟机重启后该设备会自动直通给该虚拟机使用。
```
# virsh attach-device openEulerVM usb.xml --config
$ virsh attach-device openEulerVM usb.xml --config
```
- 热拔USB设备,只对当前运行的虚拟机有效,持久化配置的USB设备在虚拟机重启后USB设备会自动直通给该虚拟机。
```
# virsh detach-device openEulerVM usb.xml --live
$ virsh detach-device openEulerVM usb.xml --live
```
- 热拔USB设备,持久化该配置。
```
# virsh detach-device openEulerVM usb.xml --config
$ virsh detach-device openEulerVM usb.xml --config
```
......@@ -634,7 +634,7 @@ USB设备的XML描述:
1. 登录主机,通过virsh domblklist命令查询虚拟机使用的磁盘。
```
# virsh domblklist openEulerVM
$ virsh domblklist openEulerVM
Target Source
---------------------------------------------
vda /mnt/openEuler-image.qcow2
......@@ -644,7 +644,7 @@ USB设备的XML描述:
1. 创建虚拟机磁盘快照_openEuler-snapshot1.qcow2_,命令及回显如下:
```
# virsh snapshot-create-as --domain openEulerVM --disk-only --diskspec vda,snapshot=external,file=/mnt/openEuler-snapshot1.qcow2 --atomic
$ virsh snapshot-create-as --domain openEulerVM --disk-only --diskspec vda,snapshot=external,file=/mnt/openEuler-snapshot1.qcow2 --atomic
Domain snapshot 1582605802 created
```
......@@ -652,7 +652,7 @@ USB设备的XML描述:
1. 磁盘快照查询操作。
```
# virsh snapshot-list openEulerVM
$ virsh snapshot-list openEulerVM
Name Creation Time State
---------------------------------------------------------
1582605802 2020-02-25 12:43:22 +0800 disk-snapshot
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册