openSUSE 快速虚拟化指南

openSUSE 快速虚拟化指南(上)—— QEMU/KVM

相关内容已经添加至:
https://zh.opensuse.org/KVM


本文是……

笔者的话:

实际上,KVM 的配置和使用并没有像 Arch Wiki 描述的那么繁琐(使用大量指令),SUSE 为 openSUSE 用户提供了一整套完善的虚拟化解决方案和详尽的文档,即使你对于终端不怎么熟悉,也能愉快地使用 KVM ,这应该也是 openSUSE 被 Arch Wiki 认定为对新手友好的原因。

既满足了非技术的用户的易用需求,又能满足技术用户的专业需求。

注意:

  • VirtualBox 也是一个不错的虚拟机解决方案 ;
  • 你应当具备一定的英语阅读理解能力以便于出现问题的时候可以翻阅官方的虚拟化手册以寻求解决方案;
  • 不推荐使用 Xen 。

参考:

推荐阅读:


准备

1. 检查可用性

打开终端,运行如下指令:sudo LC_ALL=C lscpu | grep Virtualization
检查输出结果,例如:Virtualization: VT-x
对于 Intel 处理器来说是 VT-x ,对于 AMD 处理器来说是 AMD-V ;否则你的机器不支持虚拟化。

2. 安装必要的包

  • 运行 sudo zypper in libvirt ,安装 libvirt
  • 打开 YaST ,点击虚拟化,然后点击 “安装 Hypervisor 和工具” 。勾选 KVM 工具 和 KVM 服务器,然后等到 YaST 自动安装并校验所有包;
    如果你已经安装了 KVM 相关组件,那相应的选项会变成不可点击的灰色。

3. 准备安装镜像

4. 新建虚拟机

首先,打开开始菜单,搜索 KVM,找到 “虚拟系统管理器”,(你可以将其添加到收藏夹以便于使用。)点击启动该程序(需要 root 权限);
然后,点击 “文件” 下方的电脑小图标,创建虚拟机:

然后,勾选本地安装介质(计算机架构默认是 x86_64),你也可以选择网络安装,但是你必须保证 ISO 文件的镜像下载地址是正确无误的。

在步骤 2 中,点击 “浏览” ,在弹出的 “定位 ISO 介质卷” 窗口中,点击 “本地浏览” ,在文件管理器中找到你下载的镜像。然后点击 “前进” ,进入步骤 3

在步骤 3 中,你可以调整虚拟机可以使用的内存大小和 CPU 数(你可以使用默认值),点击 “前进” ,进入步骤 4

在步骤 4 中,你可以调整虚拟机的存储空间,你可以使用默认值(KVM 创建的储存类似于 VirtualBox 的动态分配的 VDI),点击 “前进” ,进入步骤 5,然后点击完成(KVM 会在配置完成后自动启动虚拟机的安装,但你可以在步骤 5 勾选默认未勾选的配置选项,在自动启动安装前进行对虚拟机的自定义配置)。

接下来的操作步骤请参考具体的系统安装教程。

4.1 自定义虚拟机位置

KVM 虚拟机文件默认的存放位置是 /var/lib/libvirt/images

在新建虚拟机的步骤 4 中,勾选 “选择或创建自定义储存”,然后点击下方的 “管理”,

在弹出的 “定位或创建储存卷” 窗口中,点击左下角的 “+” ,进行添加池,

再在又弹出的 “添加新储存池” 窗口中,将目标路径更改为你所希望虚拟机存放的文件夹的路径,池的类型默认是文件系统目录,你应当命名一个可以和其他池区分彼此的名称,然后点击保存。

点击右侧的池列表,选择你刚刚创建的池,然后点击 “详情” 页中的 “+”,创建新卷,名称自选,容量调节为你认为合适的值或默认值。点击完成。

然后选择你新建的卷,进入下一步。

5. 关闭虚拟机

注意,如果你直接点击虚拟机页面的关闭按钮,KVM 是不会关闭虚拟机的,它只会认为你关闭了远程连接(VNC);直接关闭虚拟系统管理器也不会关闭虚拟机(你只是关闭了 KVM 的前端页面)。

假设你上面两个操作都做了(Virtualbox 的逻辑),你得重新打开虚拟机管理器,右键点击正在运行虚拟机,然后选择 “关机” ,如果关不掉(可以考虑强制关机,但是会丢失数据),你应当用鼠标双击正在运行的虚拟机,打开虚拟机的虚拟屏幕,在虚拟机内执行关机操作。

5.1 保存/重载虚拟机

