标题基本概括了一切。我想将 Ubuntu Server 安装到 HDD 上,并使用 SSD 作为整个操作系统的缓存。
我知道这不是最推荐的,使用 SSD 作为启动驱动器和 HDD 作为存储是一个更好的主意,但这是我当前的配置,出于某些原因,我想以其他方式尝试。
答案1
我将尝试提供一些想法/建议来回答您的以下问题。话虽如此,我认为您可能犯了一个错误(事实上,在我看来,这几乎是一个 XY 问题 - 假设一个解决方案并询问它是如何完成的,而不是询问如何解决问题。)
具体来说,我认为你没有考虑到以下几点,但这会带来巨大的差异——
SSD(尤其是较小/较旧的 SSD,120 GB 大小就说明了这一点)往往会随着时间的推移而变慢,因此通常几年后它们的速度会比 HDD 慢。部分原因是固件/配置较旧。
操作系统会自动将常用的读取内容缓存在内存中,因此调整交换文件和 vm.swappiness 可以实现很大一部分目标,而无需额外开销。如果您的文件服务器有 16 GB 的内存,那么您已经远远超过了收益递减的阶段 - 尤其是对于读取而言。
最小操作系统安装很小,在文件服务器中分离根卷和数据卷具有显著优势。为操作系统分配 10 GB 的分区应该不是什么大问题。您甚至可以将其放在硬盘上,并且将 vm.swappiness 的值设置为较低,系统启动后,它只会缓存所需的内容。
您根本没有提到 RAID/备份。作为一名专家,这对我来说相当可怕。大多数 NAS 都会有某种 RAID,因为 HDD 是计算机中最容易发生故障的东西,而 SSD 也可能会突然发生灾难性的故障。
一些想法/答案
根据您提供的附加信息 - 即,这是用于文件服务器的信息,我会告诉您想要使用 LVM 还是 ZFS。
我将简要介绍一下 LVM,因为我认为 ZFS 可能更适合这里。LVM 允许您抽象磁盘(包括包含根文件系统的分区)。它符合传统的磁盘/文件系统范例,为快照、调整大小和管理磁盘、冗余和处理多个磁盘等提供了强大的灵活性。对您来说重要的是,它还提供使用快速磁盘作为缓存的功能 - 例如https://man7.org/linux/man-pages/man7/lvmcache.7.html
话虽如此,如果您刚接触这个“新”领域,ZFS 可能更适合您。粗略地说,ZFS 是文件系统中的“新”范例,在某种程度上将磁盘/分区与文件系统合并,并且具有极其强大的功能 - 例如,快照比 LVM 更强大、更高效,您可以执行快照、重新同步、重复数据删除等操作 - 重要的是,它具有非常强大的缓存功能。缺点是学习曲线(但如果您没有使用过 LVM,它可能并不难),它需要比 LVM 更多的内存 - 但 16 GB 的内存远远超出了您的需要。您会在网上看到关于使用 ECC 内存的争论 - 这是因为 ZFS 比其他解决方案更关心数据完整性 - 但由于您使用的是较旧的计算机和单个 HDD 以及古老的 SSD,我猜您并不关心那可靠性问题,所以你可以忽略这些争论 - ZFS 仍然是一个强大的解决方案。参见https://openzfs.github.io/openzfs-docs/Getting%20Started/Ubuntu/Ubuntu%2022.04%20Root%20on%20ZFS.html适用于 Ubuntu 上 root 上的 ZFS。
我评论说 ZFS 经常被用作 NAS 的后端 - 它就是为这种东西而设计的。