如何在不删除终端的情况下增加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
您可以像我一样创建另一个交换文件:
-
sudo fallocate -l 4G /swapfile
-
sudo chmod 600 /swapfile
-
sudo mkswap /swapfile
-
sudo swapon /swapfile
- 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! ======"