如果你需要保存当前虚拟机的进度以便于下次启动虚拟机的时候继续工作,你应当点击菜单栏中 关闭虚拟机 按钮右侧的倒三角符号,展开菜单,然后选择 “保存” 。这样 KVM 会把虚拟机的内存保存到储存中,并自动关闭虚拟机。

  • 注意,在保存虚拟机后,请勿重启虚拟机或者启动虚拟机,以免发生因为同步错误而导致重载失败。

点击打开虚拟系统管理器,双击你之前保存的虚拟机,在弹出的窗口中(显示客户机未运行),点击左上方的 “虚拟机”,在展开的菜单中,点击恢复,进行虚拟机的重载。

5.2 删除虚拟机

右键点击所要删除的虚拟机,默认删除的只有虚拟机的文件,用于安装系统的源镜像默认不会删除。

6. 其他

6.1 虚拟网络未激活

如果默认的虚拟网络丢失之后,可以采用下面的方法重新加载和激活:
virsh net-define /usr/share/libvirt/networks/default.xml
标记默认网络自动启动:
virsh net-autostart default
启动默认网络:
sudo virsh net-start default

6.2 USB 设备重定向错误

如果你参照网上教程或者官方手册后,依旧无法使用 USB 重定向把 U 盘重定向到虚拟机中。你可以采取如下操作,将 USB 设备直接装入虚拟机:

首先,打开虚拟机页面,点击左上方小电脑图标(显示图形控制台)右侧的感叹号(显示虚拟硬件详情)

然后,点击左下角的 “添加硬件",在弹出的 “添加新虚拟硬件” 窗口的左侧列表中选择 USB 主机设备,接着在右侧列表中点击你的 U 盘(例如:002:002 SanDisk. Ultra Flair,这些 USB 主机设备的名称都可以很容易地和你的物理硬件一一对应。),点击完成。

然后你就可以在虚拟机中看到新添加的可移动储存设备。

  • 该操作无需重启虚拟机
  • 官方手册与之不同之处在于选择设备的时候是选择 ” USB 重定向 “
  • 在虚拟机硬件详情页面右键删除你新添加的 USB 主机设备即可将 USB 设备从虚拟机中释放出来。

可参考的其他解决方案:

6.3 鼠标捕获

KVM 虚拟机会自动捕获点击虚拟屏幕的鼠标光标,如果你需要取消该操作,可以使用 L-Ctrl + L-Alt 快捷键组合取消鼠标捕获。


7. 为虚拟机扩充存储空间 —— KVM 虚拟机存储管理简单实例

  • 现有一个虚拟磁盘空间为 20 GB 的虚拟机,需要将存储空间增加 100 GB。

打开虚拟机的连接详情,在存储页面找到空闲空间大于 100 GB 的池,创建新卷。

在虚拟机的硬件详情中,使用刚刚创建的新卷添加新的存储硬件,其余值设置为默认值。

启动系统后,可以在文件管理器中看到新添加的存储硬件,但是不能直接使用。

打开 YaST ,启动磁盘分区模块 ,选中新添加的 100 GB 磁盘,执行格式化操作(分区角色选择为数据和 ISV 应用程序,文件系统为 XFS)。

打开终端,执行如下的指令:
sudo chown -R 用户名:用户组 目录 ,例如 sudo chown -R bh:users /run/media/bh
用户名为非 root 用户名,用户组通常是 users ,目录则具体取决于磁盘挂载在哪个目录之下。

4赞

QEMU/KVM

本节内容详见: Managing Storage


虚拟机的储存管理

1. 池与卷

打开 虚拟系统管理器,单击你的虚拟机,点击上方的 “编辑” ,然后点击 “连接详情”,在弹出的新窗口中,点击 “储存” ,然后你可以看到如下的界面:

如上图,左侧是池的管理界面,右侧是卷的管理界面。
左下角的四个按钮分别是,新建池、启动池、停止池、删除池;具有新建、启用、停止(屏蔽)和删除池的功能。如果你想要使用某个卷,那卷所在的池必须处于活动状态。
在界面的 “卷” 字样的右侧,有三个按钮分别是,创建新卷、刷新卷列表和删除卷;用于新建和删除卷,与刷新列表。

  • 管理器可能不会自动刷新卷列表,这时你需要手动刷新列表。
  • 勾选 “引导时”,可以让虚拟机在启动时就能自动挂载卷。

1.1.1 存储卷

存储卷是可以分配给客户的存储设备 – 虚拟磁盘或 CD/DVD/软盘镜像。在物理上(在虚拟机主机服务器上),它可以是一个块设备(分区、逻辑卷等)或一个文件。

1.1.2 存储池

