下面是如何在Ubuntu中设置虚拟内存的步骤。
首先,我们需要创建一个交换文件(swap file)。交换文件就像一个大型缓冲区,在RAM不足时可以用来临时储藏数据。创建交换文件需要使用到命令行界面(CLI),所以首先打开你的终端。
步骤一:检查当前系统是否已经有了交换空间
输入以下命令:
sudo swapon --show
如果这个命令没有返回任何结果,那么说明你当前没有启用任何交换空间。
步骤二:创建新的swap file
我们将会在 /swapfile 路径下创建新的 swap file。首先要决定这个 swap file 的大小。通常来说, 2GB 是一个合适大小, 但如果你有更多硬盘空间并且经常遇到 RAM 不足问题, 可以考虑设置更大一些.
输入以下命令:
sudo fallocate -l 2G /swapfile
这里 "-l" 后面跟着要分配给 swap 文件大小. 这里我们分配了2GB.
步骤三:设置正确的权限
为了确保只有 root 用户可以读写这个文件,我们需要设置正确的权限。输入以下命令:
sudo chmod 600 /swapfile
步骤四:把新文件设为swap file
输入以下命令:
sudo mkswap /swapfile
这个命令会把我们刚才创建的文件设定为 swap file。
步骤五:启用新的 swap file
输入以下命令:
sudo swapon /swapfile
现在,你已经成功创建并启用了一个新的 swap file。
但是,如果你现在重启电脑,这个 swap 文件会被自动关闭。所以我们需要做一些额外操作来确保每次开机都能自动开启它。
步骤六:让系统每次开机都自动使用新建立好的交换空间
打开 fstab 文件:
sudo nano /etc/fstab
然后在最后一行添加如下内容:
/swapfile none swap sw 0 0
ctrl+o 回车 ctrl+x 保存并关闭 fstab 文件.
如果虚拟内存不占用是0 或者占用较少只有几M左右 按一下方法开启
内存使用接近100%,SWAP使用率却为0。
问题原因:针对linux镜像,vm.swappiness 默认为0,即只有100%物理内存都被占用才会使用swap。
解决方案:将vm.swappines设置成60,代表当内存使用率达到40%的时候,就开始使用swap。配置方法:在/etc/sysctl.conf中添加一行“vm.swappiness = 60”。
#按i进入编辑模式
vim /etc/sysctl.conf
#把vm.swappiness = 0 改成 vm.swappiness = 60
#按Esc 在输入:wq 保存即可 输入下面命令刷新内核
sudo sysctl -p
#这条范围在0-200 推荐100
echo 130 > /proc/sys/vm/vfs_cache_pressure
启用虚拟内存
在大多数系统上,默认情况下 Docker 无法设置交换空间。您可以通过运行 docker info
并在底部附近查找 WARNING: No swap limit support
的输出来确认这一点。
启用虚拟内存是完全可选的,但如果您要为他人托管并防止出现 OOM 错误,我们建议您开启。
要启用虚拟内存,请以 root 用户身份打开 /etc/default/grub
并找到以 GRUB_CMDLINE_LINUX_DEFAULT
为开头的一行。确保该行在双引号内的某处包含 swapaccount=1
。
之后,运行 sudo update-grub
然后运行 sudo reboot
重启服务器以启用虚拟内存。 下面是该行内容示例,请勿逐字复制此行。 它通常具有其他特定于操作系统的参数。
GRUB_CMDLINE_LINUX_DEFAULT="swapaccount=1"
GRUB 配置
一些 Linux 发行版可能会忽略 GRUB_CMDLINE_LINUX_DEFAULT
。因此,如果默认的不适合您,您可能不得不使用 GRUB_CMDLINE_LINUX
。
vim /etc/default/grub
Comments 1 条评论