我的 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
没有错误信息=>成功!
现在应该列出新的交换文件,但事实并非如此:
# swapon -s
Filename Type Size Used Priority
(空列表)
我该如何让它工作?缺少交换的原因可能是什么?
答案1
首先,删除原来的交换文件:
sudo rm /myswapfile
接下来逐个运行以下命令:
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
ls -lh /swapfile
输出应类似于以下内容:
-rw------- 1 root root 1.0G Aug 3 18:20 /swapfile
现在,运行以下命令:
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon -s
现在,编辑 /etc/fstab 以使更改永久生效:
sudo nano /etc/fstab
并将以下行添加到文件末尾:
/swapfile none swap sw 0 0
按CTRL+o然后按ENTER保存文件。
按CTRL+x退出 nano。
来源:https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04
如果仍然不起作用,您可能需要检查交换性:
cat /proc/sys/vm/swappiness
此命令应返回一个数字。默认值应为 60。
如果没有输出,请逐个运行以下命令:
sudo sysctl vm.swappiness=60
echo "vm.swappiness = 60" | tee -a /etc/sysctl.conf
这-a
很重要之后tee
或您将覆盖整个文件!!!
答案2
使用fdisk
创建交换。添加新分区,选择 Linux 交换,写入更改。
mkswap /dev/sd?
您需要将其添加到您的/etc/fstab/
。将 XXX 更改为交换 UUID。
UUID=XXX none swap sw 0 0
运行swapon -a
以使其可从 处使用/etc/fstab
。
答案3
您的交换文件应位于 /swapfile 中,并具有 600 权限。
#moving file and changing rights
sudo mv /root/myswapfile /myswapfile
sudo chmod 600 /myswapfile
sudo mkswap /myswapfile
添加交换文件。我想你忘记了这个命令
sudo swapon /myswapfile
#check swap is working
sudo swapon -s
答案4
你可以这样做:
sudo umount -a
gedit /etc/fstab
并写入交换的位置:
/proc/swap proc default errors=noremount 1
然后是这个:
sudo mount -a
然后运行 gpart 并将交换驱动器设置为交换,然后将其安装在根开发驱动器上,这样它可能可以正常工作。