服务器openEuler安装虚拟机(无virt-manager管理工具的系统也可参照)

侯和惬
2023-12-01

前提条件:

X86服务器:

a:进入BIOS->Advanced->Peripheral Configuration-> SR-IOV Setup Settings,把PCle SR-IOV打开

b:进入BIOS->Advanced->Socket Configuration->lIo Configuration->Inte(R) Virtualization for Directed I/O (VT-d),把VT-d选项打开

c:执行vi /etc/default/grub,在GRUB_CMDLINE_LINUX末尾加“intel_iommu=on iommu=pt”,修改好后保存退出,执行grub2-mkconfig -o /boot/efi/EFI/系统名称/grub.cfg,重启os,重启后输入cat /proc/cmdline查看是否生效

ARM服务器:

进入BIOS->Advanced-> MISC Config->,Support Smmu、Smmu Work Around、Support SPCR三个选项状态改为Enabled

x86和arm服务器安装好os后,执行vi /etc/ssh/sshd_config,把X11Forwarding 改为yes后,systemctl restart sshd重启sshd服务;可以通过ssh远程并运行Linux上有GUI的程序,从而打开virt-manager及virt-viewer工具

一、    配置网络源(安装虚拟机所需要的包)

1、vi编辑 /etc/yum.repos.d/openEuler.repo查看yum配置,openeuler系统自带官方源,可以直接用,无需修改;如果非openeuler系统,则需要修改网络源配置文件,可用清华源、华为源等

2、安装图形化分两种情况:

        1)openeuler可安装图形化可使用virt-manager工具管理虚拟机

        执行yum install gnome-shell gdm gnome-session gnome-terminal xorg-x11-* -y命令安装图形化所需要的依赖包;执行systemctl enable gdm.service 、systemctl set-default graphical.target两条命令设置 gdm 开机自启,设置完后需要os重启生效(注:安装完后,输入root账号进不去无所谓,ssh远程能调用virt-manager启动即可)

         yum install -y qemu* libvirt virt-*安装虚拟机套件

        注:arm 系统需要再安装edk2文件,x86无需安装;yum install edk2-*

        2)有些系统无法安装图形化及virt-manager管理工具,可以使用virt-viewer工具

        yum install -y qemu* libvirt virt-*安装虚拟机套件

        注:arm 系统需要再安装edk2文件,x86无需安装;yum install edk2-*

二、    创建虚拟机

1、制作虚拟硬盘(制作qcow2镜像,建议选择大一点的目录,如/home/)

使用qemu-img工具的create命令,创建镜像文件,命令格式:

qemu-img create -f <imgFormat> -o <fileOption> <fileName> <diskSize>

其中,各参数含义如下:

        1)imgFormat :镜像格式,取值为raw, qcow2等。

        2)fileOption :文件选项,用于设置镜像文件的特性,如指定后端镜像文件,压缩,加密等特性。

        3)fileName :文件名称。

        4)diskSize :磁盘大小,用于指定块磁盘设备的大小,支持的单位有K、M、G、T,分别代表KiB、MiB、GiB、TiB。

例如,创建一个磁盘设备大小为20GB、格式为qcow2的镜像文件openEuler-imge.qcow2,命令如下:qemu-img create -f qcow2 openEuler-imge.qcow2 20G

注意:xml文件、qcow2、系统ISO文件最后放在同一目录下

2、创建虚拟机xml文件

根据openeuler官网配置xml,网址如下:左侧导航窗格选择虚拟机配置页,最下方有arm及x86的相关xml文件配置

https://docs.openeuler.org/zh/docs/20.03_LTS/docs/Virtualization/virtualization.html

xml修改点如下:

        1)修改磁盘文件存放路径

        2)修改安装ISO存放路径

         <disk type='file' device='disk'>
            <driver name='qemu' type='qcow2' iothread="1"/>
            <source file='/root/centos/image.qcow2'/>#创建虚拟硬盘的位置
            <target dev='vda' bus='virtio'/>
            <boot order='1'/>
        </disk>
        <disk type='file' device='cdrom'>
            <driver name='qemu' type='raw'/>
            <source file='/root/CentOS-7-aarch64-Everything-1810.iso'/>#需要安装的系统镜像的位置
            <readonly/>
            <target dev='sdb' bus='scsi'/>
            <boot order='2'/>
        </disk>

3、定义虚拟机及安装虚拟机

        1)执行命令virsh define openEuler.xml定义虚拟机    #以实际xml文件名称为主

        2)执行命令virsh start openEuler开启虚拟机        #以实际xml文件中虚拟机名字为主

        3)通过在系统的图形化界面下执行virt-manager(没有此命令说明没有相关的依赖包,使用virt-viewer如果两个命令都没有,则使用virsh console 虚拟机名称,直接连接进入虚拟机,此时虚拟机为文字界面,如果安装没有进度,则可以试试修改镜像文件为suse系统或者另找方法把安装界面修改为文字界面安装,可以试试虚拟机grub配置加入:console=ttyS0,115200n8 console=tty0),然后跳出系统选项,

        4)如果登录系统需要VNC密码,需要看xml配置中VNC处设定密码

        

        5)成功进入虚拟机安装

        6)安装完成开机

三、配置pci设备直通方法

先关闭虚拟机,然后更改配置文件,如果有virt-manager工具则直接使用工具添加pci直通设备

如图

