第八章:安装到ZFS

学习ZFS的整个要点是在机器上使用文件系统。让我们讨论一下在ZFS上安装FreeBSD 10。

如果您必须安装一整套FreeBSD机器,例如在服务器场,建议使用PC-BSD安装程序。像我们在这里演示的脚本对于偶尔安装一些机器很好,但如果您是按机架配置机器,那么您确实需要一个基于PXE的安装程序。

您的硬件限制了您的选择。除了极少数例外,笔记本电脑只有一个硬盘驱动器。运行FreeBSD意味着使用单个条带化虚拟设备池进行存储。如果您有数百个磁盘,则需要考虑如何分隔池。

当您有许多磁盘时,请将操作系统与数据分开。FreeBSD和一个很好的附加软件选择非常适合镜像池或RAID-Z。您不需要RAID-Z3来仅用于操作系统!如果您有数百个数据存储磁盘,请为操作系统和数据使用单独的池。有了数百个磁盘,Lucas想要几个单独的池,但他是个老顽固。Jude会把它们全部倒进一个大池子里。唯一错误的选择是为你做更多的工作。

本章假设您熟悉GPT分区、FreeBSD工具(如 gpart(8) )和FreeBSD分区类型。如果不是,请查看FreeBSD文档,或者阅读 《FreeBSD Mastery:Storage Essentials》。(FMSE 还涵盖安装脚本和其他高级安装技术。)

安装基于ZFS的系统需要配置存储池、分配数据集并将FreeBSD安装到数据集。您可以在每个步骤中做出单独的选择,因此我们将分别考虑每个步骤。

但从参考FreeBSD安装开始。

第八章:安装到ZFSFreeBSD 参考安装关于FreeBSD14.1自定义ZFS安装分区磁盘分区创建池数据集关于FreeBSD14.1安装后设置手动安装FreeBSD后记

FreeBSD 参考安装

在安装自定义FreeBSD系统之前,请安装一个小型FreeBSD ZFS虚拟机作为参考平台。这提供了关于标准FreeBSD安装的许多信息。安装自己的系统很好,但不要放弃安装程序使用的所有仔细考虑的默认设置。您的目标可能是以安装程序不允许的方式调整安装,而不是放弃所有FreeBSD标准。

启动参考平台,成为 root 用户,然后运行 zpool history 记录,以查看该ZFS是如何创建的。

我们将在整个安装过程中使用这些信息来调整我们的安装。


关于FreeBSD14.1

以下是FreeBSD14.1安装的情况:

自定义ZFS安装分区

引导到FreeBSD安装程序映像,然后选择 install 。当您到达分区磁盘的位置时,请选择命令行,而不是任何自动或引导方法。如果方便的话,您还可以为所需的版本使用类似mfsBSD的东西。

磁盘分区

当计算机引导时,它会在存储介质上查找操作系统。对于FreeBSD,这是一个引导加载程序。FreeBSD提供了 gptzfsboot(8) 引导加载程序,专门用于从ZFS池引导。硬件BIOS引导引导加载程序,该加载程序激活池并激发FreeBSD内核。引导池中每个虚拟设备中的每个磁盘都应该安装ZFS引导加载程序,这意味着必须对磁盘进行分区。由于某种愚蠢的(daft)原因,FreeBSD引导加载程序分区的最大大小仅略大于512KB,因此为引导加载程序分配512KB。然后,我们放入1 GB FreeBSD交换分区,并为ZFS分配剩余空间。交换分区和ZFS分区以1 MB边界对齐。

虽然出于教学目的,我将这些短名称用于GPT标签,但我们强烈建议您使用第0章中讨论的基于位置的标签。

现在将FreeBSD ZFS引导加载程序安装到此磁盘上。可以从中引导的每个磁盘都需要引导加载程序。

对存储池中涉及到的每个磁盘重复以上操作。

创建池

仍然在磁盘格式化命令提示符下,将磁盘组装到根存储池中。通常将根池称为 systemzroot ,或者可以以主机的名字命名。做任何适合你的环境的事情。我将示例池称为 zroot ,以便它适合FreeBSD安装程序使用的默认值。

查看默认的FreeBSD安装的 zpool history 记录,并考虑它显示的内容。

