![专用于仅交换的 SSD 在 Debian 或 Ubuntu 上失败](https://linux22.com/image/35583/%E4%B8%93%E7%94%A8%E4%BA%8E%E4%BB%85%E4%BA%A4%E6%8D%A2%E7%9A%84%20SSD%20%E5%9C%A8%20Debian%20%E6%88%96%20Ubuntu%20%E4%B8%8A%E5%A4%B1%E8%B4%A5.png)
这还没有发生在我身上,但如果我将单个 SSD(非 RAID)专用于仅交换,并且服务器系统正在使用它的全部容量 - 接下来会发生什么?假设我手里有一块相同的、经过测试且可以正常工作的 SSD,我该如何恢复呢?
假设我有一个 i3、32GB RAM 服务器,运行带有 xfce 的最新 XUbuntu。除此之外,我正在运行 Oracle 的 4.3.20 VirtualBox (vbox),它是许多 Windows 和 Linux 服务器和客户端的所在地。
据我了解,有几种情况。
场景 A:我将 XUbuntu 主机使用的 SSD 仅交换驱动器与 vbox Linux 客户端的交换文件和 Windows 客户端的页面文件共享。
场景 B:我将 XUbuntu 主机与 VirtualBox 隔离:我的 vbox 客户端从不使用托管 Linux 的 SSD 驱动器进行交换。相反,我重新启动虚拟客户端以使用更多物理资源。
场景 C:我从不允许任何 vbox 客户端超过 32GB 的一半,并且我强制 vbox 客户端使用它们自己的虚拟交换。
无论哪种情况,SSD 现在都消失了,我需要处理它。
我非常倾向于使用场景 A,因为它是最适合交换和页面文件的驱动器,但如果从此类故障中恢复很复杂或不可能,请告诉我。 B 和 C 是安全的,但非常有限。
再说一次,这只是一个场景,它还没有发生在我身上。谢谢阅读!
答案1
Linux 可以使用多个交换分区或交换文件,因此如果您担心 SSD 空间不足,只需准备一个备用交换分区或文件供其使用即可。通常,交换使用量在所有可用交换设备和文件之间交错,但您可以通过为交换设备分配优先级来覆盖这一点。
从http://linux.die.net/man/8/swapon
-p, --priority 优先级
指定交换设备的优先级。优先事项是 0 到 32767 之间的值。数字越大表示优先级越高。有关交换优先级的完整说明,请参阅 swapon(2)。添加
pri=value
到 的选项字段以/etc/fstab
与 一起使用swapon -a
。
并从http://linux.die.net/man/2/swapon
交换页按优先级顺序从区域中分配,优先级最高的在前。对于具有不同优先级的区域,先用完较高优先级的区域,然后再使用较低优先级的区域。如果两个或多个区域具有相同的优先级,并且这是可用的最高优先级,则页面将在它们之间循环分配。
因此,只需让 SSD 上的主交换分区/文件具有相同的优先级,并为普通 HD 上的“紧急”交换提供较低的优先级即可。
IIRC,使用交换分区比交换文件更有效; OTOH,使用文件稍微更灵活,并且额外的开销非常小,但我想使用 SSD 而不是传统 HD 时,轻微的速度差异可能会更明显,因为 SSD 太快了。
FWIW,这是不是如果您正在使用休眠模式,那么在不同操作系统之间共享交换空间是个好主意!