大家好,又见面了,我是你们的朋友全栈君。
众所周知,我们大多数服务都是跑在 Linux上的,因为Linux命令行形式的特性,也导致了很多开发者只喜欢把Linux当做跑服务的机器,并不作为日常的使用。这样导致了我们只能记得常用的部署命令,但遇到一些复杂的Linux运维就不知如何下手了。这不,我这两天就遇到了服务器磁盘不足的问题,一开始只想Google一下快速搞定,结果还是得补补Linux中LVM的这块知识点才可以。为了方便后人快速扩容,特此记录。
LVM(Logical Volume Manager)翻译过来是逻辑卷管理器,大家可以把它认为是一种“RAID”形式的统一将多个磁盘当一块来用的中间层(可以暂时这么理解,但其实原理不是一回事)。就是说假如我们有3块4T的硬盘,我们可以用LVM组成一个12T的硬盘来用,后期也可以非常安全的在线扩容。ps:现在Linux安装的时候其实默认就采用了LVM的形式。
LVM从上至下主要由三部分组成:
为了方便大家理解,我就举个炸油条的例子。我们最底层的物理卷就相当于我们的一带面粉,从JD买回来两袋面粉后,我们需要对面粉进行和面,我们一袋面和一盆,和了两盆(这两盆就是PV)。然后我们可以把这两盆醒好的面放到一个大缸里待使用(大缸就是VG)。那炸油条的操作员就可以通过拿大缸里和好的面(LV),然后制作油条 。操作员想拿多少拿多少,对不对,这一缸面想怎么用就怎么用。至于这一缸面是从那个面粉里来的,不重要好吧,直接用!ps:其实PV在创建的时候会默认将面粉分成4M一份的形式,这个4M的最小单元叫PE(Physical Extend)。
那么了解了基本概念后,我们就要开始扩容了,我们先使用df -h
看看我的服务器的可用空间:
太惨了吧!只有不到30G可用,这能干点啥,但现在硬盘至少都500G了怎么才这么点可用空间,应该是没用起来导致的。所以我们用lsblk
来看看磁盘情况:
果然,可以看到我最大的一块LV分区(cach3-lvcache3)拥有484.2G的存储并没有使用。那么我们先来看看这台机器的油条生产线的情况如何:
首先看看PV面盆,使用pvs
命令(精简)pvdisplay
命令(详细):
我这个机器一共有三盆面粉,分别是:/dev/sda3 [54 G]、/dev/sda6 [279 G]、/dev/sda7 [204 G],还记得我们上面说的PE嘛,可以看到都是4M。
我们再来看看我的面缸:使用vgs
命令(精简)vgdiplay
命令(详细):
这里就比较明确了,我们原来没有把面盆和好的面放到一个缸里,而是放到了两个缸里:cache3
、centos
。我空闲的那484 G的面缸原来一直都没用起来,我直接就是给他降级,注意:我们所有逆操作必须把比自己高一级或者同级的降一级再操作。这里我想把同为LG的cache3
和 centos
放到一起,也就是把cache3
合并到centos
里,就需要先把cache3
降级。删除VG的指令是:vgremove cache3
好啦,这就把cache3
这个缸给删了,放到了面盆里了。
我们现在知道面粉已经在dev/sda6
、dev/sda7
盆里了,我们现在就要把这俩盆里的面给放到缸里。使用:vgextend centos /dev/sda6
命令。添加后可以看到VG(面缸)已经合并为一个,总大小是539G了,可以用的是484G。
我把这484G可用空间分别给到了现有home LV 380G、root LV 100G。这个时候再看我们的操作室LV就已经扩容啦!
咦~但我们的文件系统为啥还是这么小呢?这是因为逻辑卷是一个底层的东西,操作系统要使用这个东西都要进行一个格式化也就是创建文件系统,而文件系统在创建的时候大小已经固定了,我们拉伸了底层的逻辑卷却没有更新这个文件系统。这个时候操作系统还没法识别到这个新的空间,所以我们要更新一下让操作系统知道我们已经扩容啦!不同格式的分区更新文件系统的方式也不一样。需要查看一下你的文件系统是ext4还是xfs。如果是ext4使用:resize2fs /dev/centos/root
来更新,如果是xfs 使用:xfs_growfs /dev/mapper/centos-root
命令。怎么查看自己分区的格式呢?使用:cat /etc/fstab | grep centos-home
命令
可以看到,这里我是xfs,所以我使用:xfs_growfs /dev/mapper/centos-root
命令。
Yeah~ 终于搞定了!
整体来说LVM还是非常方便的,可以非常安全的对我们的文件系统进行调整。希望对你有帮助! See you~
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151521.html原文链接:https://javaforall.cn