![ZFS 上的 Root 实用性](https://linux22.com/image/1559340/ZFS%20%E4%B8%8A%E7%9A%84%20Root%20%E5%AE%9E%E7%94%A8%E6%80%A7.png)
我正准备在我的台式机上安装一个全新的操作系统。它的基本规格是 i7 3770S 和 16GB 非 ECC RAM,这是此主板支持的最大内存。我现在实际上有 XenServer,但由于他们从最新的免费版本中删除了功能,我决定迁移到 KVM,这似乎可以更好地支持通过消费者 GPU(尤其是 nVidia)的解决方法,尽管我可以确认我的 Radeon RX580 和 Radeon 7970 都可以这样使用。主板是 Gigabyte GA-H77N-WIFI,值得一提。我记得我找不到有关使用 VT-d 支持 PCI 直通的信息,或者它是否支持任意 mini-PCIe 卡,但对于任何正在搜索的人,我可以确认这两者都可以在我的主板(2012 年 12 月 14 日购买)上正常工作。
我认为我了解非 ECC RAM 的风险,而且这台机器本身并不是真正的服务器,更像是我将在其上运行虚拟机的个人工作站。我的理解是,非 ECC ZFS 的风险实际上并不比任何其他文件系统更大,而且 ZFS 校验和仍然应该有益。
我计划使用 Alpine Linux 作为主机操作系统,并从那里虚拟化大部分内容。这样做的原因是 KVM,它似乎是最成熟、最活跃、使用最广泛的免费虚拟化主机。我可能是错的,而且查找信息并不容易,但 FreeBSD 上的 Bhyve 似乎并不像 KVM 那样成熟。我也非常喜欢英特尔 GVT-g 项目正在尝试开发的东西,而且它似乎也最好地支持 KVM。
Alpine Linux 支持 ZFS 上的根目录。我在 FreeBSD (NAS4Free) 上使用 ZFS,非常喜欢它。但是,在该设置中,根目录实际上位于 USB 驱动器上,并在启动时加载到 RAM 中。
我真的很想知道 ZFS 上的 root 的实用性。尤其是在 Linux 上,可以说它不是“一等公民”。在 Google 上搜索有关实用性的顾虑,我所能找到的只是主机上的指南。
现在我倾向于使用类似于 NAS4Free 嵌入式选项的设置,即在 Alpine 上设置一个非常精简的 KVM 主机,并在启动时将其加载到 RAM 磁盘。然后我可能会使用 Linux 上的 ZFS 或可能使用带有 SATA 卡的 FreeBSD VM 设置数据存储。但最有可能是前者,因为我无法在机箱中安装另一张 PCI 卡,尽管我已经测试了我的 mini PCIe SATA 控制器并且它可以工作,而且几个月前我对其进行了简短测试时似乎没有问题。我想我只是不太信任它的 ASMedia 106x 芯片组,特别是因为它在 POST 屏幕上显示版本 0.61。如果用于 root,则配置将是镜像 vdev 中的 2x128GB SSD。
我还读过一些关于内存不足导致 ZFS 不稳定,进而导致池崩溃的恐怖故事。但是,我的看法是,互联网上有大量关于 ZFS 的 FUD,可能源于 Sun 关于 ZFS 面向企业用例的文档。它在 RAIDZ 设置中似乎也更为重要,尤其是在高容量的情况下。我也不相信我亲眼见过有人遇到过这种情况,只是“我认识一个人,他认识另一个人”之类的事情。
我想主要问题是:
- 在 ZFS 上使用 Root 真的有什么好处吗?特别是如果你不把数据和 root 放在同一个分区上的话?
- 我喜欢 ZFS 使用未使用的 RAM 来加速 I/O 的想法,但 16GB 已经足以运行一两个虚拟机了。ZFS 在利用空闲内存方面的表现是否比 Linux 对其自身文件系统缓存的表现更好?
我认为综合我的想法来写出这一切让我更倾向于将精简的根加载到 RAM 磁盘中。不过,这都是为了学习,就像我说的,似乎有很多关于 ZFS 的相互矛盾的观点。老实说,我不确定我是否看到 ZFS 上的根的实际用途?特别是在 Linux 上。这是“仅仅因为我可以做”吗?当然,这没有错,它对取得突破有很大的帮助,只是不适合我的工作站。