VM 转换与迁移
在合并硬件、保留遗留系统或在虚拟环境中进行升级测试时,您可能需要将物理磁盘转换或将现有系统迁移到 Unraid 上的虚拟机。这个过程适用于Linux和Windows系统,使您可以在Unraid服务器中作为VM运行您的安装。
:::note[Prerequisites]
- 您的 Unraid 服务器应满足虚拟化的最低硬件要求(见下表)。
- 源磁盘必须通过 SATA、USB 或作为未分配设备连接到您的 Unraid 服务器。
- 确保您的 array 或 cache pool 有足够的可用空间来容纳新的虚拟磁盘映像。
- 在开始转换或迁移过程之前,备份任何重要数据。
:::
硬件要求
| 组件 | 最低要求 | 建议以获得最佳性能 |
|---|---|---|
| CPU | 启用硬件虚拟化的64位(Intel VT-X/AMD-V) | 具有 VT-d/AMD-Vi 直通功能的多核 CPU |
| 内存 | 8 GB | 16 GB 或更多 |
| 存储 | SSD 或 NVMe cache pool 需要足够的空间 | 用于 VM 存储的专用 NVMe cache pool |
| 主板/BIOS | 启用虚拟化的UEFI | 启用IOMMU/VT-d/AMD-Vi的UEFI |
将物理磁盘转换为 VM
将现有的 Linux 或 Windows 系统迁移到 Unraid 服务器中的 虚拟机,可以节省硬件空间,保持旧系统运行或安全地测试新升级。
将物理磁盘转换为 VM:
- Linux
- Windows
步骤 1: 准备物理磁盘
- 通过 SATA 或 USB 将源磁盘连接到您的 Unraid 服务器。
- 登录 WebGUI (
http://tower或http://tower.local)。 - 点击主界面选项卡。
- 启动 array 如果尚未运行。
- 在 未分配设备 中找到您的磁盘。
- 请注意设备的字母(如,
sdb,sdc)和磁盘大小。您需要在您的 %%array|阵列%% 或 %%cache pool|缓存池%% 上至少有这个空间来放置新的 虚拟磁盘 。
步骤 2: 创建新的虚拟机
参考创建您的虚拟机指南,但有以下例外:
- 将 BIOS 设置为 OVMF。 确保为 最佳性能 指定 VirtIO 驱动程序 ISO。
- 将 VM 映像存储在 cache pool 上,而不是 array,以获得 最佳性能。
步骤 3: 将物理磁盘转换为 虚拟磁盘 映像
打开终端 (使用 SSH 或本地控制台) 并以 root 身份登录。
使用以下命令将物理磁盘转换为 虚拟磁盘 映像:
qemu-img convert -p -O raw /dev/sdX /mnt/user/[vdisk_share]/[vmname]/vdisk1.img
- /dev/sdX: 替换为步骤 1 中的设备字母 (例如
/dev/sdb) - [vdisk_share]: 您保存 %%VM|虚拟机%% 图片的共享位置
- [vmname]: 您想要的 %%VM|虚拟机%% 名称
命令分解:
qemu-img convert: 此工具用于磁盘映像转换。-p: 显示百分比进度。-O raw: 输出格式设置为 raw (Unraid 默认)。/dev/sdX: 源是您的 物理磁盘。/mnt/user/[vdisk_share]/[vmname]/vdisk1.img: 目标是 虚拟磁盘 映像。
等待操作完成。生成的 .img 文件将是您的 %%VM|虚拟机%% 的主磁盘。
步骤 1: 编辑您的虚拟机的 XML
-
Next, scroll down the XML and find the
<target>tag for the<disk>that has a<source>file set tovdisk1.img. It should look like this:
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='writeback'/>
<source file='/mnt/cache/vdisk_share/vmname/vdisk1.img'/>
<backingStore/>
<target dev='hda' bus='virtio'/>
<boot order='1'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk> -
更改
<target>标签中 bus 属性,从virtio改为ide。 -
Then, remove the entire
<address>line for that<disk>. -
更新后的 XML 应如下所示:
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='writeback'/>
<source file='/mnt/cache/vdisk_share/vmname/vdisk1.img'/>
<backingStore/>
<target dev='hda' bus='ide'/>
<boot order='1'/>
</disk> -
最后,点击 更新 保存您对 虚拟机 XML 的更改。
步骤 2: 从虚拟机内部安装 VirtIO 驱动程序(仅适用于 Windows 客户端)
- 打开 Windows 资源管理器,访问 VirtIO 虚拟 CD-ROM,查看其内容。
- 进入 Balloon 文件夹。
- 在该文件夹中,找到适合您的 Windows 操作系统版本 的子文件夹(例如,
w8.1)。 - 进入 amd64 子文件夹。
- 右键单击 balloon.inf 文件,然后从上下文菜单中选择 Install。 (需要启用文件扩展名可见性才能这样做。)
- 为每个以下文件夹重复这些步骤:
- NetKVM
- vioserial
- viostor
- 安装完驱动程序后,重新进入虚拟 CD-ROM,打开 guest-agent 文件夹。
- 双击 qemu-ga-x64.msi 以安装 QEMU/KVM 客户代理。
步骤 3: 将磁盘总线转换回 VirtIO
将物理磁盘迁移到 VM
您可以直接从 Unraid 虚拟机 (VM) 中的物理磁盘运行 Windows 系统。这种方法有助于在不转换为虚拟磁盘映像的情况下迁移现有的 Windows 系统。如需视觉演示,请查阅 Spaceinvader One 的教程:
如何在 Unraid 虚拟机中传递硬盘 、转换磁盘和测试性能 (YouTube)。
:::note[Prerequisites]
- 在开始之前备份您的 Windows 安装。
- 准备好空闲的 USB 闪存驱动器以进行恢复工具。
- 选择一个硬件准备工具,以通过修改驱动程序和硬件抽象层(HAL)来启用在虚拟化硬件上的 Windows 启动:
- Microsoft Sysprep(免费并内置于 Windows 8.1 及更高版本)
- Acronis True Image 2025(具有高级迁移功能的商用解决方案)
- 确保您的 Unraid 服务器有一个空闲的 SATA 或 NVMe 端口用于物理磁盘。
:::
步骤 1: 准备 Windows 磁盘以进行迁移
将Windows系统转移到新硬件上,无论是物理还是虚拟的,可能会因硬件差异导致启动失败。请使用下面的方法之一来准备您的Windows系统:
选项 A: Microsoft Sysprep(推荐 - 免费)
Sysprep 内置于 Windows 中,消除了独特的系统信息,准备在不同 硬件上使用 Windows。
- 暂时禁用任何杀毒软件。
- 清理不必要的用户配置文件和临时文件。
- 修复或删除可能阻止 sysprep 运行的任何问题 Microsoft Store 应用程序。
-
运行 sysprep:
-
以管理员身份打开命令提示符。
-
导航到 sysprep 目录:
cd C:\Windows\System32\Sysprep -
执行 sysprep 进行常规化:
sysprep.exe /generalize /shutdown /oobe -
系统将常规化安装,然后关机。
-
-
在关机后将磁盘安装到您的 Unraid 服务器中。
选项 B: Acronis True Image 2025(商用)
Acronis True Image 2025 带有通用恢复功能,可协助硬件迁移。
- 下载并安装 Acronis True Image 2025。
- 使用附带工具创建可启动恢复媒体:
- 选择类似 Windows 的界面。
- 选择与您的 Windows(32 位或 64 位)匹配的体系结构。
- 从 Acronis 恢复媒体启动您的 Windows 系统。
- 按照屏幕说明将Universal Restore应用到您的Windows磁盘上。这将更新驱动程序和HAL,以便更好地兼容虚拟化硬件。
- 关闭系统并将磁盘安装到您的 Unraid 服务器中。
步骤 2: 在 Unraid 中识别物理磁盘
- 登录 WebGUI (
http://tower或http://tower.local)。 - 进入主界面选项卡。
- 启动 array 如果尚未运行。
- 在未分配设备中找到您的磁盘。
- 注意设备字母(例如,
sdb、sdc),以在 VM 配置中使用。
步骤 3: 创建新的虚拟机
- 转到WebGUI中的**VMs**选项卡。如果缺少该选项卡,请确保启用虚拟化并满足硬件要求。
- 点击添加 VM。
- 遵循创建您 自己的虚拟机指南,使用以下设置:
- 设置 BIOS 为 SeaBIOS(如果 SeaBIOS 启动失败,请尝试 OVMF)。
- 保持 OS 安装 ISO 为空。
- 指定 VirtIO 驱动 ISO 以优化启动后的性能。
- 对于主 virtual disk ,选择任意位置和大小(将在下一步中替换)。
- 取消选中 创建后启动 VM。
步骤 4:编辑虚拟机的 XML
您 需要修改 VM 的 XML 配置,以连接您的物理磁盘到 virtual machine。
-
从 VMs 标签页中,点击 VM 图标,然后从上下文菜单中选择 Edit XML。
-
向下滚动XML,找到用于主虚拟磁盘的现有
<disk>条目。通常指向.img文件,看起来像这样:
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='writeback'/>
<source file='/mnt/cache/vdisk_share/vmname/vdisk1.img'/>
<backingStore/>
<target dev='hda' bus='virtio'/>
<boot order='1'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>将此块替换为以下内容,其中
sdX为设备字母,或者更好的使用/dev/disk/by-id/[your-disk-id]以便更可靠的设备分配(参考 [Unraid Docs:在 VM 中使用物理磁盘]):
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='writeback'/>
<source dev='/dev/disk/by-id/[your-disk-id]'/>
<target dev='hdd' bus='sata'/>
</disk>如果您的磁盘是 IDE,将总线从 "SATA" 更改为 "IDE"。
使用
/dev/disk/by-id/优于/dev/sdX以确保即使在重启或硬件更换后磁盘分配保持一致。 -
点击 Update 保存您的 XML 更改。
步骤 5:安装驱动程序
- 启动您的 VM。
- 进入 Windows 后,右键单击开始菜单,选择 设备管理器 以打开它。
- 查找带有黄色感叹号标记(表示缺少驱动程序)的设备。右键单击每个并选择更新驱动程序。
- 选择 在我的计算机上浏览驱动程序。
- 指向挂载 VirtIO 驱动 ISO 的驱动器(通常为 D: 或 E:)。
- 确保 包括子文件夹 被勾选,然后点击 下一步。
- 对于缺少驱动器的设备重复此过程,通常包括:SCSI控制器、以太网、Balloon 和串行设备。
如果您使用安装自己驱动程序的软件(例如杀毒程序),请记住在迁移后重新安装这些应用程序。
从 Xen 到 KVM 的迁移
Unraid 从早期的 6.x 版本开始支持 Xen,但在 6.2 版本(2016 年 9 月)后弃用并最终完全移除。本迁移指南适用于从非常旧的 Unraid 安装(2017 年之前)升级到现代版本的用户。
Xen 虚拟机管理程序是一个虚拟化平台,允许多个操作系统在相同硬件上运行。在 Unraid 中,Xen 历史上用于虚拟机,但现在KVM是标准。迁移从Xen到KVM是利用现代Unraid功能、实现硬件直通和确保与当前版本兼容的必要步骤。
将VM从Xen迁移到KVM的过程根据VM是否设置为半虚拟化(PV)或硬件虚拟化(HVM)客户机而有所不同。本指南专门针对使用Xen的GPLPV驱动程序的Windows VM进行转换,因为它们需要特殊处理。
在开始此过程之前,请始终备份您的Xen虚拟磁盘。并在备份上测试您的迁移以防止数据丢失。
Windows 转换步骤
要将Windows VM从Xen转换为KVM,请按以下步骤操作。记住在开始前,从您的Xen域配置中移除任何PCI设备直通。这些设备可以在迁移完成后放回。
步骤 1:确定您的 VM 是否使用 Xen 的 GPLPV 驱动程序 -,点击展开/折叠
步骤 2:为 GPLPV 驱动程序移除准备 Windows - 点击展开/折叠
- 以管理员身份打开命令提示符(开始菜单 → 输入
cmd→ 右键单击 命令提示符 → 选择 以管理员身份运行)。 - 输入以下命令:
bcdedit -set loadoptions nogplpv - 重启您的 VM。
步骤 1:确定您的 VM 是否使用 Xen 的 GPLPV 驱动程序 -,点击展开/折叠
重启后,使用 Xen Project Wiki 中的全面手动移除过程从系统 中完全清除所有 Xen GPLPV 驱动程序。
:::提示 如果您不使用 GPLPV 驱动程序,可以跳过接下来的几个步骤,并从进入 KVM 模式部分继续。 :::
步骤 2:为 GPLPV 驱动程序移除准备 Windows - 点击展开/折叠
-
确保启用了 VM 管理器:
- 前往 设置 → VM 管理器。
- 设置 启用 VM 为 是。
- 通过从下拉菜单中选择最新 Windows VirtIO 驱动程序 ISO,下载并点击 下载。
-
导航至 VMs 标签并点击 添加 VM。
-
选择与您的原始 Xen 虚拟机匹配的 Windows 版本。
-
配置基本设置:
- 名称:为您的 VM 指定一个描述性的名称。
- VirtIO 驱动程序 ISO:选择您刚刚下载的版本。
-
在 主 vDisk 位置下:
- 浏览并选择您现有的 Xen 虚拟磁盘。
-
添加一个 临时第二 vDisk:
- 点击绿色加号。
- 将大小设置为 1M (这将在首次启动时强制 IDE 总线兼容性)。
- 为位置选择任意临时目录(稍后将移除)。
-
其余的图形和声音设置保持默认值,然后点击 创建。
-
立即强行停止 VM:
- 点击 VM 图标并选择 强制停止。
-
编辑 VM 配置:
- 点击 VM 图标并选择 编辑。
- 使用右上角的切换按钮切换至 XML 视图。
-
修改主要磁盘 XML:
- 找到您的主要虚拟磁盘的
<disk>部分。 - 移除整个
<address>行。 - 在
<target>标签中将bus='virtio'修改为bus='ide'。 - 点击 Update。
- 找到您的主要虚拟磁盘的
:::提示[为何使用临时磁盘?]
1MB 的临时磁盘强制 Unraid 将主磁盘分配为 hda (IDE) 而不是 vda (VirtIO),这使 Windows 可以在没有 VirtIO 驱动程序的情况下启动。该临时磁盘将在驱动程序安装后移除。 :::
步骤 5:安装 VirtIO 驱动程序 - 点击展开/折叠
- 从 VMs 标签启动 VM。
- 通过点击 VM 图标连接 VNC 并选择 使用控制台 (VNC) 启动。
- 在启动过程中:
- Windows 将检测到新硬件但可能无 法安装驱动程序。
- 在提示时选择“以后再重启”。
- 打开 设备管理器(按 Win+X 并选择设备管理器):
- 为 其他设备 下列出的每个设备安装驱动程序(例如以太网控制器、PCI设备等):
- 右键点击设备并选择 更新驱动程序。
- 选择 在我的计算机上浏览驱动程序。
- 定位到 VirtIO ISO 驱动(例如,'D:')。
- 选择 包含子文件夹。
- 若有提示,接受 始终信任 Red Hat。
- 为 其他设备 下列出的每个设备安装驱动程序(例如以太网控制器、PCI设备等):
- 安装 QEMU guest agent:
- 打开文件资源管理器并导航到
D:\guest-agent\。 - 双击
qemu-ga-x64.msi。
- 打开文件资源管理器并导航到
- 关 闭 VM。
步骤 4:创建新 KVM 虚拟机 - 点击展开/折叠
- 编辑 VM:
- 更新 VM:
- 点击 Update 保存更改。
- 正常启动 VM。
- 在 设备管理器 中验证:
- (可选)启用 VirtIO 以获得更好的性能:
- 编辑 VM 并切换到 XML 视图。
- 将主磁盘的
bus从ide改为virtio。 - 点击 Update 并重启 VM。
:::提示[为何使用临时磁盘?]
1MB 的临时磁盘强制 Unraid 将主磁盘分配为 hda (IDE) 而不是 vda (VirtIO),这使 Windows 可以在没有 VirtIO 驱动程序的情况下启动。该临时磁盘将在驱动程序安装后移除。 :::
- 从 ISO 重新安装 VirtIO 驱动程序。
- 检查 Windows 更新,可能会提供更新的驱动程序。
- 访问 Red Hat VirtIO Drivers 页面以获取最新版本。 :::