原因与需求:最近随着用户在服务器上上传的数据集增加,原来的根目录下36G左右的容量已经占用了82%,接近预警线了。而机器实际还有一块200G的硬盘(/dev/xvde)还没有挂载。于是想把xvde的容量转移到根目录下。

查看硬盘情况

使用 lsblk 命令查看系统下面挂载的硬盘
image-1683872381061

硬盘进行分区

使用fdisk 命令进行分区

fdisk /dev/xvde

然后输入 p 进行分区 确认后 默认 1 号分区 ,分区起始位置默认位置2048
最后 w 保存并退出

重读分区表

partprobe /dev/xvde

使用 lsblk 命令查看

image-1683872334611
发现多了一个xvde1

创建 物理卷PV 加入根目录卷组VG 并扩容虚拟卷LV

基本概念:linux文件系统基本概念:物理卷(Physical Volume, PV),卷组(Volume Group, VG),逻辑卷(Logical volume, LV),这三个从下至上演变成我们熟悉的文件。最后一层逻辑卷可以挂载到某个文件夹,其大小也就决定了这个文件夹的容量大小,最底层的物理卷就是硬盘的分区,而卷组则是可以将硬盘分区组合起来称为一个更大容量的空间,这样不同硬盘的分区也是可以一起用的。

这三个’空间‘也对应着三组命令,即我们常见的PV、VG、LV命令。

我们的目标是对根目录/进行扩容,其做法是:如果卷组中有多余的空间,直接使用lvextend命令扩容;如果卷组中没有多余空间,则需要先从物理卷中添加分区进入对应的卷组中。

使用df -Th命令可以看到目前机器的硬盘容量分配情况。

下面的截图是我已经扩容好的
image-1683871879415
image-1683872970293
从上面的结果看到根目录对应的文件系统是/dev/mapper/ao-root,这说明根目录对应的逻辑卷(lv)名称是’root‘,该逻辑卷下面的卷组(vg)是’ao‘。使用

vgdisplay

查看卷组容量情况:

image-1683873253264!
可以看到卷组此时并没有多余的空间,查看物理卷的分配情况:

pvdisplay

image-1683873404260!
/dev/xvde1 内容是我已经使用 可以不用管,
如果没有使用 VG Name 应该是空的
PE Size 大小是分配的总大小

创建物理卷:

pvcreate /dev/xvde1

如果创建遇到问题
就需要抹除原来的文件系统签名才能创建成功。

加入卷组

使用卷组命令将新的物理卷添加到对应的ao卷组中:

vgextend ao /dev/xvde1

虚拟卷扩容

使用lv命令从卷组空闲容量分配到逻辑卷root中:

lvdisplay

image-1683874099889

lvextend -L +199.9G /dev/ao/root

重新计算磁盘大小

执行结束之后还需要重新计算磁盘大小才能使用:
文件系统是 ext4 的

resize2fs /dev/ao/root

xfs文件系统的调整命令是xfs_growfs(只能增大)。

xfs_growfs /dev/ao/root

可以使用 df -Th 查看你当前要扩容挂载路径的文件系统格式
如果不行报错 不要重启 可以把路径 /dev/ao/root 替换为 / 试一下
再次使用df -h命令即可看到根目录的容量已经增大。

另记:还有一种不那么麻烦的方式是直接更改机械硬盘的挂载目录,但根目录这种敏感的目录不建议操作。以/home目录为例,将机械硬盘挂载到/home下可以先将原来的/home目录备份,然后直接使用mount /etc/sda /home命令挂载,之后再将原来的文件复制进新的/home,设置开机自动挂载即可。这里仅提供思路。