增加 swap(文件)

创建 swap

生成一个空文件(2048M)

1
2
3
4
5
6
7
# 创建一个2G的swap文件
sudo fallocate -l 4G /swapfile

# 或者使用dd命令来创建,建议用fallocate,是瞬间生成的,不像dd真的要写入文件内容。
# sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

sudo chmod 600 /swapfile

标记成 swap 文件

1
sudo mkswap /swapfile

手动挂载 swap

1
2
3
4
5
挂载: 
sudo swapon /swapfile

卸载:
sudo swapoff /swapfile

开机自动挂载

vim /etc/fstab 添加一行

1
/swapfile   swap  swap  defaults  0  0

删除 swap(文件)

查看 swap 文件地址

1
swapon

手动关闭 swap

1
sudo swapoff /swapfile

删除 swap 文件

1
sudo rm -f /swapfile

取消开机自动挂载

vim /etc/fstab, 删除包含 swapfile 的一行

删除 swap(LVM 分区)

判断是否是 LVM 分区

LVM 分区做 swap,如果你用 centos7 默认安装的话, 就是用的 LV 做 swap,可以 cat /etc/fstablvdisplay 确认下
image.png

image.png

上图所示, 就是用的 lv 做 swap 分区

关闭 swap

马上关闭:

1
swapoff -a

修改配置永久关闭:
vim /etc/fstab 删除包含 swap 的那一行

保守一点,如果 swap 占用空间不要了,lvm 也不动了,那么就到此为止就行。

删除 swap 的 LV

1
2
# lvremove <vg名字> <lv名字>
lvremove centos swap

扩容剩下的 LV

1
lvextend -l +100%FREE /dev/mapper/centos-root

动态增加磁盘大小

1
sudo resize2fs  /dev/sdb1
1
sudo xfs_growfs /dev/sdb1

在早期的 RHEL 中,由于 resize2fs 无在线 resize 功能,故额外提供了 ext2online。

1
sudo ext2online /dev/sdb1

修改内核参数

CentOS7 系统修改 /etc/default/grub

image.png

然后执行:

1
grub2-mkconfig -o /boot/grub2/grub.cfg

更新 grub 配置

如果你已经删除了 LV,但是忘记修改内核参数了,那么重启后会无法启动,解决方法见:centos删除swap后无法启动

调整内核 swap 策略

swap 使用是根据内核参数 vm.swappiness 决定的, 数值越大表示内核会更加积极的将内存中的数据移动到 Swap 分区

vm.swappiness 含义
0 指示内核尽可能避免交换。
10-50 指示内核在换出内存页面时稍微积极一些
50-100 指示内核在换出内存页面时适度积极
100 指示内核在换出内存页面时非常积极

查看内核参数

1
2
sysctl -a
sysctl vm.swappiness

临时修改

方法一

1
sysctl vm.swappiness=100

方法二

1
echo "100" > /proc/sys/vm/swappiness

永久修改

vim /etc/sysctl.conf

1
vm.swappiness = 100

执行 sysctl -p 马上生效。