前言

在实际的开发运维工作中,经常遇到磁盘挂载目录空间不够的情况。这种情况下,原目录往往已经装满文件,整个目录备份都显得十分困难。

        在上述背景下,解决目录磁盘空间不足,一共有三种方案。(这里以/home目录为例)

方案一

1、先将目标文件(/home)拷贝到其他目录下(/tmp),随后卸载该分区(/home)。

2、重新分配该磁盘空间,然后重新挂载该目录 换一块更大的磁盘空间挂载到该目录。

3、将文件数据重新拷贝回目标目录(/home)。

实际操作过程中,方案一有诸多限制。

限制一 目标目录(/home)大,拷贝需要很漫长的时间。如确有必要,可以考虑使用mv命令替代cp命令,因为mv命令的效率更高。详情见参考文章。

限制二 绝大多数情况下当前磁盘是没有空闲空间了,并且提供的是另一块的磁盘。

方案二

1、确定目标目录(/home)的哪个子目录最占磁盘空间。

2、给最占空间的子目录挂载磁盘分区,从此该目录的新增文件就会保存到新磁盘分区中。

方案二是一个折中方案,操作不彻底。但是避免了拷贝耗时的情况,可以作为临时操作来使用。其同样也有诸多限制。

限制一 适用性不高,假设目标目录(/home)的每个子目录均较占空间,此时该方案就行不通。

限制二 后期维护不方便,搞的后面运维的同事很难受。

方案三

        如果目标目录(/home)是逻辑分区,那么可以通过逻辑分区扩容的方式来扩展空间。这种情况是最好的,操作方式也是相对最简单的。具体见下文。


        方案一和方案二的操作均比较简单,且网上有诸多文章,在此不做赘述。仅讨论方案三的操作步骤。

注意事项:

1、高度警惕可能造成数据丢失的操作。

2、新手切勿直接动手操作正式服务器,最好先本地虚拟机演示一下。

3、实际操作过程中,大概率会遇到奇怪的问题,注意保持耐心。

逻辑分区(LVM)扩容

1、判断待扩容的分区是否是逻辑分区

通过 lsblk 命令,判断目标分区是否是逻辑分区,如果TYPE为lvm则是逻辑分区,否则不是。只有逻辑分区,才能使用该方式,切记。(这里将以 / 分区作为目标分区)

目标:从空白磁盘sdb中分5G出来到 / 目录下。

2、将空闲分区加入指定虚拟卷组

2.1 先从磁盘sdb中分出 sdb1分区

在此之前,我们先要搞清楚逻辑分区(LV)的分区方式。如下图,逻辑分区(LV)的空间大小是来源于卷组的。卷组越大,逻辑分区也就能扩展的越大。同时,如果逻辑分区空间不够,可以随时从卷组分配空闲分区给逻辑分区。而卷组的大小则来自于磁盘分区。

显然,我们接下来要做的就是将sdb1分区加入到VG卷组中,然后VG卷组就会有空闲的磁盘空间,最后再把VG卷组的空闲空间分配给目标逻辑卷。 

2.2 确定目标目录的逻辑卷组信息

 2.3 将sdb1分区加入相同的VG卷组

3、将VG卷组中的空闲空间分配给目标分区

至此,逻辑分区扩容操作完成。

参考文章

深入理解文件系统inode | 比较Linux mv和cp命令 - 简书 (jianshu.com)

分区过程 · 语雀 (yuque.com)

Linux系统下对目录扩容的方法介绍 | 《Linux就该这么学》 (linuxprobe.com)

(1条消息) LINUX - LVM原理及PV、VG、LV、PE、LE关系图_ApacheCrazyFan的博客-CSDN博客

Linux LVM 逻辑分区 - 01234567 - 博客园 (cnblogs.com)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