存储池是虚拟机主机服务器上的一种存储资源,可以用来存储卷,类似于台式机的网络存储。物理上它可以是以下类型之一:

  • 文件系统目录 (dir):一个用于存放图像文件的目录。文件可以是支持的磁盘格式之一(raw 或 qcow2),或 ISO 映像。
  • 物理磁盘设备(disk):使用一个完整的物理磁盘作为存储。为添加到池中的每个卷创建一个分区。
  • 预格式化块设备 (fs):指定一个与文件系统目录池相同的分区(用于存放镜像文件的目录)。与使用文件系统目录的唯一区别是,libvirt 会负责挂载设备。
    ……

2. 池管理

虚拟机管理器的 “存储管理器” 可让你在池中创建或删除卷。您也可以暂时停用或永久删除现有的存储池。SUSE 目前不支持更改池的基本配置。

2.1 其他类型

Typedisk

    目标路径。设备所在的目录。默认值/dev 通常适合。

    Format(格式):设备分区表的格式。设备分区表的格式。使用自动通常应该可以。如果不行,请在虚拟机主机服务器上运行命令 parted -l 获取所需格式。

    源路径:设备的路径。设备的路径。建议使用来自 /dev/disk/by-* 的设备名称,而不是简单的 /dev/sdX,因为后者可以改变(例如,在添加或删除硬盘时)。您需要指定类似于整个磁盘的路径,而不是磁盘上的分区(如果存在)。

    构建池。激活此选项可格式化设备。请小心使用 -- 设备上的所有数据都将丢失! 

Typefs

    目标路径。VM 主机服务器文件系统上的挂载点。

    格式:设备的文件系统格式。设备的文件系统格式。默认值 auto 应该可以使用。

    源路径:设备文件的路径。设备文件的路径。建议使用来自 /dev/disk/by-* 的设备名称,而不是 /dev/sdX,因为后者可能会改变(例如,在添加或删除硬盘时)。

……

注意!

  • 删除基于本地文件系统目录、本地分区或磁盘的存储池不会影响当前连接到客户机的这些池中卷的可用性。
  • 如果删除池,位于 iSCSI、SCSI、LVM 组或网络导出目录类型的池中的卷将变得无法从 VM 客户机访问。虽然卷本身不会被删除,但 VM 主机服务器将不再能访问资源。
  • 在创建足够的新池或直接从主机系统挂载/访问这些资源时,iSCSI/SCSI 目标或网络导出目录上的卷将重新变得可访问。
  • 删除基于 LVM 组的存储池时,LVM 组定义将被清除,并且 LVM 组将在主机系统上不再存在。该配置不可恢复,并且该池中的所有卷都将丢失。

2.2 创建卷

你可以使用存储管理器创建新卷,或在向客户机添加新存储设备时创建。无论哪种情况,请从左侧面板选择存储池,然后单击创建新卷。

然后为映像指定名称并选择映像格式。SUSE 目前仅支持 raw 或 qcow2 映像。后一个选项在基于 LVM 组的池上不可用。

在 “容量” 旁边,指定磁盘镜像允许达到的最大大小。除非您使用的是 qcow2 映像,否则您还可以为储存卷配额设置一个应初始分配的数值。如果这两个值不同(和池的可用空间相比),就会创建一个按需增长的映像文件(类似 VirtualBox 的动态 VDI)。

对于 qcow2 镜像,你可以使用 “后备储存” ,指定另一个卷,然后,新创建的 qcow2 镜像将只记录对基础镜像所做的更改。

点击完成,开始创建卷。

1赞

openSUSE 快速虚拟化指南(下)—— VirtualBox

本文是……


1. 准备

1.1 安装 VirtualBox

运行下列指令进行安装 VirtualBox :
sudo zypper in virtualbox

1.2 添加用户至 vboxusers

打开 YaST ,找到并打开 用户和组管理 ,然后点击左下角的 编辑 ,在新窗口中点击 细节 选项卡,在右侧的列表中找到并勾选 vboxusers ,确认保存退出,最后重启电脑。

1.3 安装扩展包

打开浏览器搜索:virtualbox enhancement pack ,进入 VirtualBox 的官网,找到并下载 VirtualBox 6.1.18 Oracle VM VirtualBox Extension Pack

打开 VirtualBox ,点击 管理 ,再点击 全局设定 ,再点击 扩展,再点击右侧的 添加新包 的小图标,安装你刚刚下载保持的扩展包文件。

  • 首次打开 VirtualBox 会提示用户是否启用 USB 功能(这可能会带来安全风险,但是它带来的便利值得这么做),个人建议可以使用该功能。

1.4 准备 ISO 镜像

2. 创建虚拟机

  • 将鼠标光标停留在某个选项上会显示该选项的简易使用说明。
  • 注意,请将虚拟机安装在固态硬盘分区中以提高虚拟机的性能。
  • 如果你的根目录存放在固态硬盘且有剩余空间(且你拥有一个独立的 /home 分区(非固态硬盘)),你可以参考如下步骤创建一个文件夹:

