通过创建Swap分区解决系统内存不足的问题

78 次浏览

在Linux系统中,Swap分区(交换分区)用于在物理内存不足时,将不活跃的内存数据临时存储到硬盘上,从而释放物理内存供当前运行的程序使用。Swap分区可以通过物理分区或文件来创建。

swapfile 就像一个普通文件,系统可以把它当作交换空间来使用。Ubuntu 的现代版本在安装时通常会自动创建一个 swapfile。

检查你的系统是否已经配置了交换空间:

sudo swapon --show
free -h

如果没有任何输出或 Swap 一行显示为 0,说明你没有启用交换空间。

1、创建Swap交换文件

我们将创建一个名为 swapfile 的大小为 4GB 的文件。你可以将 4G 替换为你需要的大小(例如 2G、8G、16G)。通常建议交换空间大小为你物理内存的 1 到 2 倍。

sudo fallocate -l 4G /swapfile

如果 fallocate 命令报错或不工作,可以使用 dd 命令:

sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress

设置正确的权限,只有 root 用户可以读写它:

sudo chmod 600 /swapfile

2、格式化文件为交换空间

使用 mkswap 命令将这个文件设置为交换格式:

sudo mkswap /swapfile

3、启用交换文件

现在,启用这个新创建的交换文件:

sudo swapon /swapfile

再次运行 sudo swapon –show 或 free -h,你应该能看到新的交换空间已经生效了。

4、使其永久生效(重要)

上面的 swapon 命令只会在当前会话有效,重启后就会失效。要让它永久生效,需要将交换文件的信息写入 /etc/fstab 文件。

先备份 fstab 文件(一个好习惯)

sudo cp /etc/fstab /etc/fstab.bak

使用 echo 命令将配置追加到 fstab 文件末尾:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

现在,即使重启系统,交换文件也会自动挂载。

5、修改swappiness 值

检查 swappiness 值:

cat /proc/sys/vm/swappiness

如果swappiness 值为0,可将其修改至10~60

sudo nano /etc/sysctl.conf

如果文件中已存在 vm.swappiness 行,直接修改其值即可。否则可在末尾添加一行:

vm.swappiness = 60

保存并退出:保存对文件的修改并退出编辑器。

执行以下命令,无需重启即可使新的 swappiness 值立即生效:

sudo sysctl -p

可以再次使用 cat /proc/sys/vm/swappiness 命令来验证设置是否成功。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部