我需要扩展服务器的磁盘容量。该池以 1Tb 磁盘启动,然后使用 2Tb 磁盘进行扩展。有超过 1Tb 的可用空间,即所有数据都可以轻松容纳 2Tb 部分,但目前分配在 1Tb 磁盘上。
实际上,这些磁盘分别是一对 1Tb 和一对 2Tb 上的硬件 (PERC) RAID1 阵列。
我想用 3Tb 替换这些 1Tb 磁盘。“一个接一个”的替换并不是一个真正的选择。原则上,这个物理 RAID 可以一个一个地替换磁盘,然后扩大阵列以填满磁盘。但是,我想避免这条路径,因为它会在磁盘冗余丢失时留下一些相当长的时间段。
我想将所有数据从 1Tb 中移出,然后将其删除,并替换为 3Tb。一切都在运行中完成,系统运行,停机时间为零。
使用 LVM,操作必须非常简单易懂:
- pvmove 从 1Tb 物理磁盘中分配的所有数据(RAID 术语中的 VD)
- vgreduce 从 vg 中删除该 pv 并 pvremove 删除 pv 元数据
- 使用 megacli 删除 1Tb 阵列(PERC 更名为 LSI/Avago MegaRAID SAS)
- 物理更换磁盘
- 使用 megacli 再次组装另一个阵列
- 创建一个新的 pv 并将其添加到 vg
这是我以前做的例行程序。每一步都很好理解,在每一步我都可以完全控制正在发生的事情,如果出现问题,我总是知道如何进行等等。
如何使用 ZFS 安全且有意识地执行相同的过程?
如果这很重要:
- 服务器是戴尔 PowerEdge R730
- 操作系统是 Proxmox VE 6.0,它基于 Debian 10.1。它是从 PVE ISO 映像安装的,即不是从 Debian 安装转换而来的。
- 系统不依赖于这个池,因为它是从组装到另一个池中的一组 SSD 运行的
- 该池托管一些不需要高性能的 VM 虚拟磁盘。但是,这些数据很有价值,如果丢失,我不能容忍。因此,程序应该清晰易懂
- 系统不断被用户使用,但他们会容忍数据迁移过程中的性能损失
除镜像池外,无法完成。