Ubuntu 20.04 安装创建了一个交换文件而不是交换分区。正常吗?

Ubuntu 20.04 安装创建了一个交换文件而不是交换分区。正常吗?

最近,我全新安装了 Ubuntu 20.04,最小安装选项。
现在,当我使用命令检查交换空间时swapon -s,我得到以下输出:

Filename     Type     Size     Used    Priority
/swapfile    file     2097148  268     -2

当我使用 gparted 查看分区列表时,我看到以下内容:

在此输入图像描述

此外,系统监视器应用程序显示 2GB 的交换空间(见下面的屏幕截图)。

在此输入图像描述

显然,我没有专用于交换空间的分区。

我有以下问题:Ubuntu不创建交换分区,而是创建交换文件是否正常?

答案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://fibrevillage.com/sysadmin/439-check-and-identify-memory-and-swap-on- Different-unix-linux-distros

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

相关内容