一名团队成员在我们的一台需要更多交换的机器上创建了一个交换文件。他在 SSD 上的文件系统上创建了它。虽然我们的服务器不会进行大量交换,并且可能可以安全地将交换文件保留在具有有限写入周期的 SSD 上,但我很想知道如果交换分区在使用交换的服务器上发生故障(例如交换驱动器),会发生什么情况死了)。
正在运行的机器上的 SWAP 分区故障是否会造成灾难性的后果?或者,它将被视为就像有人发出了一个
swapoff -a
命令,尽管没有刷新所有缓冲区和缓存。我假设页面位于 SWAP 上的程序可能会崩溃。
如果我要重新启动交换失败的计算机,在 fstab 中注释掉交换条目是否足以防止卡在启动时?我是否可以只添加一个新的交换分区并更新 fstab 条目,然后它就会像什么都没发生一样重新启动?
答案1
我假设您在这里使用 Linux,部分原因是因为提到了,swapoff -a
但建议在您的问题文本和/或通过标签中明确说明这一点。
交换失败将在将其内存分页到交换设备的进程中生成内存错误,即该进程将被终止。
重新启动交换设备出现故障的系统只会在执行时给出错误swapon
,但系统将在没有该交换设备的情况下继续运行。然后,您可以直接使用另一个交换设备和swapon /dev/whatever
/或编辑/etc/fstab
并重新启动和/或swapon -a
。
请注意,您还可以使用文件作为交换设备:
# create a large enough file (1GB here)
dd if=/dev/zero of=/var/SWAPFILE bs=1024k count=1024
# write swap signature to the file so that the kernel recognizes it
mkswap /var/SWAPFILE
# activate it
swapon /var/SWAPFILE