以 root 身份挂载 GEOM_ELI 加密 ZFS 池

Mounting GEOM_ELI Encrypted ZFS Pool as root

我有一个 3 磁盘 RAIDz1 池,在 GEOM_ELI 中用 AES128 加密,我从版本 8 开始就在 FreeNAS 中使用它。 zpool 有很多升级,总的来说我对 ZFS 很满意。

然而最近我对 FreeNAS 越来越失望。许多错误多年来一直没有修复。但总的来说,它 INSISTING 我使用闪存驱动器作为他们的 os,尽管其中 most 是只读的。 它仍然是单点故障,并且总是将启动时间延长几分钟。总之,我只想在这个池中使用 Vanilla FreeBSD。 我正在寻找更大的灵活性,并且我希望通过这个很棒的操作系统自学。

做一些更广泛的研究,我发现了很多关于将 FreeBSD 简单地安装到 ZFS 卷并将其挂载为 / 的教程 直到我做了更多研究并找到了一篇关于以 root 身份安装 zfs 加密卷的文章。后来我发现 FreeBSD 10 在安装过程中会这样做,至少可以说是很棒。

Tutorial I used

我用 VMWare 工作站制作了一个 VM,带有三个 2TB 驱动器,作为物理磁盘通过,并按照每个步骤进行操作,一切顺利。现在我已经更好地掌握了我正在执行的命令以及我为什么要执行这些命令,我​​想对一个已经存在的池执行此操作,其中已经有很多数据。

默认情况下,FreeNAS会在每个数据盘的前面创建一个2GB的SWAP分区。我删除了交换 space 并在每个驱动器上将其设为 1.5GB 分区,剩余 512MB 用于交换。我遵循了每一步,根据需要进行更改。 (我有 3 个磁盘,教程说的是 4 个,我的池名称是 foxhole,教程是 zroot。)我用 geom_eli 成功解密了我的卷并成功安装了它。

我没有跳过提供的任何步骤。我什至复制了我收到的每条命令,并在文本文件中对其进行了更改,以便它们适合我的情况。

这是我现在的问题。 最终重新启动以测试所有内容后,内核开始启动,然后我在 mountroot 终端吐口水。 geom_eli 似乎没有尝试解密我的根卷。我怀疑为什么。如果我错了,请纠正我。 在本教程开始时,我得到了为加密卷创建新 geom 的命令:

geli init -b -B /boot/zfs/bootdir/da0p4.eli -e AES-XTS -K /boot/zfs/bootdir/encryption.key -l 256 -s 4096 /dev/da0p4
geli init -b -B /boot/zfs/bootdir/da1p4.eli -e AES-XTS -K /boot/zfs/bootdir/encryption.key -l 256 -s 4096 /dev/da1p4
geli init -b -B /boot/zfs/bootdir/da2p4.eli -e AES-XTS -K /boot/zfs/bootdir/encryption.key -l 256 -s 4096 /dev/da2p4

因为我的卷已经存在,所以我无法执行 os 会创建“/boot/zfs/bootdir/daXp4.eli”文件的命令。

我真的只是在猜测这就是原因。 我在尝试执行时注意到了这一点:

mv bootdir/*.eli bootdir/boot/

给我"No Match."

我假设 those 会在池被解密时创建。

我为此道歉ost。我尽量提供尽可能多的信息,但不要提供太多。在过去的 18 个小时里,我一直在研究这个问题。好想有头脑清醒的人来看一看

如果我遗漏了任何有用的信息,请告诉我。

事实证明我是对的。 daXp4.eli 文件是必需的,因为它是每个磁盘的元数据。如果你愿意的话,一个参考点。

通过执行:

geli backup /dev/daXp4 /boot/daXp4.eli

它创建 geom 在启动时尝试解密所需的元文件。

我希望这对其他对此感兴趣的人有所帮助。 我现在有一个有 23 个磁盘的 NAS。 3 个 ZFS 卷,全部使用 geom_eli

加密