答案1
是的,这很正常。
老实说,SWAP 分区从来没有太大意义:与普通文件不同,您无法轻松删除、创建、扩展或缩小它。
如果您使用全盘加密,仍然需要单独的 SWAP 分区,但人们已经创建了解决方法:https://rephlex.de/blog/2019/12/27/how-to-hibernate-and-resume-from-swap-file-in-ubuntu-20-04-using-full-disk-encryption/
答案2
AFAIK“交换文件”是一个相当宽松的命名约定,适用于 Linux 平台上的一些不同的东西。从您向我们展示的情况来看,它是一个交换文件,具有 2048MB 或 2GB 的交换空间。
它之所以存在,是因为系统上某个具有 root 权限的进程、程序或用户创建了它。它是实际的交换空间,可能会也可能不会启用。它通常是作为引导时安装的更传统交换空间的补充而创建的。
您或进程可以在任何地方创建交换文件。它是在/
您的根分区上创建的。您可以像这样重复该过程:(
这里我使用dd
“数据转储”命令。)
$ su # enter root password.
# dd if=/dev/zero of=/extraswapfile bs=1M count=1024
# mkswap /extraswapfile
# swapon /extraswapfile # to turn the swapfile on
# swapoff /extraswapfile # to turn it off
要可视化您的总可用交换空间,您可以swapon -s
像在问题中那样使用。您将看到之前的交换分区的空间(如果有)+刚刚通过交换文件启用的 2GB 额外交换空间。
交换文件不会保留并在重新启动时消失,因此在需要以临时方式管理交换空间时非常实用。重新启动后会将您的(交换)石板擦干净。如果您想让交换文件在重新启动后保持不变,请编辑/etc/fstab
以包括:
/extraswapfile none swap sw 0 0
但保留交换文件通常是不明智的。由于磁盘上 I/O 操作的增加,交换往往会导致性能下降。最好增加交换分区的大小,而不是以交换文件的形式添加到补充的、非连续的交换空间。您的情况似乎有所不同,因为您没有现有的交换分区。
参考:
https://www.linux.com/training-tutorials/increase-your-available-swap-space-swap-file/
有关交换区域优先级的讨论,另请参阅man 2 swapon
。
答案3
这是不正常的,因为它是不可预测和不受控制的行为。我在 Virtualbox 上进行了全新安装(ubuntu-20.04.1-live-server-amd64),没有 LVM,只有根分区,没有定义交换分区,但安装后出现了交换文件!没有人要求 Ubuntu 创建交换空间,特别是在根目录上创建交换文件,但它确实做到了!这个问题在 22.04 中仍然没有得到解决,并且还可能导致虚拟机虚拟驱动器的垃圾或过大。即使定义了交换分区,也可能会创建交换文件,因此最终将使用两者。生成的交换文件的大小可能会有所不同,并且可能取决于 RAM、驱动器或分区配置!恕我直言,没有其他发行版可以做到这一点。
askubuntu 上有很多关于此的问题,人们甚至对此有疑问!但似乎没有人关心这是否是一种奇怪的行为和潜在的错误(请参阅1391554,1327558)。
# for starters who wish to remove the swapfile
sudo swapoff -a # all or specify the file
sudo nano /etc/fstab # and remove or comment the line containing swap mount
sudo rm -rf /swap.img