禁用并删除安装创建的/swapfile

禁用并删除安装创建的/swapfile

安装期间创建的交换文件如果被删除,将在重启后恢复。

我使用金士顿 960 GB SSD 在 Raspberry Pi 4 8​​ GB 上全新安装了 Ubuntu 22.04 64 位桌面版。添加了交换分区并删除了交换文件。当我重新启动时,交换文件又恢复了。正在恢复已删除的交换文件。

root@RPi:~# free
               total        used        free      shared  buff/cache   available
Mem:         7994256      832340     4953420      425556     2208496     6480364
Swap:       13631824           0    13631824
root@RPi:~# swapon
NAME      TYPE       SIZE USED PRIO
/dev/sda4 partition   12G   0B   -2
/swapfile file      1024M   0B   -3
root@RPi:~# swapoff -av
swapoff /swapfile
swapoff /dev/sda4
root@RPi:~# free
               total        used        free      shared  buff/cache   available
Mem:         7994256      848096     4925720      433404     2220440     6455352
Swap:              0           0           0
root@RPi:~# swapon -av
swapon: /dev/sda4: found signature [pagesize=4096, signature=swap]
swapon: /dev/sda4: pagesize=4096, swapsize=12885254144, devsize=12885254144
swapon /dev/sda4
root@RPi:~# free
               total        used        free      shared  buff/cache   available
Mem:         7994256      850320     4923016      433812     2220920     6452704
Swap:       12583252           0    12583252
root@RPi:~# ll /swapfile
-rw------- 1 root root 1073741824 Jul  1 22:37 /swapfile
root@RPi:~# rm -v /swapfile
removed '/swapfile'
root@RPi:~# ll /swapfile
ls: cannot access '/swapfile': No such file or directory
root@RPi:~# 

重启

root@RPi:~# free
               total        used        free      shared  buff/cache   available
Mem:         7994256      889208     4879004      434496     2226044     6414208
Swap:       13631824           0    13631824
root@RPi:~# swapon
NAME      TYPE       SIZE USED PRIO
/dev/sda4 partition   12G   0B   -2
/swapfile file      1024M   0B   -3
root@RPi:~# ll /swapfile
-rw------- 1 root root 1073741824 Jul  1 22:37 /swapfile
root@RPi:~# 
root@RPi:~# cat /etc/fstab
#LABEL=writable /   ext4    discard,x-systemd.growfs    0   1
#LABEL=system-boot       /boot/firmware  vfat    defaults        0       1
UUID=D7A9-3EE6       /boot/firmware  vfat    defaults        0       1
UUID=09799e9f-8009-4b0c-84bc-9761d73d9670   /   ext4    discard,x-systemd.growfs    0   1
UUID=6e6305ff-5e0c-4918-9de7-0f102acabe93    /home     ext4    defaults    0 0
UUID=3af55a00-f9ba-4121-b77a-08f4e911459d none swap sw 0 0
root@RPi:~# 

注意 /swapfile 上的时间戳。

我确实偶然发现了找不到 /swapfile 的行为swapon -av,即使交换文件尚未被删除。这可能与我之前摸索着尝试删除交换文件有关。我很确定我之前做过swapoff /swapfile,可能做过几次。

我不知道这个问题是否是 Ubuntu 22.04 独有的,还是 RPi 独有的,或者两者兼而有之。

我在互联网上找不到有关此特定问题的任何信息,主要是我尝试禁用和删除交换文件的步骤。虽然不严重,但很烦人。

更新 1

fstab 中的 swap 是分区,而不是文件。

root@RPi:~# swapon --output-all
NAME      TYPE       SIZE USED PRIO UUID                                 LABEL
/dev/sda4 partition   12G   0B   -2 3af55a00-f9ba-4121-b77a-08f4e911459d swap
/swapfile file      1024M   0B   -3 51ac3104-f6c0-4688-9b82-a4ad60bc9661 
root@RPi:~# 

更新 2并给出答案

Raffa 的回答解决了这个问题!谢谢你,Raffa,明天我会出去喝一杯浓咖啡来纪念你。:-)

root@RPi:~# 
root@RPi:~# systemctl status "*.swap"
● dev-disk-by\x2duuid-3af55a00\x2df9ba\x2d4121\x2db77a\x2d08f4e911459d.swap - /dev/disk/by-uuid/3af55a00-f9ba-4121-b77a-08f4e911459d
     Loaded: loaded (/etc/fstab; generated)
     Active: active since Fri 2022-07-01 22:38:27 PDT; 2 days ago
       What: /dev/disk/by-uuid/3af55a00-f9ba-4121-b77a-08f4e911459d
       Docs: man:fstab(5)
             man:systemd-fstab-generator(8)
      Tasks: 0 (limit: 8949)
     Memory: 148.0K
        CPU: 25ms
     CGroup: /system.slice/dev-disk-by\x2duuid-3af55a00\x2df9ba\x2d4121\x2db77a\x2d08f4e911459d.swap

