博客园  :: 首页  :: 管理

场景:关于Linux系统下,需要将swap分区的大小由128GB,缩减调整到32GB (swap分区是一个LVM格式的分区)

操作系统:Red Hat Enterprise Linux Server release 7.9 (Maipo)

 

1、先看一下现状,当前系统是有占用swap分区的:

[root@qq-5201351 ~]# free  -m
              total        used        free      shared  buff/cache   available
Mem:          63464       18618        3557       39586       41287        4743
Swap:        131071       22834      108237

2、接着、笔者有使用swapon -s 命令查询了一下、当前系统中的使用到的swap分区只有 /dev/dm-9

3、分析/dev/dm-9 实则为一个LV的软链接的指向,即 /dev/vgEBS/lvSwap,再通过lvs命令也可以看到,如下:

[root@qq-5201351 ~]# lvs
  LV      VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lvAudit vgEBS -wi-ao---- 512.00m
  lvHome  vgEBS -wi-ao---- 512.00m
  lvLog   vgEBS -wi-ao----   5.00g
  lvOpt   vgEBS -wi-ao----   2.00g
  lvRoot  vgEBS -wi-ao----   5.00g
  lvSwap  vgEBS -wi-a----- 128.00g
  lvTmp   vgEBS -wi-ao----  10.00g
  lvVar   vgEBS -wi-ao----   5.00g
  lvVopt  vgEBS -wi-ao----   2.00g
  lvVtmp  vgEBS -wi-ao----   1.00g

4、这样我们知道了,这个swap分区的格式为lvm格式,而且我们接下来就是对这个分区进行物理层与逻辑层(文件系统)的缩减了

因为上面的swap的占用比较大,没有办法完全转移到物理内存当中,如果要在线缩减其实也有办法的,只是过程比较复杂,这里不做讨论

比较好的是、笔者这里的环境,刚好这会有活动,会停止到核心的应用,这样swap空间就会释放出来,那样所占的swap就会很少了,也就好将swap转移到物理内存了,如下:

注意:如下命令是需要条件满足时才能执行,不适合所有的场景,由其生产环境,一定要非常小心

[root@qq-5201351 ~]# swapoff -a

相当于不使用swap空间,这样也会将swap中的空间转移到物理内存空间,等到swap占用为0,就可以先进行物理缩减了

[root@qq-5201351 ~]# lvresize -L 32G /dev/vgEBS/lvSwap
  WARNING: Reducing active logical volume to 32.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vgEBS/lvSwap? [y/n]: y
  Size of logical volume vgEBS/lvSwap changed from 128.00 GiB (32768 extents) to 32.00 GiB (8192 extents).
  Logical volume vgEBS/lvSwap successfully resized.

接下来就是逻辑层(文件系统)的缩减,这里笔者直接重新格式化吧、这样就是一个新的swap文件系统了

[root@qq-5201351 ~]# mkswap /dev/vgEBS/lvSwap
mkswap: /dev/vgEBS/lvSwap: warning: wiping old swap signature.
Setting up swapspace version 1, size = 33554428 KiB
no label, UUID=9b7280d4-1266-4e59-8e90-c95980d7c9c9

最后,在重新使用缩减后的swap分区,因为 /etc/fstab中是有写swap的开机自动挂载(而且挂载源是写的lvm路径格式),于是只需要如下的方式就可以进行启用了,再查询结果验证

[root@qq-5201351 ~]# swapon -a
[root@qq-5201351 ~]# free  -m
              total        used        free      shared  buff/cache   available
Mem:          63464        2524       55737        3226        5202       57197
Swap:         32767           0       32767
[root@qq-5201351 ~]#

补充说明:对于swap文件系统的lvm分区,无论是 lvextend 还是  lvresize 都不支持-r选项的

-r|--resizefs   Resize underlying filesystem together with the LV using fsadm(8).

笔者尝试使用 lvextend -rL 进行扩容,会有如下报错(这样物理边界也不会得到扩容):

fsadm: Filesystem "swap" on device "/dev/mapper/vgEBS-lvSwap" is not supported by this tool.
Filesystem check failed.

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17453895.html