linux swap分区调整
近期安装了一套ubantu系统,因为物理机内存有限,想调整swap分区,顾边学边整理的此篇内容。
swap分区多大合适
我们在安装系统的时候已经建立了 swap 分区。swap 分区通常被称为交换分区,这是一块特殊的硬盘空间,即当实际内存不够用的时候,操作系统会从内存中取出一部分暂时不用的数据,放在交换分区中,从而为当前运行的程序腾出足够的内存空间。
那么swap分区到底设置成多大才最优?
以前几乎所有Linux 系统管理的书上都推荐设置交换分区大小为内存的2倍。这些建议到了现在就是也适用,具体情况还是要根据实际情况作出调整。
首先看下Redhat官方的文档中关于swap分区大小设置的建议:
物理内存 | 建议的交换空间大小 | 如果开启休眠功能建议的教会空间大小 |
---|---|---|
<= 2GB | 内存的2倍 | 内存的3倍 |
>2GB-8GB | 等于内存大小 | 内存的2倍 |
>8GB-64GB | 至少4G | 内存的1.5倍 |
>64GB | 至少4G | 不建议使用休眠 |
实际上,系统中交换分区的大小并不取决于物理内存的量,而是取决于系统中内存的负荷,所以在安装系统时要根据具体的业务来设置SWAP的值。
一般都需要配置一点swap分区,桌面配置多一点,服务器配置少一点。而对于swap分区的具体使用细节,由一个叫swappiness参数来控制。
Swappiness
实际上,并不是等所有的物理内存都消耗完毕之后,才去使用swap的空间,什么时候使用是由swappiness 参数值控制。
1 | cat procsysvmswappiness |
在ubuntu上默认是60,一般大部分都有应该是这个值,也有一些linux版本作出了优化调整。
swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,
swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面
swap分区调整步骤
1、我们使用free -m 查看交换空间的大小
1 | ubtu:~$ free -m |
2、使用swapon -s 查看交换空间文件挂载的对应的文件
如下swapfile既是挂载的文件。
1 | ubtu:~$ swapon -s |
3、停掉挂载的交换空间的文件
1 | sudo swapoff swapfile |
4、删除交换空间文件
1 | sudo rm swapfile |
5、创建新的挂载文件以及设置大小,可参考上面进行设置,因为我的是8G内存,这里交换空间设置8G。
1 | sudo fallocate -l 8G swapfile |
设置完成,可以使用ls -l swapfile 查看创建的swapfile有没有权限。
授权如果不为 -rw——- ,请执行 sudo chmod 600 swapfile 给文件赋权。
若漏掉则在挂载时会有提示:mkswap: swapfile: insecure permissions 0644, fix with: chmod 0600 swapfile
6、将文件挂载到交换空间
1 | sudo mkswap swapfile |
挂载成功提示:
1 | 正在设置交换空间版本 1,大小 = 8 GiB (8589930496 个字节) |
7、启动交换空间
1 | sudo swapon swapfile |
可以free -m 或sudo swapon –show 查看是否设置成功。
8、若要长久生效,还要使用sudo vi etcfstab 将默认的swapfile 那行注释掉,在最后面增加下面内容
1 | swapfile swap swap default 0 0 |