一、操作背景:

       公司中有一部分主机在开始设计的时候,并未考虑到SWAP的大小,只是分配了物理内存的2倍-4G,导致后期应用部署完成后对系统的SWAP分区要求达不到标准。因此经过部分和领导讨论后,决定在同一块磁盘上来减少根分区的大小,并使用缩减出来的大小去增加swap分区大小的操作,这中间要保障数据的完整和业务应用不丢失。这样做既可以保障数据盘不受影响,也保证应用系统在完成后可以正常使用,也减少了以后的一些风险(比如要使用额外的磁盘来增加swap空间大小需要考虑额外磁盘的稳定等)。

二、操作分析:

        由于根分区和swap在开机运行的时候是处于使用状态,是不能对其进行直接操作的。考虑至此,需要使用到LINUX的救援模式,且该救援模式必须是不能执行chroot  /mnt/sysp_w_picpath。单用户模式和救援模式执行chroot后都不能对根分区进行操作。

三、LVM原理操作步骤和注意事项回顾:

     先回顾下针对LV的扩展或缩小步骤、以及操作方法。

     a、从磁盘到LV的过程如下:

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第1张图片

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第2张图片

    b、以下通过扩展和缩减空间来具体说明

b-1、扩展LV

1)、卸载LV

命令:umount “挂载目录”  这一步可以不用做,因LVM的2版本支持在线升级扩展空间。

2)、扩展LV或先扩展VG

命令:vgextend vgdata100  /dev/sdb1  表示从pv为sdb1的分区中扩展空间到vgdata100的卷组中。

命令:lvextend -L +5G /dev/lv00/lv01 或者 lvresize -L 50G /dev/lv00/lv01

lvextend 表示增加5G,lvresize表示增加到50G,是调整后的容量。

3)、检查文件系统

命令:fsck -f /dev/vg00/lv01

4)、重建文件系统

  命令:resize2fs /dev/lv00/lv01

这一步很关键,重建文件系统,不用担心LV的数据会丢失,以防丢失也可以先备份下LV里的数据。

5)、挂载LV

命令:mount /dev/lv001/lv01 /opt   或执行mount -a     这步可以省去

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第3张图片

 

b-2、缩小LV

  缩小LV需要事先知道LV中的数据容量大小,缩小容量值不应超过剩余空间容量,而且要知道减少LV容量后的新大小。可以通过lvscan来查看LV容量,通过vgdisplay来查看剩余容量。缩小空间的磁盘必须需要卸载下来,不能在线缩小正在使用中的磁盘。

1)、卸载LV

命令:umount “挂载目录”

2)、检查文件系统

命令:fsck -f /dev/lv00/lv01 

3)、调整LV大小并重建文件系统

命令:resize2fs /dev/vg00/lv01 2G

4)、减小LV容量

命令:lvreduce -L -3G /dev/vg00/lv01

5)、挂载LV

  命令:mount /dev/lv001/lv01 /opt

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第4张图片

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第5张图片

 

三、缩减根分区的空间,并划分给swap增加空间实际操作步骤如下

    正式操作之前先在实验环境下进行2-3遍测试后,再进行现实再用的环境下进行操作。

3-1、扩展SWAP分区大小的前提条件

1)、swap必须和根分区(或者说空间来源)在同一个磁盘; 不要问为什么必须在一个磁盘上
2)、swap必须是LVM格式;
3)、必须在救援模式模式下完成缩减/根分区的大小。因为lvm只能在线升级,缩小必须处于不使用状态下进行;

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第6张图片

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第7张图片

3-2、缩小根分区和扩展SWAP的详细步骤:

1)、先缩小根分区大小。

  a、 插入系统光盘,启动后输入linux rescue进去救援模式,不要配置网络,不要让系统根挂载到/mnt/sysp_w_picpath上,所以最后的界面选择“skip

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第8张图片

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第9张图片

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第10张图片

b、检查是否符合条件并做好准备

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第11张图片

c、开始缩小根文件系统大小

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第12张图片

d、减小LV_根分区大小

     先检查大小并计算实际大小。

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第13张图片

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第14张图片

根据上图显示的信息计算下。此时得出lv-root的LE数量为24525,总的PE数量为25549,大小4M,所以可以减少的大小为 (25549-24525)*4M=1024*4M=4G

    减小根分区大小

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第15张图片

 e、重启系统,再次查看根分区情况

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第16张图片

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第17张图片

 2)、开始增加swap空间大小

a、可以使用该步骤

         1.swapoff -v /dev/centos/swap     //关闭swap分区
         2. lvresize -L +4G /dev/centos/swap   //增加swap卷4G空间
         3.resize2fs /dev/centos/swap    //让添加的空间生效
         4.mkswap /dev/centos/swap   //建立swap分区
         5.swapon -va /dev/centos/swap   //启用swap分区

b、   或以下步骤

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第18张图片

同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤_第19张图片

至此扩展swap分区大小操作完成,可以多重启几次系统,并进入系统检查验证。

 

 四、总结:

 1)、LVM的磁盘或其他磁盘在挂载的时候最好使用UUID写到/etc/fstab文件中进行挂载,

UUID=44ba2667-3757-4a49-b215-698ae1425fc0       /mountdata      ext3    defaults 0 0 (格式)
以避免磁盘开机的时候出现盘符漂移导致系统运行出现错误;

 2)、被缩减空间的磁盘必须处于卸载状态下才能操作,但可以对在使用的磁盘进行在线扩展;

 3)、fsck命令执行是很好的检查当前磁盘状态的工具,最好不要省去该步骤;