swapon 无效,/proc/swaps 保持为空

swapon 无效,/proc/swaps 保持为空

我的 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 并将交换驱动器设置为交换,然后将其安装在根开发驱动器上,这样它可能可以正常工作。

相关内容