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

use*_*611 11 swap

我的 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)

(空列表)

我怎样才能让它工作?丢失交换的原因可能是什么?

mch*_*hid 6

首先,擦除您的原始交换文件:

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将覆盖整个文件!


UNI*_*m95 1

您的交换文件应该位于 /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 并将交换驱动器设置为交换,并将其安装在根开发驱动器上,这样可能可以正常工作。

  • 呃...`sudo umount -a` 不是卸载所有东西吗?(如果使用的话可能会破坏东西)如果您尝试首先卸载现有的交换内容,最好在“mount”中找到它们,然后专门卸载它们,或者使用“sudo swapoff -a”。 (4认同)
  • 运行 `umount -a` 确实是一个非常愚蠢的想法。卸载您需要卸载的内容,而不是全部。 (2认同)