有时候我们机器的内存不够时,就可以通过创建 Swap 分区来缓解这种尴尬场面,Linux 下的 Swap (交换分区)相当于 Windows 下的”虚拟内存”,当系统内存不够时,把一部分硬盘空间虚拟成内存使用,从而解决内存不够用的情况。下面介绍下 Linux 如何创建和增加 Swap 分区。
系统在什么情况下才会使用SWAP?
实际上,并不是等所有的物理内存都消耗完毕之后,才去使用swap的空间,什么时候使用是由swappiness 参数值控制。
cat /proc/sys/vm/swappiness
60
该值默认值是60.
swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,
swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。
现在服务器的内存动不动就是上百G,所以我们可以把这个参数值设置的低一些,让操作系统尽可能的使用物理内存,降低系统对swap的使用,从而提高系统的性能。
一般来说可以按照如下规则设置swap大小:
4G以内的物理内存,SWAP 设置为内存的2倍。
4-8G的物理内存,SWAP 等于内存大小。
8-64G 的物理内存,SWAP 设置为8G。
64-256G物理内存,SWAP 设置为16G。
一、 Swap 分区添加【FILE形式】
1.查看 Linux 当前分区情况:
free -m
2.创建要作为 Swap 分区文件(其中 /root/swapfile
是文件位置,bs*count
是文件大下,例如以下命令就会创建一个 2G 的文件):
dd if=/dev/zero of=/root/swapfile bs=1024 count=2048k
3.建立 Swap 的文件系统(格式化为 Swap 分区文件):
mkswap /root/swapfile
4.启用 Swap 分区:
swapon /root/swapfile
5.查看 Linux 当前分区:
free -m
如果有 Swap 就说明创建成功了:
6.设置开启启动,在 /etc/fstab 文件中加入一行代码:
/root/swapfile swap swap defaults 0 0
删除swap file
swapoff /root/swapfile
rm /root/swapfile
去掉fstab中添加启动行
二、Swap 分区添加【IMG形式】
1.通过dd命令增加swap
dd if=/dev/zero of=/var/swap.img bs=1024 count=512000
# 我们将swap文件写在/var/swap.img
# 参数:
# if 输入of 输出bs 块大小count 总大小
2.建立
sudo mkswap /var/swap.img
3.启动
sudo swapon /var/swap.img
4.查看swap是否生效:
free
total used free shared buffers cached
Mem: 379772 370768 9004 0 4244 59912
-/+ buffers/cache: 306612 73160
Swap: 511992 91400 420592
5.查看swap状态
cat /proc/swaps
Filename Type Size Used Priority
/var/swap.img file 511992 107988 -1
6.开机加载swap分区
通过修改vi/vim来编辑/etc/fstab,启动时自动加载SWAP!
在该文件末尾中追加
/var/swap.img swap swap defaults 0 0
7.清理swap分区
如果不再需要swap,可以清理该分区
swapoff /var/swap.img
三、总结
上面两个方式可选择一个来操作。
虽然我给小内存的服务器都加了 Swap 分区,但是好像效果不明显,不知道是不是自己操作的问题,按道理“在系统内存不够时,把一部分硬盘空间虚拟成内存使用”应该能解决我内存不够用的情况,但往往不够用的时候好像还是卡,所以经济条件允许直接升级配置吧。
- 最新
- 最热
只看作者