我正在管理一台运行 CentOS 7 的服务器。我想在其上安装 Debian 10。我担心文件系统结构和潜在的数据丢失,因为系统的一部分当前位于 zfs 池上,而我对此的经验几乎为零。
系统共有12个物理存储单元。
- 2 个 SSD (
sda
,sdb
) 设置在具有安装点 的(当前降级的)软件 RAID 1 中/
。 - 8 个大型 HHD (
sde
-sdl
) 正在形成一个raidz2
ZFS 池,其中有四个文件系统,挂载点为/home
、/opt
、/usr
和/var
。 - 2 个 SSD (
sdc
,sdd
) 各有三个分区。两者中的第一个用作交换。两者的第二个分区形成 ZFS 镜像日志设备。两者的第三个分区都充当 ZFS 缓存。
我想保存 home 和 var 文件系统中的所有数据。我有一个如何开始的计划,但我不确定如何结束。关于这个过程我有三个问题。
我的想法是安装全部系统中的RAID由sda和sdb组成。在 Debian 安装过程中,我将选择两张光盘(现在sda
和sdb
)用作 RAID 的物理卷,并选择 RAID1 作为类型。然后,将所有系统安装在同一个 RAID 文件系统中,除了选择和sdc1
进行sdd1
交换,并保持sdc2
、sdc3
、sdd3
和sdd3
-不变。sde
sdd
安装完成后如下:
Q1:从 RAID 1 文件系统启动会有什么问题吗?
以前不是这样的,但是 Debian 安装指南说:
确保系统可以使用您计划的分区方案启动。一般来说
/boot
,当对根 ( ) 文件系统使用 RAID 时,需要创建一个单独的文件系统/
。大多数引导加载程序确实支持镜像(而不是条带化!)RAID1,因此可以选择使用例如 RAID5/
和 RAID1 。/boot
安装完成后,我想导入池。挂载点配置为/home
、/opt
、/usr
和/var
。
- Q2:当新安装的系统已占用安装点时,如何继续安装池中的文件系统?
另一种方法是运行 Live CD/USB 并在重命名新创建的/home
、/opt
和/usr
后导入池/var
。然后我可以将新的移动/usr
到池文件系统中(与 相同/var
),这样我在新系统中想要的一切都在池文件系统中。现在,
- 第三季度:如何将池设置为在没有 Live CD/USB 的情况下在下次启动时自动导入和安装?
谢谢。我希望这个问题不要太笼统(因为这确实是三个问题)。如果我可以做些什么来改进它,请告诉我。
答案1
在开始之前,我建议您在替代环境中执行类似的步骤。我有一个大部分是自动化的 vagrant 设置它建立了一个带有 zfsonlinux 和一些磁盘的 debian 实例。它有点过时了,但是如果不进行修改,它应该很快就能为您提供一个可以使用的环境。如果您觉得有需要并提出 PR,请随时将其更新到最新的 Debian。
回答您的个人问题:
使用 grub 时从 RAID1 引导没有问题。 Grub 很好地理解 RAID1 并会自动检测它。这dest/50setup-boot 脚本在我的存储库中演示了使这项工作可靠的特定命令。
我不建议从旧系统重新安装,
/usr
因为/var
这可能会破坏东西。导入池时,ZFSonLinux 将自动挂载文件系统,因此您需要在首次启动系统之前添加几个步骤来禁用此功能。那看起来像这样:zfs set canmount=off tank/usr zfs set canmount=off tank/var
或者,您可以更改安装点,以便您仍然可以参考:
zfs set mountpoint=/mnt/old-usr tank/usr zfs set mountpoint=/mnt/old-usr tank/var
如果您确实想
/usr
用新系统替换 ZFS 安装,您可以按照您的建议进行操作,但必须确保在启动时通过 initramfs 启用 ZFS。 vagrant 示例确实/
在 ZFS 上提供了 root ( ),因此您应该拥有所需的所有示例。关于
/home
,将其安装在新创建的主系统之上不应破坏事物,但它可能不会像您最初期望的那样工作,因为系统用户和旧文件系统不会达成一致(假设您不同意)使用外部用户管理系统(例如 LDAP)。您在这里有几个选择:- 保留旧系统
/etc/passwd
和/etc/groups
文件作为参考,然后当您启动到新系统时,您需要进行一些手动协调。 - 以与或挂载
/home
类似的方式更改旧的挂载点,然后手动进行协调。/usr
/var
该
/opt
路径不应引入任何问题,因为普通 Debian 系统不使用该路径,因此可以像以前一样自动挂载。- 保留旧系统
Live CD 方法几乎是此类重新安装的必然选择。例如,在
bootstrap/
我的存储库文件夹中,该host/
文件夹指的是实时环境,而dest/
指的是新安装的系统。为了在新系统中安装文件系统,您只需确保 zfsonlinux 已安装并在新系统上运行。这通常是在
zfs-initramfs
安装软件包时自动为您处理的。您可以使用以下命令仔细检查zfs
模块是否可用:/boot/initrd.img*
gunzip /boot/initrd.img-4.19.0-8-amd64 | grep 'usr/lib/libzfs.so'
总的来说,首先在模拟环境中获得一些经验将大大提高您在真实环境中成功完成此操作的机会。