Linux磁盘扩容 之 LVM 扩容之路

Linux磁盘扩容 之 LVM 扩容之路引言众所周知,我们大多数服务都是跑在Linux上的,因为Linux命令行形式的特性,也导致了很多开发者只喜欢把Linux当做跑服务的机器,并不作为日常的使用。这样导致了我们只能记得常用的部署命令,但遇到一些复杂的Linux运维就不知如何下手了。这不,我这两天就遇到了服务器磁盘不足的问题,一开始只想Google一下快速搞定,结果还是得补补Linux中LVM的这块知识点才可以。为了方便后人快速扩容,特此记录。LVM是什么LVM(LogicalVolumeManager)翻译过来是逻辑卷管理器,大家可

大家好,又见面了,我是你们的朋友全栈君。

引言

众所周知,我们大多数服务都是跑在 Linux上的,因为Linux命令行形式的特性,也导致了很多开发者只喜欢把Linux当做跑服务的机器,并不作为日常的使用。这样导致了我们只能记得常用的部署命令,但遇到一些复杂的Linux运维就不知如何下手了。这不,我这两天就遇到了服务器磁盘不足的问题,一开始只想Google一下快速搞定,结果还是得补补Linux中LVM的这块知识点才可以。为了方便后人快速扩容,特此记录。

LVM是什么

LVM(Logical Volume Manager)翻译过来是逻辑卷管理器,大家可以把它认为是一种“RAID”形式的统一将多个磁盘当一块来用的中间层(可以暂时这么理解,但其实原理不是一回事)。就是说假如我们有3块4T的硬盘,我们可以用LVM组成一个12T的硬盘来用,后期也可以非常安全的在线扩容。ps:现在Linux安装的时候其实默认就采用了LVM的形式。

LVM的组成

LVM从上至下主要由三部分组成:

  • Physical Volumes 物理卷:通过物理存储设备来创建,就是我们的磁盘;
  • Volume Group 卷组:有了PV(特指物理卷)后,我们就可以创建VG(特指卷组);
  • Logical Volume 逻辑卷:那么有了VG后,就可以创建可供我们最终存储文件挂载所使用的LV(逻辑卷)。
    在这里插入图片描述
    为了方便大家理解,我就举个炸油条的例子。我们最底层的物理卷就相当于我们的一带面粉,从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命令(详细):
在这里插入图片描述
这里就比较明确了,我们原来没有把面盆和好的面放到一个缸里,而是放到了两个缸里:cache3centos。我空闲的那484 G的面缸原来一直都没用起来,我直接就是给他降级,注意:我们所有逆操作必须把比自己高一级或者同级的降一级再操作。这里我想把同为LG的cache3centos放到一起,也就是把cache3合并到centos里,就需要先把cache3降级。删除VG的指令是:vgremove cache3
在这里插入图片描述
好啦,这就把cache3这个缸给删了,放到了面盆里了。
在这里插入图片描述
我们现在知道面粉已经在dev/sda6dev/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~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151521.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • staruml使用方法(对讲机按键使用说明)

    综述StarUML是一种生成类图和其他类型的统一建模语言(UML)图表的工具。这是一个用Java语言描述的创建类图的简明手册。StarUML(简称SU),是一种创建UML类图,并能够自动生成Java的“stubcode”的工具。SU也可以做JAVA逆向工程,以产生相应的UML图表。在本教程中,我们将使用SU设计一个pizza饼。执行下列步骤,可以创建如下面所示的UML图。SU可以生…

  • python基础(5)字典「建议收藏」

    python基础(5)字典「建议收藏」字典字典的key和value一一对应的,字典是可变的,也是有序的(python3.6版本开始字典有序),可迭代的增加元素当key不存在时,直接赋值a={"status"

  • net开发高级面试题2021_net面试题2021

    net开发高级面试题2021_net面试题2021文章目录1.NET/dotnetcore/.NETframework的关系2.corefx,coreclr都是什么?3.asp.netcore3.1Kestrel3.2asp.netcore主要的特性3.3startupclass的作用?3.4Startupclass的configservice方法有什么作用?3.5startupclass的configure方法有什么作用?3.6什么是metapackages?3.7什么是中间件?3.8application

  • (转载)LaTeX实战经验:从零开始快速入门

    (转载)LaTeX实战经验:从零开始快速入门对于理工科的学生来说,尤其是从研究生阶段开始,LaTeX应该会是日常中必不可少的写作工具。毕竟要写什么公式的话,不用LaTeX实在是不知道要怎么办。况且要是投稍微专业一点的论文,LaTeX是必须的,没人会接收Word文件。此篇为写给一些想快速入门LaTeX的朋友,至于为什么要叫从零开始,因为我就是从零开始学会的LaTeX。如果你不是那么“聪慧”,LaTeX可能的学习曲线会显得比较曲折。但熟能生…

  • layoutSubviews解析

    layoutSubviews解析1.layoutSubviews的触发1、 init初始化不会触发layoutSubviews2、 addSubview会触发layoutSubviews3、 设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化4、 滚动一个UIScrollView会触发layoutSubviews5、 旋转Screen

  • idea mac 常用快捷键[通俗易懂]

    #IDEAMacOS全局查找快捷键shift+Command+F#全局类名称搜索shift+shift(没有发生变化)#移动代码行方式一:shift+command+⬆️或者⬇️方式二:shift+option+⬆️或者⬇️#光标在代码中间,将光标移动到行尾并且自动添加行尾结束符号;shift+command+return(这里不会进行换行操作,eclipse上面会进行换行操作)#代码美化o…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号