添加新的交换文件。如何编辑 fstab 以在重新启动后启用交换?

joj*_*ojo 59 fstab swap

由于某些分区问题,我删除了现有的交换分区。我现在没有交换空间,所以我创建了一个交换文件:

dd if=/dev/zero of=/root/myswapfile bs=1M count=1024
Run Code Online (Sandbox Code Playgroud)

这是之后swapon -s

/root/myswapfile    file    1048572    1320    -1
Run Code Online (Sandbox Code Playgroud)

现在我想编辑 my/etc/fstab以在重新启动后启用交换文件。

Tak*_*kat 89

这些是在文件上创建交换的步骤:

创建一个大文件,例如

sudo mkdir -p /var/cache/swap/   # create a directory that holds the swap file
sudo dd if=/dev/zero of=/var/cache/swap/myswap bs=1M count=4096 # for 4 GByte
Run Code Online (Sandbox Code Playgroud)

当然,创建定义大小的文件的任何其他方法都可以。

宣布交换到系统

sudo chmod 0600 /var/cache/swap/myswap # only root should have access
sudo mkswap /var/cache/swap/myswap # format as swap
sudo swapon /var/cache/swap/myswap # announce to system
Run Code Online (Sandbox Code Playgroud)

/etc/fstab在下次启动时插入以下行进行交换:

/var/cache/swap/myswap    none    swap    sw    0   0
Run Code Online (Sandbox Code Playgroud)

注意:如果您的系统文件在 SSD 上,您可能需要考虑将交换文件保存在硬盘位置。

另请注意:您不能使用交换文件进行休眠(请参阅Ubuntu SwapFaq

Ubuntu >= 17.04 的附加说明:/swapfile默认情况下在新安装中创建交换文件(当不存在交换分区时)。如果我们愿意,我们可以稍后手动创建交换分区

如果我们想用另一个交换(例如文件)替换现有交换(例如分区),我们需要删除旧交换

sudo swapoff -a  # for all
Run Code Online (Sandbox Code Playgroud)

然后/etc/fstab分别从新交换中删除交换条目或将其替换为新交换。

  • 您为什么不希望在 SSD 上进行交换? (2认同)
  • 谢谢,您如何检查“/etc/fstab”是否可以在不重新启动的情况下正确挂载交换文件?如果我执行“mount -a && mount”,我看不到交换文件 (2认同)
  • @user72464 要显示使用的所有交换,我们可以发出`swapon -s`。可用交换也显示在 `free -h` 上。 (2认同)