在 Linux 中禁用交换的最佳方法

在 Linux 中禁用交换的最佳方法

我正在运行自定义编译的 3.18.9 内核,我想知道在系统上禁用交换的最佳方法。如果有用,我也会使用 init。

注释或删除交换行是否足以/etc/fstab防止交换在启动时工作/安装,或者我是否应该重新编译内核而不Support for paging of anonymous memory (swap)100%确定它没有被启用?

我运行加密分区,并希望防止意外泄漏到硬盘。我的系统规格也足够好,可以在无交换的环境中生存。

答案1

  1. 使用 识别配置的交换设备和文件cat /proc/swaps
  2. 使用 关闭所有交换设备和文件swapoff -a
  3. 删除在 中找到的所有匹配的引用/etc/fstab
  4. 选修的:销毁在步骤 1 中找到的所有交换设备或文件,以防止其被重复使用。由于担心泄露敏感信息,您可能希望考虑执行某种安全擦除。

人换人

答案2

以前只有交换分区会被/etc/fstab自动使用,但是 systemd 可能会对此进行一些更改。您可能需要执行以下操作:

systemctl mask dev-sdXX.swap

(将 sdXX 更改为您真实格式化的交换分区,这引出了一个问题:如果您不想使用交换分区,为什么还要有它呢......

如果您不使用 systemd,那么删除交换条目/etc/fstab就足够了(据我所知)。

也许真正的解决方案是删除交换分区,这样它们就不会被意外使用。要删除交换分区,我会使用 fdisk 将分区类型从交换更改为其他类型,然后重新格式化分区或使用: dd if=/dev/zero of=/dev/old-swap-partition以将其清零并防止其使用。

也可以看看使用 systemd 设置交换分区的使用

答案3

如果你确实要禁用交换(注意:这是不是推荐,即使你很确定物理 RAM 足够用),请按照以下步骤操作:

  1. 运行swapoff -a:这将立即禁用交换
  2. 删除所有交换条目/etc/fstab
  3. reboot系统。如果交换分区消失了,那就好了。如果出于某种原因,它仍然在这里,那么你必须删除交换分区。重复步骤 1 和 2,然后使用fdiskparted删除(现在未使用的)交换分区。这里要小心:删除错误的分区将会带来灾难性的后果!
  4. reboot

答案4

在我的Linux Mintbox(版本 19.3(Tricia),基于Ubuntu 18.04(Bionic Beaver))没有交换分区或根本没有交换,systemctl 报告 swapfile.swap 在每次启动时都会失败。可以使用以下命令禁用它:

sudo systemctl disable swapfile.swap

swapfile.swap 是 systemd 的一个“特殊”部分,您可以使用命令在 man 中阅读有关它的信息man systemd.special

相关内容