一、操作背景:
公司中有一部分主机在开始设计的时候,并未考虑到SWAP的大小,只是分配了物理内存的2倍-4G,导致后期应用部署完成后对系统的SWAP分区要求达不到标准。因此经过部分和领导讨论后,决定在同一块磁盘上来减少根分区的大小,并使用缩减出来的大小去增加swap分区大小的操作,这中间要保障数据的完整和业务应用不丢失。这样做既可以保障数据盘不受影响,也保证应用系统在完成后可以正常使用,也减少了以后的一些风险(比如要使用额外的磁盘来增加swap空间大小需要考虑额外磁盘的稳定等)。
二、操作分析:
由于根分区和swap在开机运行的时候是处于使用状态,是不能对其进行直接操作的。考虑至此,需要使用到LINUX的救援模式,且该救援模式必须是不能执行chroot /mnt/sysimage。单用户模式和救援模式执行chroot后都不能对根分区进行操作。
三、LVM原理操作步骤和注意事项回顾:
先回顾下针对LV的扩展或缩小步骤、以及操作方法。
a、从磁盘到LV的过程如下:
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 这步可以省去
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增加空间实际操作步骤如下
正式操作之前先在实验环境下进行2-3遍测试后,再进行现实再用的环境下进行操作。
3-1、扩展SWAP分区大小的前提条件
1)、swap必须和根分区(或者说空间来源)在同一个磁盘; 不要问为什么必须在一个磁盘上
2)、swap必须是LVM格式;
3)、必须在救援模式模式下完成缩减/根分区的大小。因为lvm只能在线升级,缩小必须处于不使用状态下进行;
3-2、缩小根分区和扩展SWAP的详细步骤:
1)、先缩小根分区大小。
a、 插入系统光盘,启动后输入linux rescue进去救援模式,不要配置网络,不要让系统根挂载到/mnt/sysimage上,所以最后的界面选择“skip”
b、检查是否符合条件并做好准备
c、开始缩小根文件系统大小
d、减小LV_根分区大小
先检查大小并计算实际大小。
根据上图显示的信息计算下。此时得出lv-root的LE数量为24525,总的PE数量为25549,大小4M,所以可以减少的大小为 (25549-24525)*4M=1024*4M=4G。
减小根分区大小
e、重启系统,再次查看根分区情况
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分区大小操作完成,可以多重启几次系统,并进入系统检查验证。
四、总结:
1)、LVM的磁盘或其他磁盘在挂载的时候最好使用UUID写到/etc/fstab文件中进行挂载,
UUID=44ba2667-3757-4a49-b215-698ae1425fc0 /mountdata ext3 defaults 0 0 (格式)
以避免磁盘开机的时候出现盘符漂移导致系统运行出现错误;
2)、被缩减空间的磁盘必须处于卸载状态下才能操作,但可以对在使用的磁盘进行在线扩展;
3)、fsck命令执行是很好的检查当前磁盘状态的工具,最好不要省去该步骤;