Jul 01 22:38:27 RPi systemd[1]: Activating swap /dev/disk/by-uuid/3af55a00-f9ba-4121-b77a-08f4e911459d...
Jul 01 22:38:27 RPi systemd[1]: Activated swap /dev/disk/by-uuid/3af55a00-f9ba-4121-b77a-08f4e911459d.

● swapfile.swap - The default swapfile
     Loaded: loaded (/lib/systemd/system/swapfile.swap; static)
     Active: active since Fri 2022-07-01 22:38:28 PDT; 2 days ago
       What: /swapfile
      Tasks: 0 (limit: 8949)
     Memory: 1.2M
        CPU: 11ms
     CGroup: /system.slice/swapfile.swap

Jul 01 22:38:28 RPi systemd[1]: Activating swap The default swapfile...
Jul 01 22:38:28 RPi systemd[1]: Activated swap The default swapfile.
root@RPi:~# 
root@RPi:~# 
root@RPi:~# systemctl mask swapfile.swap
Created symlink /etc/systemd/system/swapfile.swap → /dev/null.
root@RPi:~# 
root@RPi:~# 
root@RPi:~# swapoff -av
swapoff /swapfile
swapoff /dev/sda4
root@RPi:~# 
root@RPi:~# 
root@RPi:~# swapon -av
swapon: /dev/sda4: found signature [pagesize=4096, signature=swap]
swapon: /dev/sda4: pagesize=4096, swapsize=12885254144, devsize=12885254144
swapon /dev/sda4
root@RPi:~# 
root@RPi:~# 
root@RPi:~# swapon --output-all
NAME      TYPE      SIZE USED PRIO UUID                                 LABEL
/dev/sda4 partition  12G   0B   -2 3af55a00-f9ba-4121-b77a-08f4e911459d swap
root@RPi:~# 

重启

root@RPi:~# 
root@RPi:~# swapon --output-all
NAME      TYPE      SIZE USED PRIO UUID                                 LABEL
/dev/sda4 partition  12G   0B   -2 3af55a00-f9ba-4121-b77a-08f4e911459d swap
root@RPi:~# 

更新 3

脏话和粗言秽语!!我应该把这篇文章改名为“不会死的交换文件”。

交换文件不断被恢复……至少我认为它正在被恢复。时间戳和大小似乎相同,因此至少目录条目被取消删除,我怀疑正在使用相同的文件块。看来 swap 没有使用交换文件。

对不起,拉法,我不得不取消选择你的​​答案,但我仍然对你投了赞成票。

root@RPi:~# 
root@RPi:~# swapon --output-all
NAME      TYPE      SIZE USED PRIO UUID                                 LABEL
/dev/sda4 partition  12G   0B   -2 3af55a00-f9ba-4121-b77a-08f4e911459d swap
root@RPi:~# 
root@RPi:~# 
root@RPi:~# ll /swapfile 
-rw------- 1 root root 1073741824 Jul  1 22:38 /swapfile
root@RPi:~# 
root@RPi:~# 
root@RPi:~# rm -v /swapfile 
removed '/swapfile'
root@RPi:~# 
root@RPi:~# 
root@RPi:~# ll /swapfile 
ls: cannot access '/swapfile': No such file or directory
root@RPi:~# 

重启

root@RPi:~# 
root@RPi:~# ll /swapfile 
-rw------- 1 root root 1073741824 Jul  1 22:38 /swapfile
root@RPi:~# 
root@RPi:~# swapon --output-all
NAME      TYPE      SIZE USED PRIO UUID                                 LABEL
/dev/sda4 partition  12G   0B   -2 3af55a00-f9ba-4121-b77a-08f4e911459d swap
root@RPi:~# 

答案1

Asystemd.swap单元配置文件会针对 中的每个交换条目自动生成/etc/fstab,并以交换文件或设备命名...如果删除/注释 中的条目/etc/fstab未反映在 systemd 中(使用 检查systemctl status "*.swap"),那么您可能还需要屏蔽该单元配置文件(例如swapfile.swap)像这样:

sudo systemctl mask swapfile.swap

您可以在稍后需要时取消屏蔽,如下所示:

sudo systemctl unmask swapfile.swap

相关内容