![在 Linux 中禁用交换的最佳方法](https://linux22.com/image/656717/%E5%9C%A8%20Linux%20%E4%B8%AD%E7%A6%81%E7%94%A8%E4%BA%A4%E6%8D%A2%E7%9A%84%E6%9C%80%E4%BD%B3%E6%96%B9%E6%B3%95.png)
我正在运行自定义编译的 3.18.9 内核,我想知道在系统上禁用交换的最佳方法。如果有用,我也会使用 init。
注释或删除交换行是否足以/etc/fstab
防止交换在启动时工作/安装,或者我是否应该重新编译内核而不Support for paging of anonymous memory (swap)
100%确定它没有被启用?
我运行加密分区,并希望防止意外泄漏到硬盘。我的系统规格也足够好,可以在无交换的环境中生存。
答案1
- 使用 识别配置的交换设备和文件
cat /proc/swaps
。 - 使用 关闭所有交换设备和文件
swapoff -a
。 - 删除在 中找到的所有匹配的引用
/etc/fstab
。 - 选修的:销毁在步骤 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 足够用),请按照以下步骤操作:
- 运行
swapoff -a
:这将立即禁用交换 - 删除所有交换条目
/etc/fstab
reboot
系统。如果交换分区消失了,那就好了。如果出于某种原因,它仍然在这里,那么你必须删除交换分区。重复步骤 1 和 2,然后使用fdisk
或parted
删除(现在未使用的)交换分区。这里要小心:删除错误的分区将会带来灾难性的后果!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
。