一位团队成员在我们的一台需要更多交换的机器上创建了一个交换文件。他在 SSD 上的文件系统上创建了它。虽然我们的服务器没有进行很多交换,并且可能安全地将交换文件保存在 SSD 上,其有限的写入周期,但我很想知道如果使用交换的服务器上的 SWAP 分区失败会发生什么(比如 SWAP 驱动器)死了)。
正在运行的机器上的 SWAP 分区故障是灾难性的吗?或者它会像某人发出的一样被处理,swapoff -a尽管没有刷新缓冲区和缓存。
我假设在 SWAP 上有其页面的程序可能会崩溃。
如果我要重新启动一台 SWAP 失败的机器,在 fstab 中注释掉交换条目是否足以防止在启动时卡住?我可以添加一个新的交换分区并更新 fstab 条目,然后它会像什么也没发生一样重新启动吗?
我假设您在这里使用 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
Run Code Online (Sandbox Code Playgroud)