大概阅读时间6分钟
什么是SWAP分区
写这篇笔记的目的是因为前不久搭建的这个blog因为修改主题预览时崩掉了。。。
首先我们知道Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory。
而Swap也叫交换空间,相当于是一个虚拟内存。系统为了应付一些需要大量内存的应用,而将磁盘上的一部分空间当做内存使用,当物理内存不够用时,就需要将其中一些数据交换到交换空间。
不过需要注意的是,它要比物理内存的读写速度更慢,一般的建议大小为物理内存的2倍(如果物理内存足够大就不用开启SWAP了)。
开启步骤
如果你在安装过程中就开启选择了SWAP分区,那么就可以跳过这个笔记了。
因为我使用的云主机创建时并没有开启SWAP,所以需要手动设置并启用分区,避免因为内存不足而造成各种问题。
-
创建一个swap文件
可以使用fallocate或者dd工具来完成:sudo fallocate -l 2G /swap
sudo dd if=/dev/zero of=/swap bs=1M count=2048
-
设置读写权限
出于安全考虑,swap文件应该只能被root用户读写。所以修改一下权限:sudo chmod 600 /swap
-
将swap文件创建为swap分区
创建了文件之后,系统仍然不知道使用他作为swap空间,所以进行下面设置:sudo mkswap /swap
设置之后,启用SWAP分区:
sudo swapon /swap
-
根据需求设置使用SWAP的倾向
系统的Swappiness参数控制使用swap空间的倾向。值范围从0到100,较低的值使得内核更倾向于使用物理内存,而较高的值使得内核更倾向于使用swap空间。
这个根据需求确认是否进行调整,默认为60:sudo sysctl vm.swappiness=20
添加到/etc/sysctl.conf文件中以确保永久生效:
echo 'vm.swappiness=20' | sudo tee -a /etc/sysctl.conf
-
设置SWAP分区永久挂载:
默认情况下,当系统重启时,swap不会自动启用。还需要编辑/etc/fstab文件使其永久生效(vim编辑也可以):echo '/swap none swap sw 0 0' | sudo tee -a /etc/fstab
完成配置
通过这些步骤,应该已经成功在Ubuntu 20.04系统上设置了2GB的swap分区。当你使用free -h
命令时,应该可以看到swap分区已经启用了。
对于资源紧张内存使用存在压力时,可以开启swap来顶住压力,保证系统能正常运行。