bh@bogon:~> cd / # 移动到根目录
bh@bogon:/> sudo mkdir vm # 创建一个名为 vm 的文件夹
bh@bogon:/> sudo chown bh:users vm # 将该文件夹的控制权限赋予给普通用户(bh)
bh@bogon:/> ls
bin boot dev etc home lib lib64 mnt opt proc root run sbin srv sys tmp usr var vm
bh@bogon:/> exit

打开 VirtualBox ,点击 新建 ,输入虚拟机的名称(VirtualBox 会根据你输入的名称快速筛选虚拟机的版本和类型),点击下一步。

  • 此时,你可以将 文件夹 修改为你刚刚创建的文件夹的路径。

内存大小建议最小 2048 MB ,具体的最低配置详见你所安装的系统版本的最低配置要求。点击下一步。

选择默认的 现在创建虚拟硬盘 ,类型可选为 VDI ,为了向外兼容,你可以考虑其他格式,具体相见其他虚拟机的使用文档。点击下一步,选择 动态分配 ,大小建议 20 GB 起步,具体的最低配置详见你所安装的系统版本的最低配置要求。点击下一步。

3. 配置虚拟机

在 VirtualBox 的首页,点击 设置 ,点击 系统 ,在 主板 页面,你可以点击勾选 启用 EFI(某些系统需要用户启用 UEFI ,例如 Arch Linux)。在 处理器 页面,你可以更改虚拟机使用的 CPU 核心数。

  • 给虚拟机分配过多的资源会导致宿主机卡顿。
  • 你可以修改该页面中的启动顺序来改变虚拟机启动时引导设备的顺序。
  • KVM 会在系统安装完成后自动禁用系统镜像文件,让用户可以直接重启进入系统;VirtualBox 需要用户手动移除虚拟盘片。

显示 中,将 显存大小 拉满,可以考虑是否为虚拟机启用 3D 图形加速(具体取决于你的硬件性能)。

  • 如果你遇到无法调节虚拟机屏幕分辨率的问题,你可以在关闭虚拟机后,更换虚拟机使用的虚拟显卡或者关闭 3D 图形加速。

存储 中,点击 没有盘片 ,点击 分配光驱 右侧的光碟小图标,再点击 选择虚拟盘 ,找到并选中你准备好的系统镜像文件。

USB 设备 中,点击右侧的 添加一个 USB 筛选器 ,勾选你插入宿主机的 USB 设备。

  • 该步骤为可选操作。
  • 一旦启动虚拟机,你插入宿主机的 USB 设备就会自动被重定向到虚拟机中,并且在虚拟机关机前,你都不能在宿主机访问该 USB 设备。

共享文件夹 中,点击右侧的 添加共享文件夹 ,点击 共享文件夹路径 右侧的倒三角符号,点击 其他 ,选择一个文件夹用于共享文件。然后勾选 自动挂载

  • 该步骤为可选操作。
  • 共享文件夹可以实现主宿机间文件的实时交流
  • 请勿将虚拟机的任何程序或者程序所使用的文件夹安装或存放到共享文件夹中。
  • 虚拟机在共享文件夹所创建的,非你手动创建的文件,基本可以在使用完虚拟机后删除。

如果你在配置虚拟机的时候,没有指定使用的系统镜像文件。虚拟机在启动的时候会提醒你选择一个镜像文件。
点击右侧的 选择一个虚拟光盘文件 ,再点击 注册 ,找到并选中你下载的光盘文件,点击你新添加的镜像文件,再点击 选择 ,确定无误后启动虚拟机。

4. 安装系统

5. 杂项

Virtualbox 会自动捕获用户的鼠标光标,你可以按 右 Ctrl 取消捕获。按 右 Ctrl + F 进入全屏。

为了能够让你的虚拟机的识别你的 USB 设备,你需要安装增强功能:点击上方的 设备 ,再点击 安装增强功能

2赞

你觉得我们要不要加一个新的 category → “容器和虚拟化” -> Docker, Systemd-nspawn, Podman,VBox, KVM, Xen, Vmware etc…

3赞

现在已经有了 KVM , VirtualBox , Flatpak ,Docker

差不多可以凑一个分类了。

https://zh.opensuse.org/Category:SDB:容器和虚拟化

Xen 就算了,这东西都被 RedHat 抛弃了。Vmare 也一样,毕竟没钱买许可证。


看了一下 wiki ,觉得这篇文章估计是没办法覆盖到相关词条上,

中文 wiki 上关于 VirtualBox 写的挺详细的,只需要翻新一下就行了。

本主题在最后一个回复创建后60分钟后自动锁定。不再允许添加新回复。