ARM架构服务器安装部署KVM虚拟化环境

07-14 1160阅读

文章目录

一、主流的虚拟化方案简介

二、查看内核是否支持KVM虚拟化

三、关闭Selinux

四、关闭防火墙

五、配置网桥br0和静态IP

六、安装GNOME桌面环境

七、安装KVM及所需组件

八、修改sshd 配置文件

九、启动libvirt并设置开机自启动

十、创建镜像目录和磁盘文件目录

十一、创建虚拟机的磁盘文件

十二、创建虚拟机

十三、配置虚拟机的网络

十四、KVM虚拟机常见管理命令(在宿主机中执行)

十五、常见问题


硬件环境:

  • 品牌:宝德
  • CPU: HUAWEI Kunpeng(华为鲲鹏) 920 5250 96核
  • CPU厂商:HiSilicon(海思)
  • 架构:aarch64
  • 内存:439GB
  • 磁盘:1.7TB

    软件环境:

    • 操作系统:已安装华为欧拉OpenEuler 22.03 LTS

      一、主流的虚拟化方案简介

      • ESXi:在私有云领域,目前VMware ESXi是领导者。ESXi中,所有虚拟化功能都在内核实现。(部署流程:服务器物理机--->基于rufus和ESXi制作USB启动盘--->使用USB启动盘安装ESXi--->创建虚拟机--->安装虚拟机操作系统)
      • Xen:Xen内核仅实现CPU与内存虚拟化,IO虚拟化与调度管理由Domain0实现。
      • KVM:KVM是当前最主流的开源的服务器虚拟化技术,已逐渐替换另一开源虚拟化技术Xen。KVM目前已支持X86、ARM等平台。KVM内核实现了CPU和内存的虚拟化,借助QEMU实现IO设备(网卡、磁盘等)的虚拟化,通过Linux进程调度器实现VM管理。(部署流程:服务器物理机--->基于rufus和操作系统镜像制作USB启动盘--->使用USB启动盘安装物理机操作系统--->安装KVM--->创建虚拟机--->安装虚拟机操作系统) ARM架构服务器安装部署KVM虚拟化环境 KVM虚拟化

        二、查看内核是否支持KVM虚拟化

        针对ARM架构服务器,若/dev/kvm 和 /sys/module/kvm任意一个不存在,都说明内核不支持KVM虚拟化。 

        [root@localhost ~]# ls -l /dev/kvm
        crw-rw----+ 1 root kvm 10, 232 May  6 09:18 /dev/kvm
        [root@localhost ~]# ls /sys/module/kvm
        parameters  uevent

        扩展说明:

        针对X86服务器,查看是否支持KVM虚拟化的命令如下:

        #若是intel cpu,命令执行结果是vmx;若是amd cpu,命令执行结果是svm;
        [root@localhost ~]# egrep -o 'vmx|svm' /proc/cpuinfo

        三、关闭Selinux

        • 永久配置
          [root@localhost ~]# sed -i 's/enforcing/disabled/' /etc/selinux/config 
          • 临时配置
            [root@localhost ~]# setenforce 0 
            • 查看结果
              [root@localhost ~]# getenforce 

              四、关闭防火墙

              说明:为了顺利完成KVM虚拟化环境的安装部署,先关闭防火墙。待安装部署完成后,再启用防火墙,并进行相关配置(具体配置可以详见:Linux系统中配置防火墙-CSDN博客)。

              • 关闭firewalld
                [root@localhost ~]# systemctl stop firewalld
                • 禁止开机启动firewalld
                  [root@localhost ~]# systemctl disable firewalld
                  • 关闭iptables
                    [root@localhost ~]# systemctl stop iptables
                    • 禁止开机启动iptables
                      [root@localhost ~]# systemctl disable iptables

                      五、配置网桥br0和静态IP

                      注意:每台物理服务器的命令执行结果以及需要配置的静态IP可能不一样,请基于实际情况来进行配置。

                      • 查看当前处于UP状态的网卡接口
                        [root@localhost ~]# ip ad
                        1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
                            link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
                            inet 127.0.0.1/8 scope host lo
                               valid_lft forever preferred_lft forever
                            inet6 ::1/128 scope host 
                               valid_lft forever preferred_lft forever
                        2: enp125s0f0:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
                            link/ether b0:4f:a6:3d:44:9c brd ff:ff:ff:ff:ff:ff
                        3: enp125s0f1:  mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
                            link/ether b0:4f:a6:3d:44:9d brd ff:ff:ff:ff:ff:ff
                        4: enp125s0f2:  mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
                            link/ether b0:4f:a6:3d:44:9e brd ff:ff:ff:ff:ff:ff
                        5: enp125s0f3:  mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
                            link/ether b0:4f:a6:3d:44:9f brd ff:ff:ff:ff:ff:ff

                        从命令执行结果可知,当前处于UP状态的网卡接口是enp125s0f0(若有多个网卡接口都处于state UP,则通常选第一个来进行配置。注意,不要选lo,这是127.0.0.1专用的)

                        注意:这里的网卡接口与服务器背面的网口对应。网口分光口和电口两种,并且一台服务器通常有多个光口和多个电口。光口使用光纤来连接,电口使用RJ45网线来连接。配置服务器的IP前,要看是用RJ45网线连的电口,还是用光纤连的光口。还要看具体是连的第几个光口/电口。

                        • 基于网卡enp125s0f0的网络配置文件,复制生成网桥br0的网络配置文件
                          [root@localhost ~]# cp /etc/sysconfig/network-scripts/ifcfg-enp125s0f0 \
                                              /etc/sysconfig/network-scripts/ifcfg-br0
                          • 修改网桥br0的网络配置文件,其中需要配置宿主机的静态IP
                            [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-br0
                            #Type使用桥接
                            TYPE=Bridge
                            #IP分配协议改为静态分配
                            BOOTPROTO=static
                            #修改NAME为br0
                            NAME=br0
                            #修改DEVICE为br0
                            DEVICE=br0
                            ONBOOT=yes
                            #宿主机的静态IP
                            IPADDR=192.168.112.56
                            #子网掩码
                            PREFIX=24
                            #网关
                            GATEWAY=192.168.112.1
                            #DNS
                            DNS1=114.114.114.114
                            • 修改处于UP状态的网卡enp125s0f0的网络配置文件
                              [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp125s0f0
                              #Type使用Ethernet
                              TYPE=Ethernet
                              #IP分配协议改为静态分配
                              BOOTPROTO=static
                              NAME=enp125s0f0
                              DEVICE=enp125s0f0
                              ONBOOT=yes
                              #指定桥接设备为br0
                              BRIDGE=br0
                              • 重启网络
                                #华为openeuler系统使用该命令,其他linux系统可以使用systemctl restart network
                                [root@localhost ~]# nmcli con reload; nmcli con up enp125s0f0  
                                • 查看网络连接
                                  ##如果配置成功,会有以下输出:
                                  [root@localhost ~]# brctl show
                                  bridge name     bridge id               STP enabled     interfaces
                                  br0             8000.b04fa63d449c       no              enp125s0f0
                                  docker0         8000.0242ca5f6b53       no              veth0f04dc2
                                                                                          veth6148d75
                                                                                          veth7ee782c
                                                                                          veth88dc0dd
                                                                                          vethc335d89
                                                                                          vethf19fe4a
                                  virbr0          8000.525400112ec1       yes             virbr0-nic
                                  • 设置IP转发
                                    ##修改内核参数
                                    [root@localhost ~]# vi /etc/sysctl.conf
                                    net.ipv4.ip_forward=1
                                    ##执行生效
                                    ##加载指定的文件配置内核参数,-p后通常接一个文件路径
                                    ##若为空,默认加载/etc/sysctl.conf中的内核参数
                                    [root@localhost ~]# sysctl -p  
                                        
                                    ##显示所有的内核参数      
                                    [root@localhost ~]# sysctl -a    
                                     
                                    ##若只是临时修改内核参数的值,可以执行如下命令,但是重启后失效        
                                    [root@localhost ~]# net.ipv4.ip_forward=1
                                     
                                    ##加载/etc/sysctl.d/目录下所有conf文件(包括/etc/sysctl.conf文件)中的内核参数
                                    [root@localhost ~]# sysctl --system  

                                    六、安装GNOME桌面环境

                                    GNOME简介

                                    • GNOME是运行在类Unix操作系统中最常用桌面环境,是一个功能完善、操作简单,界面友好,集使用和开发为一身的桌面环境,是GNU计划的正式桌面。
                                    • 从用户的角度看,GNOME是一个集成桌面环境和应用程序的套件。从开发者的角度看,它是一个应用程序开发框架(由数目众多的实用函数库组成)。即使用户不运行GNOME桌面环境,用GNOME编写的应用程序也可以正常运行。
                                    • GNOME既包含文件管理器,应用商店,文本编辑器等基础软件,也包含系统采样分析,系统日志,软件工程IDE,web浏览器,简洁虚拟机监视器,开发者文档浏览器等高级应用和工具。
                                      ##更新系统
                                      [root@localhost ~]# yum update -y   
                                      ##安装字库
                                      [root@localhost ~]# yum install dejavu-fonts liberation-fonts \
                                                          gnu-*-fonts google-*-fonts -y
                                      ##安装Xorg
                                      [root@localhost ~]# yum install xorg-* -y
                                      ##这可能会安装很多没用的包,可以使用下面的命令安装必要的xorg相关包
                                      [root@localhost ~]# yum install xorg-x11-apps xorg-x11-drivers xorg-x11-drv-ati \
                                          xorg-x11-drv-dummy xorg-x11-drv-evdev xorg-x11-drv-fbdev xorg-x11-drv-intel \
                                          xorg-x11-drv-libinput xorg-x11-drv-nouveau xorg-x11-drv-qxl \
                                          xorg-x11-drv-synaptics-legacy xorg-x11-drv-v4l xorg-x11-drv-vesa \
                                          xorg-x11-drv-vmware xorg-x11-drv-wacom xorg-x11-fonts xorg-x11-fonts-others \
                                          xorg-x11-font-utils xorg-x11-server xorg-x11-server-utils xorg-x11-server-Xephyr \
                                          xorg-x11-server-Xspice xorg-x11-util-macros xorg-x11-utils xorg-x11-xauth \
                                          xorg-x11-xbitmaps xorg-x11-xinit xorg-x11-xkb-utils -y
                                      ##安装GNOME及组件
                                      [root@localhost ~]# yum install adwaita-icon-theme atk atkmm at-spi2-atk \
                                          at-spi2-core baobab \
                                          abattis-cantarell-fonts cheese clutter clutter-gst3 clutter-gtk cogl dconf \
                                          dconf-editor devhelp eog epiphany evince evolution-data-server file-roller folks \
                                          gcab gcr gdk-pixbuf2 gdm gedit geocode-glib gfbgraph gjs glib2 glibmm24 \
                                          glib-networking gmime30 gnome-autoar gnome-backgrounds gnome-bluetooth \
                                          gnome-builder gnome-calculator gnome-calendar gnome-characters \
                                          gnome-clocks gnome-color-manager gnome-contacts gnome-control-center \
                                          gnome-desktop3 gnome-disk-utility gnome-font-viewer gnome-getting-started-docs \
                                          gnome-initial-setup gnome-keyring gnome-logs gnome-menus gnome-music \
                                          gnome-online-accounts gnome-online-miners gnome-photos gnome-remote-desktop \
                                          gnome-screenshot gnome-session gnome-settings-daemon gnome-shell \
                                          gnome-shell-extensions gnome-software gnome-system-monitor gnome-terminal \
                                          gnome-tour gnome-user-docs gnome-user-share gnome-video-effects \
                                          gnome-weather gobject-introspection gom grilo grilo-plugins \
                                          gsettings-desktop-schemas gsound gspell gssdp gtk3 gtk4 gtk-doc gtkmm30 \
                                          gtksourceview4 gtk-vnc2 gupnp gupnp-av gupnp-dlna gvfs json-glib libchamplain \
                                          libdazzle libgdata libgee libgnomekbd libgsf libgtop2 libgweather libgxps libhandy \
                                          libmediaart libnma libnotify libpeas librsvg2 libsecret libsigc++20 libsoup \
                                          mm-common mutter nautilus orca pango pangomm libphodav python3-pyatspi \
                                          python3-gobject rest rygel simple-scan sushi sysprof tepl totem totem-pl-parser \
                                          tracker3 tracker3-miners vala vte291 yelp yelp-tools \
                                          yelp-xsl zenity -y
                                      ##启动gdm显示管理器
                                      [root@localhost ~]# systemctl enable gdm
                                      ##设置系统默认以图形界面登录
                                      [root@localhost ~]# systemctl set-default graphical.target
                                      ##查询当前开机运行级别
                                      [root@localhost ~]# systemctl get-default  
                                      ##重启生效
                                      [root@localhost ~]# reboot

                                      七、安装KVM及所需组件

                                      说明:如果宿主机没有安装图形桌面,则无需安装virt-manager。virt-manager(Virtual Machine Manager)是图形化虚机管理器,类似于Esxi的Web Console管理页面。

                                      ##安装KVM及所需组件
                                      [root@localhost ~]# yum install virt-manager virt-install bridge-utils \
                                                          libvirt qemu-kvm virt-viewer libcanberra-gtk2  libiscsi  \
                                                          dbus-devel  virt-clone dejavu-lgc-sans-fonts qemu-img \
                                                          libvirt-client virt-v2v libguestfs-tools xorg-x11-xauth -y
                                      ##查看virt-manager版本号
                                      [root@localhost ~]# virt-manager --version
                                      2.1.0
                                      ##查看virsh版本号
                                      [root@localhost ~]# virsh --version    
                                      6.2.0
                                      ##查看qemu-img版本号
                                      [root@localhost ~]# qemu-img --version
                                      qemu-img version 6.2.0 (qemu-6.2.0-86.oe2203)
                                      ##查看virt-install版本号
                                      [root@localhost ~]# virt-install --version
                                      2.1.0

                                      八、修改sshd 配置文件

                                      [root@localhost ~]# sudo vi /etc/ssh/sshd_config
                                      ##确保该配置文件有如下内容
                                      X11Forwarding yes
                                      X11DisplayOffset 10
                                      X11UseLocalhost no
                                      PermitTunnel yes
                                      ##重启 sshd 服务
                                      [root@localhost ~]# systemctl restart sshd

                                      九、启动libvirt并设置开机自启动

                                      ##启动
                                      [root@localhost ~]# systemctl start libvirtd
                                      ##设置开机自启
                                      [root@localhost ~]# systemctl enable libvirtd
                                      ##查看libvirt服务是否启动成功
                                      ##若服务处于running状态,说明服务启动成功
                                      ##可以正常使用libvirt提供的virsh命令行工具
                                      [root@localhost ~]# systemctl status libvirtd

                                      十、创建镜像目录和磁盘文件目录

                                      ##查看物理机磁盘空间
                                      ##通过df -hT发现/home目录空间最大
                                      [root@localhost ~]# df -hT
                                      Filesystem                 Type      Size  Used Avail Use% Mounted on
                                      devtmpfs                   devtmpfs  4.0M     0  4.0M   0% /dev
                                      tmpfs                      tmpfs     220G     0  220G   0% /dev/shm
                                      tmpfs                      tmpfs      88G   60M   88G   1% /run
                                      tmpfs                      tmpfs     4.0M     0  4.0M   0% /sys/fs/cgroup
                                      /dev/mapper/openeuler-root ext4       69G   15G   51G  23% /
                                      tmpfs                      tmpfs     220G     0  220G   0% /tmp
                                      /dev/sda2                  ext4      974M  204M  704M  23% /boot
                                      /dev/sda1                  vfat      599M  6.0M  593M   2% /boot/efi
                                      /dev/mapper/openeuler-home ext4      1.7T  174G  1.5T  11% /home
                                      tmpfs                      tmpfs      44G   72K   44G   1% /run/user/1003
                                      ##建立目录用来存放iso镜像文件
                                      [root@localhost ~]# mkdir /home/iso
                                      ##建立目录用来存放qcow2磁盘文件
                                      [root@localhost ~]# mkdir /home/qcow2

                                      十一、创建虚拟机的磁盘文件

                                      说明:通过命令行方式创建一个虚拟机前,需要创建该虚拟机的磁盘文件。

                                      ##进入磁盘文件目录
                                      [root@localhost ~]# cd /home/qcow2
                                      ##创建虚拟机的磁盘文件
                                      ##这里创建了一个名为vm1.qcow2,空间为400GB的动态扩展的qcow2格式的磁盘
                                      ##这里的400GB只是磁盘的最大值,没有被写入数据前只有不到200KB大小
                                      [root@localhost ~]# qemu-img create -f qcow2 vm1.qcow2 400G
                                      Formatting 'vm1.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=429496729600 lazy_refcounts=off refcount_bits=16 cache=writeback
                                      ##查看磁盘文件vm1.qcow2的卷信息,里面disk size是其实际占用的宿主机磁盘大小
                                      ##上面的400GB只是磁盘的最大值,这里可以看到,没有被写入数据前只有200KB大小
                                      [root@localhost ~]# qemu-img info vm1.qcow2
                                      image: vm1.qcow2
                                      file format: qcow2
                                      virtual size: 400 GiB (429496729600 bytes)
                                      disk size: 200 KiB
                                      cluster_size: 65536
                                      Format specific information:
                                          compat: 1.1
                                          compression type: zlib
                                          lazy refcounts: false
                                          refcount bits: 16
                                          corrupt: false
                                          extended l2: false

                                      十二、创建虚拟机

                                      1)方法一:命令行基于iso镜像文件创建虚拟机

                                      • 下载(下载地址:https://www.openeuler.org/zh/download/archive/)适配ARM架构的操作系统镜像openEuler-22.03-LTS-SP1-aarch64-dvd.iso,并上传到/home/iso
                                      • 命令行基于iso镜像文件创建虚拟机                
                                        ##创建一个CPU8核、内存16GB、磁盘空间400GB的虚拟机
                                        [root@localhost ~]# virt-install --name vm1 --ram=16384 --vcpus=8 \
                                                            --location=/home/iso/openEuler-22.03-LTS-SP1-aarch64-dvd.iso \
                                                            --disk path=/home/qcow2/vm1.qcow2,size=400 --bridge=br0 \
                                                            --graphics=none --console=pty,target_type=serial \
                                                            --extra-args="console=ttyAMA0 console=ttyS0" --autostart

                                        参数说明:

                                        • --name 指定虚拟机的名称
                                        • --ram 指定虚拟机的内存大小,单位是MB
                                        • --vcpus 指定分配给虚拟机的CPU核数
                                        • --location 指定ISO镜像文件所在的路径,支持使用网络资源路径,也就是说可以使用URL
                                        • --disk path 指定虚拟磁盘文件的路径及名称,size 则是指定该磁盘的可用大小,单位是GB
                                        • --bridge 指定使用哪一个桥接网卡,也就是说使用桥接的网络模式
                                        • --graphics 指定是否开启图形,示例如下:
                                          1.   --graphics none 不使用图形桌面
                                          2.   --graphics vnc,password=foobar,port=5910,keymap=ja 使用vnc显示图形桌面
                                          • --console 定义终端的属性,target_type 则是定义终端的类型
                                          • --extra-args 定义终端额外的参数
                                          • --autostart 指定虚拟机在宿主机开机后自动启动

                                            开始安装,配置语言、时区、安装源、网络、密码等信息。

                                            Installation
                                            1) [x] Language settings                 2) [x] Time settings
                                                   (English (United States))                (Asia/Shanghai timezone)
                                            3) [!] Installation source               4) [!] Software selection
                                                   (Processing...)                          (Processing...)
                                            5) [!] Installation Destination          6) [!] Network configuration
                                                   (Processing...)                          (Not connected)
                                            7) [!] Root password                     8) [!] User creation
                                                   (Root account is disabled)               (No user will be created)
                                            Please make a selection from the above ['b' to begin installation, 'q' to quit,
                                            'r' to refresh]: 5 
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]