永久禁用 Debian 上的交换

永久禁用 Debian 上的交换

每个指南都提出永久禁用交换,只需注释掉相应的行/etc/fstab即可防止交换在重新启动时安装;然而,这在 Debian 11 中不起作用。

例子:

sudo swapoff -a工作完美,但在重新启动后不会持续存在。

fstab 文件示例,其中行被注释掉:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# systemd generates mount units based on this file, see systemd.mount(5).
# Please run 'systemctl daemon-reload' after making changes here.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda2 during installation
UUID=6b762cb8-b92b-489a-98cf-2bf200e3c4ae /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
UUID=4847-3887  /boot/efi       vfat    umask=0077      0       1
# swap was on /dev/sda3 during installation
# UUID=b9aeb506-ad7d-488d-b2b9-7c68dff21906 none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

手动的

手动关闭交换后:

sudo swapoff -a

lsblk

交换分区仍然挂载,但不再列为交换分区。交换已成功禁用:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   127G  0 disk
├─sda1   8:1    0   512M  0 part /boot/efi
├─sda2   8:2    0 125.5G  0 part /
└─sda3   8:3    0   976M  0 part
sr0     11:0    1  1024M  0 rom

编辑 Fstab

编辑 fstab 文件、运行sudo systemctl daemon-reload并执行系统重启后,交换仍然存在

lsblk -o +PARTTYPE

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT PARTTYPE
sda      8:0    0   127G  0 disk
├─sda1   8:1    0   512M  0 part /boot/efi  c12a7328-f81f-11d2-ba4b-00a0c93ec93b
├─sda2   8:2    0 125.5G  0 part /          0fc63daf-8483-4772-8e79-3d69d8477de4
└─sda3   8:3    0   976M  0 part [SWAP]     0657fd6d-a4ab-43c4-84e5-0933c84b4f4f
sr0     11:0    1  1024M  0 rom

显然还少了一步。

答案1

它由 systemd 激活。参见man systemd-fstab-generatorman systemd.swap

Archlinux 维基:由systemd激活

系统基于两种不同的机制激活交换分区。两者都是 /usr/lib/systemd/system-generators 中的可执行文件。生成器在启动时运行并为安装创建本机 systemd 单元。第一个是 systemd-fstab-generator,读取 fstab 以生成单元,包括用于交换的单元。第二个 systemd-gpt-auto-generator 检查根磁盘以生成单元。它仅在 GPT 磁盘上运行,并且可以通过类型 GUID 识别交换分区,请参阅systemd#GPT分区自动挂载了解更多信息。

禁用交换

要停用特定交换空间:

# swapoff /dev/sdxy

或者使用 -a 开关停用所有交换空间。

由于swap是由systemd管理的,因此它会在下次系统启动时再次激活。要永久禁用检测到的交换空间的自动激活,请运行systemctl --type swap查找责任.swap单位并掩盖它

检查状态:

systemctl status *swap

或者 :

systemctl --type swap

然后禁用该服务:

sudo systemctl mask  "dev-*.swap"

答案2

systemd 默认处于自动模式,不需要 fstab 来激活:

systemd-gpt-自动生成器是一个单元生成器,可自动发现 root、/home/、/srv/、/var/、/var/tmp/、EFI 系统分区、扩展引导加载程序分区和交换分区

该生成器可以隐藏在单独的管理覆盖目录中:

/etc/systemd/system-generators/systemd-gpt-auto-generator -> /dev/null

systemd.gpt_auto=no因为启动参数应该具有相同的效果。

手册页继续:

systemd-gpt-auto-generator 对于将文件系统配置集中在分区表中并在 /etc/fstab或者在内核命令行上不必要

fstab-generator其次/可以覆盖。但既然你确实评论了交换,我猜 gpt-auto 正在打开它。

不是sda3仍然安装。就像在分区级别lsblk一样工作。入口就像一个挂载点。fdisk -l[SWAP]

尝试一下swapon --show,因为还可以有交换文件和多个交换。

答案3

你需要改变虚拟机交换性linux内核参数并永久更改/etc/sysctl.conf文件。并重新启动系统。

默认值为虚拟机交换性60表示激活swap之前空闲内存的百分比。该值越低,使用的交换就越少,物理内存中保留的内存页就越多。

要在 Debian 系统上永久禁用交换:

  • 编辑/etc/sysctl.conf 文件文件并添加到文件末尾(如果不存在)vm.swappiness = 0
  • 重启系统
# edit /etc/sysctl.conf file
~] vi /etc/sysctl.conf 

# disable swap
# add to end of file if not present:
vm.swappiness = 0

# reboot for changes
~] systemctl reboot

这是指南如何在Linux上永久禁用交换

答案4

错过的步骤可能会sudo update-initramfs -u在更改后运行/etc/fstab,以确保fstabinitramfs 文件中的副本也是最新的。

否则,当系统仍在 initramfs 上运行时,交换可能会在引导过程的早期被激活。如果发生这种情况,启动过程中没有任何步骤会在以后将其停用。

相关内容