我有一台 3 年前的计算机,配备 4GB RAM 双核/英特尔,以及 4 个可热插拔 SATA 硬盘(每个 500GB,2+2 为 LINUX RAID-1 配置 - 因此我有 2 个 500GB 镜像卷)。每个卷都充满了大约 60-70% 的数据 - 总共 600-700GB 数据。
现在,出于某种原因,我想将整个系统移到Freebsd 9.0使用 ZFS。
我还有另一个 1TB 驱动器,所以我想以 5 个驱动器的 zpool 结束(ZFS 上的根目录也是如此)-但需要保留来自 linux 卷的数据。因此,计划如下:
- 将不带 zfs 的 freebsd 安装到新的 1TB 硬盘(基本安装)中 - 或者在新驱动器上创建 ext3 分区 - 但我不确定稍后是否将其安装到 fbsd 中。
- 启动当前的 Linux,挂载 1TB freebsd 硬盘(或 ext3),并将 Linux 中的所有数据复制到新的 1TB 硬盘中
- 断开驱动器(确定)
- 在某些 RAID 配置中将新的 freebsd 安装到 4x 500GB HDD 中(请参阅下面的 qst)
- 从 ZFS 启动新的 freebsd
- 连接 1TB 硬盘
- 挂载 1TB 硬盘并将所有数据复制到新的 freebsd ZFS
- 制作 zfs 快照
- 最后将 1TB 驱动器添加到 zpool 中zpool 添加命令——我希望这是可行且正确的步骤。
这个方案可以吗?
当然,最好简单地备份所有数据,将 freebsd 安装到 5 个驱动器中,然后恢复 - 不幸的是,外部备份驱动器要到下周才会到货,我不想等待。
- 我需要照顾什么吗?
- 最后,配置 4 个驱动器 ZPOOL 并将另一个(更大的)驱动器添加到池中的“最佳实践”是什么?
提前感谢您的帮助评论。
附言:我还阅读了一些其他的 serverfault 问题,比如有没有关于在 FreeBSD 上使用 ZFS 作为 NAS 盒的推荐?,但也许我遗漏了一些要点……
答案1
首先我要声明:即使在 FreeBSD 9.0 中,ZFS 仍处于试验阶段,因此如果您丢失了所有数据,请不要抱怨或哭泣。换句话说,请确保您始终有一个有效且经过测试的备份方案。
首先:您将从 Linux 转到 FreeBSD,因此您将需要使用 tar 备份旧系统中的数据。只需将新硬盘安装在 /mnt 并将所有内容打包成 tar 即可。与第一点相关的第二个警告:您将把所有鸡蛋都放在一个篮子里。这很糟糕。在安装新操作系统时,您应该有两个单独的位置来移动数据。我建议购买便宜的外部 USB 驱动器,或者向朋友借一个。将数据打包成 tar 放到已格式化为 MSDOS 的新内部驱动器上,验证 tar 文件,然后将其解压到外部驱动器上。使用 find、xargs、md5sum 和 diff 将外部驱动器上的数据与原始数据进行比较,如下所示:
find olddirectory | xargs md5sum > olddata
find newdirectory | xargs md5sum > newdata
diff olddata newdata
如果你想保留其中一个 md5sum 文件以便日后检查,那么就把它放在 pen drive 或 pastebin.com 之类的地方。我知道这是一个漫长的过程,但我至少要告诉你正确的做法。当你忽略它们而事情变糟时,你就已经收到警告了。
接下来删除外部驱动器上的所有数据,并将 tar 文件复制到外部驱动器。现在对两个 tar 文件进行 md5sum 并确保它们匹配。
现在,在四个驱动器上安装带有 ZFS 根和 raidz 池的 FreeBSD 9.0。将您的数据解压到新系统上,并根据您之前保存的 md5sum 文件进行检查。
现在,使用 zpool add 添加第五个磁盘。在开始之前,请确保从头到尾阅读 zpool(8) 并理解所有内容。如果您有 Virtualbox,您甚至可能希望在实际执行此操作之前运行一个小模拟。您不需要将 vbox 中的虚拟驱动器设置为与要使用的驱动器一样大。FreeBSD 9.0 大约需要 4.5G,因此请创建一个 vbox 实例,其中包含 4 个 5G 的 HDD。在 ZFS 根配置中将 FreeBSD 9.0 安装到它们上。然后进入 vbox 配置并添加第五个 10GB 的磁盘。将这个新磁盘添加到 ZFS 池。
如果您在 vbox 中完成了所有需要做的事情,那么您在实际操作时就会有心理准备。此外,vbox 允许您对实例进行快照,因此如果您犯了错误,只需停止实例并返回快照即可。