• Linux 虚拟化


    一、虚拟化开启

    1、检查服务器是否支持Linux虚拟化功能

    在Linux服务器上判断是否支持虚拟化功能,主要可以通过检查CPU的硬件虚拟化扩展和相应的内核支持来完成。以下是具体的检查步骤:
    
    • 1

    1.1 检查CPU支持的虚拟化技术

    首先,需要确认处理器是否支持硬件虚拟化技术,如Intel的VT-x或AMD的AMD-V。这可以通过查看/proc/cpuinfo文件来实现:
    
    • 1
    grep -E 'vmx|svm' /proc/cpuinfo
    
    • 1

    在这里插入图片描述

    vmx 表示Intel的VT-x技术。
    svm 表示AMD的AMD-V技术。
    如果命令返回结果,说明CPU支持虚拟化。如果没有返回结果,可能是CPU不支持虚拟化,或者虚拟化支持在BIOS中被禁用了。
    
    • 1
    • 2
    • 3

    1.2 检查BIOS设置

    如果上述命令没有返回任何结果,建议重启服务器并进入BIOS设置。在BIOS中查找相关的虚拟化支持选项(通常位于Advanced、Security或CPU Configuration菜单下),确保虚拟化技术(VT-x或AMD-V)被启用。
    
    • 1

    1.3 检查内核是否加载了虚拟化模块

    对于使用KVM作为虚拟化解决方案的系统,可以检查KVM内核模块是否已经加载。使用以下命令:
    
    • 1
    lsmod | grep kvm
    
    • 1

    在这里插入图片描述

    对于支持Intel硬件的系统,应看到kvm_intel。
    对于AMD硬件的系统,应看到kvm_amd。
    如果这些模块没有加载,你可以手动加载它们:
    
    • 1
    • 2
    • 3
    sudo modprobe kvm_intel  # 对于Intel处理器
    sudo modprobe kvm_amd    # 对于AMD处理器
    
    • 1
    • 2

    1.4 使用硬件虚拟化检测工具

    还有一些工具可以帮助检测系统是否支持硬件虚拟化,如virt-host-validate工具。这个工具通常包含在虚拟化软件包中,比如libvirt。使用以下命令安装和运行:
    
    • 1
    sudo apt install libvirt-daemon-system libvirt-clients  # Ubuntu系统
    sudo yum install libvirt  # CentOS系统
    sudo virt-host-validate
    
    • 1
    • 2
    • 3
    这个命令会运行一系列检测,输出结果将指示系统是否配置正确以支持虚拟化。
    
    • 1

    在这里插入图片描述

    2、在BIOS里开启ST-IOV

    通常位置为Advanced -> PCI Subsystem Settings -> SR-IOV Support 设置为Enabled,具体根据实际机器情况确定。
    SR-IOV(Single Root Input/Output Virtualization)是一种通过硬件来支持虚拟化的技术,它允许一个物理设备(如网络接口卡NIC或存储控制器)被多个虚拟机(VM)共享,同时减少虚拟化带来的性能损失。简单来说,SR-IOV帮助提高虚拟环境中的I/O效率和性能。以下是SR-IOV的主要工作原理和特点:
    物理和虚拟功能: SR-IOV技术使得单个物理设备能够表现为多个独立的虚拟设备(称为虚拟功能,VF),以及一个完整的物理功能(PF)。物理功能控制虚拟功能的配置,而虚拟功能可以直接分配给虚拟机使用。
    直接设备访问: 使用SR-IOV技术,虚拟机可以绕过传统的虚拟化层,直接与虚拟功能进行通信,这样可以显著减少延迟和CPU负载,提高数据传输的速度。
    降低中断和CPU使用: 通过允许虚拟机直接与硬件交互,SR-IOV减少了对Hypervisor的依赖,这意味着减少了中断处理和CPU资源的消耗。
    适用于高性能应用: SR-IOV通常用于需要高网络吞吐量或低延迟的应用,如高频交易、大数据分析和云计算基础设施等。
    要使用SR-IOV,硬件设备(如服务器的网卡)、主机操作系统和Hypervisor都必须支持SR-IOV标准。配置时,还需要在BIOS中启用SR-IOV,并在物理服务器上适当配置虚拟功能,以便它们可以被虚拟机正确识别和使用。
    通过这种方式,SR-IOV在保证硬件独立性和安全性的同时,有效地提高了虚拟环境中的资源利用率和I/O性能。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3、在BIOS里开启VT-d

    VT-d(Intel Virtualization Technology for Directed I/O)是Intel提供的一种硬件虚拟化技术,它允许虚拟机(VM)对硬件设备进行直接访问。VT-d可以提高虚拟机对硬件设备的操作性能,特别是在处理I/O密集型任务时,如网络服务或存储操作。
    
    • 1

    3.1 VT-d的核心特点和优势:

    1) 设备隔离和安全性:
    VT-d通过DMA(直接内存访问)重映射技术支持设备隔离,可以精确控制哪些内存和硬件资源对虚拟机可用。这种隔离提高了系统的安全性,防止恶意虚拟机访问或干扰其他虚拟机的资源。
    2) 性能提升:
    通过允许虚拟机直接访问物理硬件,VT-d减少了虚拟化的开销,特别是对于网络和存储I/O操作,从而提高了性能。
    3) I/O设备虚拟化:
    VT-d支持多种I/O设备的虚拟化,包括但不限于网络接口卡(NIC)和存储控制器。这使得每个虚拟机都可以有自己的设备实例,实现更好的性能和资源管理。
    4) 中断重映射:
    VT-d还支持中断重映射技术,它可以帮助管理和优化虚拟机的中断请求(IRQ),提高虚拟化话你就能够中的中断处理效率。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.2 如何启用VT-d:

    要使用VT-d功能,需要确保硬件(包括CPU和主板)支持VT-d,并且在BIOS中启用该功能。以下是启用VT-d的一般步骤:
    1)确认硬件支持:
    检查你的Intel处理器和主板是否支持VT-d。通常,最新的Intel处理器和主板都支持这一技术。
    2)访问BIOS设置:
    重启计算机并在启动过程中进入BIOS设置。这通常通过在计算机启动时按下Del或F2键实现。
    3)启用VT-d:
    在BIOS中找到虚拟化技术的相关设置,确保VT-d或者类似的“Directed I/O虚拟化”选项被启用。
    4)保存并退出BIOS:
    保存更改并重启系统。
    5)检查操作系统支持:
    确保你的操作系统和虚拟机管理程序(如VMware ESXi、KVM等)支持VT-d。大多数现代虚拟化软件都支持使用VT-d。
    通过启用并正确配置VT-d,你的虚拟化环境将能够更安全、更高效地使用硬件资源。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    4、iommu设置

    IOMMU(Input/Output Memory Management Unit)是一种硬件技术,用于提高在虚拟化环境中对设备的访问安全性和效率。它通过提供设备内存隔离和地址重映射,使得虚拟机可以直接和物理设备交互而不会影响到宿主机或其他虚拟机的安全性和稳定性。在Linux和其他支持IOMMU的操作系统中,配置IOMMU通常涉及以下几个步骤:
    
    • 1

    4.1 确认硬件支持

    首先,确保你的CPU和主板支持IOMMU技术。Intel的IOMMU实现称为VT-d,而AMD的则称为AMD-Vi或IOMMU。你可以通过查阅硬件手册或使用系统信息工具来确认。
    
    • 1

    4.2 BIOS/UEFI中启用IOMMU

    要启用IOMMU,需要进入BIOS/UEFI设置并找到相应的选项。这通常在“Advanced”或“Security”设置下,可能被称为“Intel VT-d”,“AMD IOMMU”或“Virtualization Technology for Directed I/O”。确保这些选项被启用。
    
    • 1

    4.3 操作系统中启用IOMMU

    在Linux系统中,你需要通过编辑引导加载器的配置文件来启用IOMMU。这通常涉及修改GRUB配置:
    对于Intel处理器:
    打开/etc/default/grub文件,并在GRUB_CMDLINE_LINUX_DEFAULT行添加intel_iommu=on。例如:
    
    • 1
    • 2
    • 3
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on"
    
    • 1

    在这里插入图片描述

    对于AMD处理器:
    同样的方法,但使用amd_iommu=on参数:
    
    • 1
    • 2
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amd_iommu=on"
    
    • 1

    4.4 更新GRUB配置

    修改完配置文件后,需要更新GRUB以应用更改:
    
    • 1
    sudo update-grub
    
    • 1
    或者在某些发行版上:
    
    • 1
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
    • 1

    在这里插入图片描述

    4.5 重启系统

    重启你的系统以应用更改。
    
    • 1

    4.6 验证IOMMU是否启用

    重启后,可以通过检查内核日志来确认IOMMU是否启用成功:
    
    • 1
    dmesg | grep -e DMAR -e IOMMU
    
    • 1

    在这里插入图片描述

    5. 验证vfio是否加载

    VFIO是一种支持硬件虚拟化的技术,它允许虚拟机直接访问硬件设备,例如通过PCI pass-through技术。当你配置虚拟机进行硬件直接访问时,比如使用SR-IOV或其他类型的设备直通(如GPU、网络接口卡等)时,你需要确保VFIO模块已经正确加载到系统中。
    lsmod | grep vfio 命令就是用来确认这一点,**注意重启后“lsmod | grep vfio”并不会有显示,只有虚拟机创建后才会加载启动vfio,看到显示**。
    
    • 1
    • 2

    在这里插入图片描述

    如果命令输出显示了VFIO相关的模块,比如 vfio_pci、vfio_iommu_type1、vfio_virqfd 等,这表明这些模块已经被加载,系统已经具备支持设备直通的能力。
    如果没有任何输出,这意味着VFIO模块可能还没有加载。在这种情况下,你可能需要手动加载这些模块(使用 modprobe vfio_pci 等命令),或检查系统是否支持VFIO功能。
    
    • 1
    • 2

    二、虚拟机安装

    2.1 界面方式安装虚拟机

    1)物理机执行virt-manager命令打开虚拟化图形工具
    
    • 1

    在这里插入图片描述

    2)点击创建一个新的虚拟机,如图,选择本地安装介质
    
    • 1

    在这里插入图片描述

    3)加载镜像位置路径(镜像上传到物理机上)
    
    • 1

    在这里插入图片描述

    4)选择内存大小,及CPU核心数(4G内存、8核)
    
    • 1

    在这里插入图片描述

    5)选择硬盘大小,根据实际需要选择
    
    • 1

    在这里插入图片描述

    可以选择默认文件系统目录(default)作为存储空间,也可以手动创建指定存储卷作为存储目录,硬盘大小根据实际使用需求设置。
    6)虚拟机命令及网络选择
    
    • 1
    • 2

    在这里插入图片描述

    网络可以先选择默认,后续修改为桥接方式,设备选择物理机使用网络
    7)虚拟机系统安装
    虚拟机系统安装为标准系统安装方式,安装完成后需要配置网路,因为使用桥接方式,虚拟机网络需要同物理机同一网段。
    
    • 1
    • 2
    • 3

    2.2 命令行安装虚拟机

    1) 基本准备
    需要安装:
    yum install –y qemu-kvm libvirt virt-install
    需要启动:
    sudo systemctl status libvirtd	//检查是否启动
    sudo systemctl start libvirtd		//启动
    2)创建一个qcow2磁盘,用于保存虚拟机硬盘数据
    qemu-img create -f qcow2 /home/data/centos7u4-node1.qcow2 20G
    文件大小和路径根据实际情况创建
    3)创建虚拟机
    virt-install --name centos7.8_virt0 --vcpus 8 --virt-type kvm --ram 4096 --location=/home/virt/CentOS-7-x86_64-DVD-2003.iso --disk path=/home/data/centos7u4-node1.qcow2 --network type=direct,source=eno1,source_mode=bridge,model=virtio,link_state=up --graphics none --extra-args="console=ttyS0"
    参数说明:
    --name:虚拟机名字
    --vcpus:指定cpu数
    --virt-type:创建类型为kvm
    --ram 或 --memory:内存大小,不同机器型号可能不同
    --location:镜像
    --disk path:第一步创建的虚拟机磁盘
    --network:指定为桥接方式,使用 macvtap网桥
    --graphics:图形化,是否开启,node不开启
    --extra-args:添加给内核额外的参数,在本地安装,console=ttyS0 指定安装过程显示在当前窗口
    --boot uefi: 这个选项指定虚拟机使用UEFI模式启动。默认不配置是传统模式
    4)开始安装
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    在这里插入图片描述

    5) 选择 1 进入语言设置界面
    
    • 1

    在这里插入图片描述

    6) 选择16 english 或其他选项
    
    • 1

    在这里插入图片描述

    7) 选择1,回车后返回主界面
    
    • 1

    在这里插入图片描述

    8) 接下来选择 2 进入 Time settings 时区设置
    
    • 1

    在这里插入图片描述

    9) 选择1设置时区
    
    • 1

    在这里插入图片描述

    10) 选择2 Asia亚洲
    
    • 1

    在这里插入图片描述

    11) 选择65 Shanghai,重新返回主界面
    
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/93b37623a32b4687b6708b428230704a.png)
    
    12) 选择 5进入系统安装位置
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    13) 这里可以看到 前面创建的虚拟机 20G,输入 C 下一步
    
    • 1

    在这里插入图片描述

    14) 这里默认为 2,使用全部空间,输入 C 进入下一步
    
    • 1

    在这里插入图片描述

    15) 这里默认为 3,使用LVM分区,输入 C 进入下一步,如果需要自定义分区,选择 1,然后输出C进入下一步。当前默认自动分区。完成后返回主界面
    
    • 1

    在这里插入图片描述

    16) 设置root用户名密码
    
    • 1

    在这里插入图片描述

    17) 设置其他用户名及密码
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    18) 完成后返回主界面,输入b 进入系统安装界面
    
    • 1

    在这里插入图片描述

    19)出现以下内容后,回车系统安装完成
    
    • 1

    在这里插入图片描述

    20) 可通过”virsh console 虚拟机名称“ 命令进入虚拟机字符界面,查看虚拟机名称命令”virsh list”查看虚拟机名称
    
    • 1

    在这里插入图片描述

    r、因虚拟机网络使用桥接方式,登录虚拟机后,配置和物理机同一网段ip后可以直接访问

    2.3 常用命令

    1)lspci 显示计算机的PCI设备信息
    安装: yum install pciutils
    2)virt-install 构建新虚拟机的命令行工具
    安装:yum install virt-install
    3)virsh系列命令
    virsh dumpxml name	查看虚拟机配置文件
    virsh start name	启动kvm虚拟机
    virsh console name	连接到虚拟机终端
    virsh shutdown name	正常关机
    virsh destroy name	非正常关机,相当于物理机直接拔掉电源
    virsh undefine name	彻底删除,无法找回,如果想找回来,需要备份/etc/libvirt/qemu的xml文件
    virsh edit name	    编辑虚拟机配置文件(编辑之后需要重启虚拟机才会生效)
    virsh list	        查看正在运行的虚拟机(在root账号或加sudo运行才能看到)
    virsh list --all	查看所有虚拟机(在root账号或加sudo运行才能看到)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    我和谷歌共成长——前端必备插件Vue.js devtools
    01-Docker部署MongoDB
    c++学习27qt(三)Qt自定义控件封装,事件处理,绘画和文件读写
    JS虚拟机JS加密技术:优缺点及案例研究
    物联网开发笔记(33)- 使用Micropython开发ESP32开发板之手机扫二维码远程控制开关灯(3)
    C++----智能指针
    全志A40i应用笔记 | 3种常见的网卡软件问题以及排查思路
    服务器搭建(TCP套接字)-fork版(服务端)
    el-form 中的数组表单验证(数组可动态添加删除)
    SpringBoot SpringBoot 原理篇 3 核心原理 3.5 启动流程【4】【5】【6】
  • 原文地址:https://blog.csdn.net/weixin_42831406/article/details/137935618