每个指南都提出永久禁用交换,只需注释掉相应的行/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-generator
和man 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
,以确保fstab
initramfs 文件中的副本也是最新的。
否则,当系统仍在 initramfs 上运行时,交换可能会在引导过程的早期被激活。如果发生这种情况,启动过程中没有任何步骤会在以后将其停用。