从理解概念开始,彻底学会linux下的磁盘扩容操作

对于linux磁盘空间不足需要扩容的情况,其他文章一般只介绍要如何操作,使用什么样的命令,但是不去介绍为什么要这么做,搞得好多小白一头雾水。本文从linux的文件系统开始讲起,帮你彻底学会linux系统中的磁盘扩容操作。

0. 什么满了?

假设你的程序突然不能正常运行了,你怀疑是日志文件将所有的磁盘空间用光,但是你又没有证据,此时你去百度,你大概会学到一个df命令,来查看磁盘的剩余空间。

-h表示以易读的形式展示结果,也就是用g或m作为单位。 -l是只列出本地文件系统

 如果你在你自己的服务器执行这个命令,你很可能看到某一行的记录可用为了0g,已用为100%。这个时候你大概知道:噢,确实是硬盘满了。

但是实际上“硬盘满了”这个说法是很不规范的。 df命令列出的不是硬盘,而是文件系统。如果某一行记录的“已用”为100%,则说明是这个文件系统的空间被用完了,而不是硬盘的空间被用完了。

1. 概念

上边提到,df命令列出的是文件系统的记录,而不是硬盘,那么文件系统与硬盘之间的关系又是怎么样的?下边我们一层一层把相关的概念理清楚了。

以下概念只做很浅显的介绍,有些地方可能表述的很不专业,不过对于我们解决“硬盘空间不足”这个问题来说的话是够用了。

硬盘/磁盘 

物理意义上的硬盘,笔记本电脑一般会携带一块固态硬盘,家用台式机一般会携带多块硬盘。服务器一般是用N块硬盘组成单独的存储矩阵。

分区

假设一块硬盘总容量是100g,分区就是将这个100g给分成不同的区域,你可以分成两个区,一个20g另一个50g, 也可以分成4个区,每个25g。总之你可以将整个硬盘分成不同的区,每个区的大小可以随意指定。一个硬盘至少有一个分区。

物理卷

物理卷是建立在分区上的一个概念,物理卷由N个分区组成。

卷组

卷组是建立在物理卷上的一个概念,卷组由N个物理卷组成。

逻辑卷

从卷组中划分出一块空间,这一块空间就叫做逻辑卷。

文件系统

将逻辑卷进行格式化,就得到了文件系统。文件系统可以挂载到某个文件夹下,此文件夹内的东西就会存储到此文件系统上了。

归纳

 这张图很清楚的描述了linux磁盘管理需要用到的相关概念,以及这些概念之间的关系。这个图非常重要,如果有时间的话建议把图中每个层都简单了解一下

2. 扩容的思路

待完成

3. 给基于vmware的linux虚拟机进行硬盘扩容的实操案例

这里以vmware 和 rocky linux(和centos一样)为实验环境进行讲解。

下边采用的是给原硬盘扩容的方式讲解,后续有时间的话考虑追加关于新增硬盘方式的扩容教程。

虚拟机硬盘扩容

首先关闭当前虚拟机,然后在硬件设置界面,选中硬盘,点击拓展,输入新的容量,点击确定等待扩容完成。

扩容过程可能稍微花点时间,完成后给虚拟机开机,进入系统。

查看硬盘信息

使用 fdisk -l 命令查看一下当前的磁盘信息,如下图所示,可以看见硬盘总大小已经是500G了,但是分区没有变化,两个分区加起来只有300G,还是扩容之前的容量。也就是说多出来的200G对系统来说目前是不可用的。(ps: 下图中还有三个位于 /dev/mapper 的磁盘信息,这三个是逻辑卷,他们的容量是从/dev/sda分出来的,并非额外的容量。)

根据上边提到的关于linux磁盘管理的相关知识,我们从最底层开始,一步一步实现扩容。首先通过上图可以看出,目前空间有了,但是分区还是之前的分区,所以我们要把新增加的容量给新建出一个分区来。

新建分区

使用 fdisk /dev/sda ,进入交互式命令行,  开始创建分区(每个系统的硬盘名称不一样,不一定都是/dev/sda)。 根据提示信息,按照下图输入对应的指令。

执行完上一步后,再次执行 fdisk -l命令,可以看见我们的sda硬盘下多了一个/dev/sda3分区,说明分区创建成功(有个细节可以注意一下,此时的sda3的type为 Linux,而sda2的type为 Linux LVM)

新建物理卷

分区创建完成, 分区的上层是物理卷,所以我们现在需要在分区上创建物理卷。输入 pvcreate /dev/sda3 来创建物理卷

物理卷创建成功,有了物理卷后,我们需要把物理卷加入当前的卷组中。使用命令vgdisplay查看当前卷组信息

将物理卷添加到卷组(也叫逻辑卷组,lvg)

使用 vgextend 命令将新的物理卷加入当前卷组中, vgextend命令的用法如下。其中”卷组名称“字段通过上边的vgdisplay命令就可以看到了。

vgextend 卷组名称 物理卷路径

如下图所示,注意rl是卷组名称, /dev/sda3是刚才新创建的物理卷的路径

逻辑卷扩容

卷组扩展完成后,下边将富余的卷组容量给卷组增加上就行了。首先使用df命令,显示我们的/dev/mapper/rl-root 这个文件系统满了,那么这里注意,df命令列出的是文件系统,文件系统是建立在逻辑卷上的,我们需要给该文件系统对应的逻辑卷进行扩容。 (/dev/mapper/rl-root指的是文件系统,同样也是逻辑卷的路径)

使用 lvresize命令给逻辑卷扩容   lvresize -L +200G /dev/mapper/rl-root   表示给/dev/mapper/rl-root 增加200G的空间。

这里注意一下,我们多次提到了/dev/mapper/rl-root这个文件,他即可以是文件系统,也可以是逻辑卷(文件系统是简历在逻辑卷上,与逻辑卷是一一对应的关系)。 在我们刚刚执行的lvresize命令中, /dev/mapper/rl-root指代的是逻辑卷。 我们给/dev/mapper/rl-root这个逻辑卷扩容了,但是名为/dev/mapper/rl-root的文件系统仍然还保持着之前的状态,此时如果你再次使用df命令查看文件系统的容量,会发现/dev/mapper/rl-root这个文件系统并没有发生什么变化。

文件系统扩容

逻辑卷扩展完成之后,文件系统的大小仍然没有什么变化,此时需要让文件系统扩容。不同的文件系统扩容的方法不一样,首先使用 df -hT 命令,看一下文件系统的类型

通过上图可以看出我这个是xfs文件系统。对于xfs,我们可以使用xfs_growfs 命令类增加文件系统的大小。xfs_growfs的用法为:xfs -d 挂载点路径    具体到我这就是:xfs_growfs -d /   (注意,这个命令会自动将逻辑卷未使用的容量都分配给当前挂载点对应的文件系统)

命令执行完成后,再次使用df -hl 命令,可以看到我们的文件系统已经扩容成功了。

如果是其他的非xfs格式的文件系统,请自行百度如何调整文件系统大小。

至此整个扩容过程完成。可能写的有点啰嗦,主要是想讲明白硬盘-分区-物理卷-卷组-逻辑卷-文件系统之间的关系。 回头有时间再回来重新润色润色,争取讲的更明白点。

感谢你能阅读本文,希望能对各位有所帮助。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>