如果没有virt-manager工具则按如下方法添加pci设备:

        使用virsh edit <虚拟名称>,命令修改已经定义的虚拟机文件,在配置文件的最后面修改,注意格式,格式错误会导致修改不成功、无法保存文件等情况,注意后面连个标签为xml自带,意为修改的参照格式

        <hostdev mode='subsystem' type='pci' managed='yes'>
             <source>
                <address domain='0x0000' bus='0x01' slot='0x00' function='0x2'/>#后三个值根据使能的网口的BDF号进行修改
            </source>
  <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0' multifunction='on'/>#04根据xml前面的bus值更改,比前面的值更大即可
         </hostdev>
      </devices>
   </domain>

注:上面所写格式中,不对齐标签与前一个标签的间隔都为2个空格

修改完毕保存成功后,开启虚拟机virsh start <虚拟机名称>即可

四:平时常用的配置

1、配置虚拟网口VF的MAC地址:ip link set enp7s0f0 vf 0 mac 1a:20:3c:4d:5e:a1
查看对应网口的VF有没有MAC地址:ip link show dev pf口

2、virsh克隆虚拟机:

virsh dumpxml centos7.6 >centos7.6.xml  #生成一个centos7.6系统当前的XML文件
cp系统centos7.6的虚拟盘,cp centos7.6.qcow2 cenntos7.6-clone.qcow2
之后修改系统生成的xml文件下的虚拟磁盘和虚拟机命名,直接定义虚拟机virsh defint centos7.6.xml

3、挂载iso镜像:
<disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/root/20230313_103803.iso'/>
      <target dev='vde' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</disk>

virsh domblklist centos7(查看挂载了什么东西)

五:virsh等常用命令

virsh list                    #显示正在运行的虚拟机

virsh list --all            #显示所有的虚拟机 (如果没有显示,可能需要切换到root权限下)

virsh start vm-node1          #启动vm-node1虚拟机

virsh shutdown vm-node1       #关闭vm-node1虚拟机

virsh destroy vm-node1      #虚拟机vm-node1强制断电

virsh suspend vm-node1     #挂起vm-node1虚拟机

virsh resume vm-node1     #恢复挂起的虚拟机

virsh undefine vm-node1      #删除虚拟机,慎用

virsh dominfo vm-node1     #查看虚拟机的配置信息

virsh omiflist vm-node1           #查看网卡配置信息

virsh domblklist vm-node1     #查看该虚拟机的磁盘位置

virsh edit vm-node1     #修改vm-node1的xml配置文件

qemu-img create -f qcow2 test1.qcow2 1g # 创建一个1G磁盘的磁盘文件

virsh attach-disk --domain dns --source /root/vm/test2.qcow2 --target vdc  --subdriver qcow2 --config --live  # 虚拟机添加磁盘文件

virsh detach-disk dns vdc  # 从虚拟机删除磁盘

virsh attach-interface openEuler20.03.3 --type direct --source enp122s2u1u1 --config #桥接网口至虚拟机

virsh console <虚拟机名称>  #直接连接虚拟机OS中(没有图形化的情况下可以使用命令连接进OS)
退出console:ctrl+]

virsh define dns.xml           # 从xml配置文件定义一个虚拟机

virsh reboot dns               # 重启虚拟机

virsh dumpxml dns > dns.xml   # 导出dns虚拟机的配置文件

virsh autostart dns            # 设置虚拟机dns开机自启

virsh autostart --disable dns  # 取消虚拟机dns开机自启

virsh net-destroy lab2   #停止指定的虚拟网络

virsh net-undefine lab2  # 删除指定的虚拟网络

virsh edit 虚拟机       #修改已经定义的虚拟机的配置文件

六:遇到的问题

1、如果虚拟机开启时提示“Error polling connection ‘qemu:///system’:in
ternal error socket 6378 can't be handled {max socket is 4095}”的报错
是因为libvirt版本太低,需要升级到4.7.0版本,下面为操作步骤,需要联网
yum install gcc libnl-devel libxml2-devel yajl-devel device-mapper-devel libpciaccess-devel libnl3-devel netcf-devel numactl-devel
wget https://libvirt.org/sources/libvirt-4.7.0.tar.xz
xz -d libvirt-4.7.0.tar.xz
tar -xvf libvirt-4.7.0.tar
cd libvirt-4.7.0
./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc --with-numactl
(如果编译时报错,则可能是依赖包版本过低根据提示更新对应依赖包,如
报错You must install the gnutls >= 3.2.0 pkg-config module to compile libvirt.则更新gnutls*)
make
make install
ldconfig #需要更新动态链接库
libvirtd --version #查看libvirt的版本
systemctl restart libvirtd#重启服务(如果提示Warning: libvirtd.service changed on disk. Run 'systemctl daemon-reload' to reload units.,按提示输
入 systemctl daemon-reload)

2、提示虚拟硬盘没有权限cannot access storage file (as uid:107, gid:107)  permission denied
修改/etc/libvirt/qemu.conf,user="root"和group="root"前的注释删除掉

3、如果使能网卡的时候提示echo: write error: Cannot allocate memory
修改内核文件/etc/default/grub,加入pci=realloc,保存退出使用命令grub2-mkconfig -o /boot/efi/Efi/系统名字/grub.cfg生效

4、提示报错:error: Failed to define domain from hostname.xmlerror: Cannot find QEMU binary /usr/bin/kvm: No such file or directory
解决方法:安装qemu-kvm,查看kvm在哪:find / -name kvm,之后创建软连接:ln -s /usr/libexec/qemu-kvm /usr/bin/kvm

5、ARM机器虚拟机安装时图形化卡死,把xml文件的type=virtio和type=usb和type=tablet和type=keyboard几行删除进行文字界面安装,原因可能时系统不支持这些配置

 类似资料: