足以注释或删除
/etc/fstab
中的交换行以防止交换在启动时工作/挂载,还是应该重新编译不带Support for paging of anonymous memory (swap)
的内核为100确定不能启用该功能吗?我运行加密分区,并希望防止意外泄漏到硬盘上。我的系统规格也足够好,可以在无交换环境中生存。
#1 楼
使用
cat /proc/swaps
标识已配置的交换设备和文件。使用
swapoff -a
关闭所有交换设备和文件。删除在
/etc/fstab
中找到的所有匹配引用。可选:销毁在步骤1中发现的任何交换设备或文件,以防止它们重复使用。由于您担心泄漏敏感信息,您不妨考虑执行某种安全擦除。
man swapoff
评论
在某些系统上,您还必须重建initrd归档文件,例如使用dracut --regenerate-all --force或mkinitrd,否则系统将无法启动。感谢J.O. alt.os.linux.suse上的Aho和Carlos E.R.
– Ant_222
18/12/19在9:06
#2 楼
过去是仅自动使用/etc/fstab
中的交换分区,但是,systemd可能会稍作更改。您可能需要执行以下操作:systemctl mask dev-sdXX.swap
(将sdXX更改为实际格式化的交换分区),这引出了以下问题:如果没有,为什么要有交换分区不想使用它...
如果您不使用systemd,那么从
/etc/fstab
删除交换项就足够了(据我所知)。也许真正的解决方案是摆脱掉交换分区,以免意外使用它们。要删除交换分区,我将使用fdisk将分区类型从swap更改为其他类型,然后重新格式化该分区或使用:
dd if=/dev/zero of=/dev/old-swap-partition
以便将其归零并阻止其使用。另请参阅使用systemd设置交换分区。
评论
我仍然通过openRC使用init,我故意从安装中清除了systemd。至于交换问题,我一直进行常规安装,直到决定使用cryptsetup / luks将格式化为ext4的加密文件挂载到文件系统之上。如果您愿意在使用init时尝试禁用交换的方法,我将不胜感激。
–user283167
15年4月22日在19:14
另外,它可能是systemctl mask swapfile.swap。
–dess
20年1月28日在15:49
#3 楼
如果您确实确定要禁用交换功能(请注意:即使您确定物理RAM足够多,也不建议这样做),请按照以下步骤操作:运行
swapoff -a
:这将立即禁用swap 从
/etc/fstab
中删除任何交换条目reboot
系统。如果交换消失了,那就好。如果由于某种原因它仍然在此处,则必须删除交换分区。重复步骤1和2,然后使用fdisk
或parted
删除(现已未使用)交换分区。请格外小心:删除错误的分区会造成灾难性的后果!reboot
评论
为什么即使您有足够的内存也不建议禁用交换?
–罗夫
18年5月6日在11:24
因为Linux主动使用交换分区释放更多内存用于缓存。这样可以提高性能。无论如何,它是一个可调参数。有关更多信息,请阅读此处。此外,无交换系统中内存分配的临时增加会触发内核OOM杀手。
–shodanshok
18年5月6日在22:03
谢谢,这很合理。但是,我当时想如果“足够的内存”(例如:8或16 GB)已满,则可能是某种特殊情况(应用程序出现内存泄漏或其他失控问题,DDOS攻击等)。这种情况下,即使互换也最终会不知所措。也许我并没有提出令人信服的论点,但是这种情况在桌面使用率不高的情况下不应该发生。
–罗夫
18年5月8日在16:23
由于使用交换,SSD驱动器磨损了怎么办?
– Peter Mortensen
20 Jan 31'2:46
@PeterMortensen虽然可能,但似乎极不可能出现结果,尤其是如果使用高质量的TLC驱动器。
–shodanshok
20年1月31日在6:44
#4 楼
在Raspbian 10(Buster)上,干净的答案是:要禁用它,直到下次重启,如
*/etc/fstab*
中所述:sudo /sbin/dphys-swapfile swapoff
要在启动时禁用交换:
sudo systemctl disable dphys-swapfile
(原来我在任何地方都找不到该信息...)
评论
非常感谢你。我一生都无法解决这个问题
– Erik K
20年5月9日在18:44
#5 楼
在我的Linux Mint盒(版本19.3(Tricia),基于Ubuntu 18.04(Bionic Beaver))上,没有交换分区或根本没有任何交换的情况下,systemctl报告swapfile.swap在每次启动时都失败了。可以使用以下命令禁用它:sudo systemctl disable swapfile.swap
swapfile.swap是systemd的“特殊”部分,您可以使用
man systemd.special
命令在mand中进行阅读。 。#6 楼
当我在Raspbian上查看/ etc / fstab文件时,我看到一条评论,内容为a swapfile is not a swap partition, no line here
use dphys-swapfile swap[on|off] for that
但是要完全禁用预先配置的交换文件,此方法可以很好地工作:
swapoff -a
chmod -x /etc/init.d/dphys-swapfile
reboot
这个解决方案对我来说似乎有点麻烦,但是,您可以使用以下方法重新启用它:
chmod +x /etc/init.d/dphys-swapfile
reboot
评论
为什么交换未加密?@MichaelHampton在我意识到最终将要发生的事情之前,我并没有看到时间上的需要。另外,我的系统在任何时候都不会使用交换功能,因此我可以随意删除它。
然后,我将从内核中删除该功能。否则,有人可以插入USB记忆棒,然后再次开始交换。
@ott用户是否不需要超级用户权限才能使用swapon / swapoff可执行文件?我可能会再次禁用它,以防万一,但是我不确定没有特权的用户可以创建交换文件。
确实,他需要超级用户访问权限,例如,他可以利用此漏洞进行访问。但是,您是否在24/7观看服务器?