这是FreeBSD 10.1系统。安装程序将启动池临时挂载在 /mnt ,我们确实必须保留它,以便安装程序工作。我们希望其他选项,如将 compression 设置为 lz4 和禁用 atime-m none 告诉 zpool(8) 不要将装入点分配给该池。使用 -f 告诉 zpool(8) 忽略这些磁盘上的任何其他ZFS信息。altroot 属性提供临时装入点,如第4章所述。你是在重新安装池,而不是回收它们。

10.1安装程序尚未更新以利用 vfs.zfs.min_auto_ashift sysctl,但我现在要使用它。

ZFS现在将使用4096字节扇区。创建池。我们正在窃取所有默认的FreeBSD选项,只进行我们想要的更改。

很可能,FreeBSD的默认池安装选项很好。您可能需要调整数据集。

数据集

当您想要创建自定义数据集配置时,请检查FreeBSD的安装默认值。它们对普通用户来说是明智的,并允许使用引导环境管理器等高级功能。

如果要使用FreeBSD安装程序完成安装,则必须为安装程序提供可识别的系统。这意味着遵循参考安装中的步骤,即使您不确定为什么在数据集创建步骤结束时导出和导入池。总之,我们建议添加您自己的数据集,但保留默认值不变。

下面是引用FreeBSD主机上 zpool history 的一些位,省略了时间戳。

您可以轻松地添加或更改自己的数据集,创建 zroot/var/mysql 或将 /home/usr 下移出,或者根据需要进行任何操作。

创建数据集需要大量的输入。我们建议创建安装脚本,如 《FreeBSD Mastery:Storage Essentials》中所述。

获得数据集后,退出命令行分区,安装程序将继续。


关于FreeBSD14.1

以下是按照FreeBSD14.1默认安装情况修改的:

安装后设置

一旦安装程序完成将文件复制到磁盘、设置网络等操作,您将有机会进入已安装的系统并进行更改。抓住这个机会。您必须在完成的系统中更改一些设置。

确保ZFS在 /etc/rc.conf 中启动。这将在启动时装入文件系统数据集。

编辑 /boot/loader.conf 告诉FreeBSD在启动时加载ZFS:

您还可以在这里进行任何其他系统更改。

虽然一些文档涉及其他必需的步骤,如复制池缓存文件,但这不再是必要的。

完成后重新启动,您将看到一个新的自定义FreeBSD安装!

手动安装FreeBSD

如果您必须转到命令行来对磁盘进行分区,那么您也可以自己将FreeBSD文件安装到磁盘上。FreeBSD分发文件位于 /usr/freebsd-dist 中,您可以使用 tar(1) 将它们写入磁盘。安装目标安装在 /mnt 中。

您可以安装其他发行版集,但只有基本和内核是关键的。

您的安装需要 /etc/fstab ,如果没有其他内容,则需要交换文件。在 /mnt/etc/fstab 中创建它。您还可以编辑关键系统文件,如 /mnt/etc/rc.conf/mnt/boot/loader.conf

通过一些工作和测试,您可以根据需要使ZFS安装简单或复杂。

就像你可以ZFS。

后记

文件系统上的一整本书?你疯了吗?

是的,ZFS只是一个文件系统。但它包括许多文件系统甚至无法考虑的功能。您永远不会试图将自我修复嵌入extfs,或将可变块大小嵌入UFS2。写时复制必须内置在文件系统核心中——您不能将其改造为现有的文件系统。

通过在文件系统方面积累数十年的经验,并瞄准现代和未来的硬件,ZFS不仅改变了我们管理数字存储的方式。它改变了我们对存储的看法。ZFS的灵活性和强大功能甚至使许多长期以来神圣的“系统管理最佳实践”过时。当您的文件系统是盟友而不是威胁时,一切都变得非常容易。

OpenZFS的持续增长带来了商业供应商无法提供的新功能、稳步改进和某些未来。OpenZFS每周都会变得更加激动人心,有了新的功能和更高的性能。它也变得不那么令人兴奋,因为它在每次发布时都会越来越多地保护您的数据。我们非常幸运地成为这个伟大项目的一部分,并很高兴有机会与您分享我们的一些兴奋。

虽然Lucas在写这本书之前使用了ZFS,但Jude使用了许多ZFS来在世界各地提供大量内容。Jude是FreeBSD文档提交人,但Lucas写了一大堆书。我们一起创造了一本比我们单独拥有的更强大的书。

在《FreeBSD Mastery:Advanced ZFS》中,我们将带您进入几年前难以想象的奇怪的新文件系统领域。