如何在不删除终端的情况下增加swapfile的大小?

有没有办法增加我现有的“交换文件”而不必销毁和重新创建它? 我想把我的交换空间从1GB增加到2GB。 目前它的设置如下:

$ sudo swapon -s Filename Type Size Used Priority /swapfile file 1048572 736640 -1 $ ls -lh /swapfile -rw------- 1 root root 1.0G Nov 9 2016 /swapfile 

我正在使用Ubuntu 14.04。

首先禁用交换文件:

 sudo swapoff /swapfile 

现在让我们增加交换文件的大小:

 sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 oflag=append conv=notrunc 

上面的命令将在交换文件的末尾附加1GiB的零字节。

将文件设置为“交换文件”:

 sudo mkswap /swapfile 

启用交换:

 sudo swapon /swapfile 

您应该添加一个新的交换文件,而不是调整现有的交换文件大小, 因为它不需要您付出任何代价 。 要调整交换文件的大小,必须首先禁用它,这会将交换内容驱逐到RAM,这会增加RAM的压力,甚至可能会召唤OOM杀手(更不用说你可能会在几分钟内颠倒你的磁盘)。 多个交换文件不是问题,设置另一个交换文件非常容易。 调整交换文件大小而不是添加另一个文件实际上没什么好处。

 dd if=/dev/zero of=/some/file count=1K bs=1M mkswap /some/file sudo chown root:root /some/file sudo chmod 600 /some/file sudo swapon /some/file 

您可以像我一样创建另一个交换文件:

  1. sudo fallocate -l 4G /swapfile
  2. sudo chmod 600 /swapfile
  3. sudo mkswap /swapfile
  4. sudo swapon /swapfile
  5. validation它是否正在使用sudo swapon --show
    要使其永久化,请将文件添加到fstab文件中:
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

根据博客文章中Arian Acosta的建议,我在Ubuntu 17.04上取得了不错的成绩。 一个人可以用你想要的任何数量的千兆字节代替4G这里的sudo fallocate -l 4G /swapfile 。 例如,用于TS的sudo fallocate -l 2G /swapfile

一般来说,交换文件的建议大小是RAM的2倍,但您可以根据需要进行调整。 请记住,这不是内存的替代品,因为性能更糟,因为事物存储在磁盘中。

我创建了一个简单的bash脚本,将交换文件增加到4GB并在Ubuntu 16.04上进行测试。

这可以逐行或bash脚本运行,但我用它来进行无头安装。

 #!/bin/bash echo "====== Current Swap ======" sudo swapon -s echo "====== Turning Off Swap ======" sudo swapoff /swapfile echo "====== Allocating 4GB Swap ======" sudo fallocate -l 4G /swapfile echo "====== Making Swap ======" sudo mkswap /swapfile echo "====== Setting Permissions to Root Only ======" sudo chmod 600 /swapfile echo "====== Turning On Swap ======" sudo swapon /swapfile echo "====== Current Swap ======" sudo swapon -s echo "====== Done! ======"