场景:关于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
作者:一名卑微的IT民工
出处:https://www.cnblogs.com/5201351
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
由于博主的水平不高,文章没有高度、深度和广度,只是凑字数,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用读书、参考、引用、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个卑微的IT民工!