我的 Ubuntu 服务器的内存不超过 512 MB。运行 Node.js + MongoDB 是不够的。
因此我决定添加一个交换文件:
# dd if=/dev/zero of=/root/myswapfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.69263 s, 229 MB/s
# mkswap /root/myswapfile
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=3c64da32-d0b4-49e5-92db-fba961b8ae28
# swapon /root/myswapfile
Run Code Online (Sandbox Code Playgroud)
没有错误信息 => 成功!
现在应该列出新的交换文件,但它不是:
# swapon -s
Filename Type Size Used Priority
Run Code Online (Sandbox Code Playgroud)
(空列表)
我怎样才能让它工作?丢失交换的原因可能是什么?
首先,擦除您的原始交换文件:
sudo rm /myswapfile
Run Code Online (Sandbox Code Playgroud)
接下来,一一运行以下命令:
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
ls -lh /swapfile
Run Code Online (Sandbox Code Playgroud)
输出应类似于以下内容:
-rw------- 1 root root 1.0G Aug 3 18:20 /swapfile
Run Code Online (Sandbox Code Playgroud)
现在,运行以下命令:
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon -s
Run Code Online (Sandbox Code Playgroud)
现在,编辑 /etc/fstab 以使更改永久生效:
sudo nano /etc/fstab
Run Code Online (Sandbox Code Playgroud)
并将以下行添加到文件末尾:
/swapfile none swap sw 0 0
Run Code Online (Sandbox Code Playgroud)
按CTRL+o然后按ENTER保存文件。
按CTRL+x退出纳米。
来源:https : //www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04
如果这仍然不起作用,您可能需要检查swappiness:
cat /proc/sys/vm/swappiness
Run Code Online (Sandbox Code Playgroud)
此命令应返回一个数字。默认值应为 60。
如果没有输出,则一一运行以下命令:
sudo sysctl vm.swappiness=60
echo "vm.swappiness = 60" | tee -a /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)
将-a 是重要的后tee或将覆盖整个文件!
您的交换文件应该位于 /swapfile 中,具有 600 权限。
#moving file and changing rights
sudo mv /root/myswapfile /myswapfile
sudo chmod 600 /myswapfile
sudo mkswap /myswapfile
Run Code Online (Sandbox Code Playgroud)
添加交换文件。我想你忘记了这个命令
sudo swapon /myswapfile
#check swap is working
sudo swapon -s
Run Code Online (Sandbox Code Playgroud)
Mic*_*ael -1
你可以这样做:
sudo umount -a
gedit /etc/fstab
Run Code Online (Sandbox Code Playgroud)
并在交换位置中写入:
/proc/swap proc default errors=noremount 1
Run Code Online (Sandbox Code Playgroud)
然后是这个:
sudo mount -a
Run Code Online (Sandbox Code Playgroud)
然后运行 gpart 并将交换驱动器设置为交换,并将其安装在根开发驱动器上,这样可能可以正常工作。