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 命令来验证设置是否成功。