安装期间创建的交换文件如果被删除,将在重启后恢复。
我使用金士顿 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