最近对于服务器的磁盘管理搞的很懵,幸得大神指点,对pv、vg、lv之间的关系有了一些了解,现总结如下。如有错误之处,还请不吝赐教。

Linux磁盘、pv、vg、lv、挂载点之间的关系用一张图来说:

一、基本概念及关系梳理:

磁盘:最基础的存在,物理磁盘

PV:physical volume 物理卷,同一磁盘可划分为多个物理卷

VG:volume group 卷组,一个到多个PV可组成一个卷组

LV:logical volue 逻辑卷,卷组可划分为多个逻辑卷

挂载点:lv与挂载点是1:1的关系

综上:Linux的磁盘管理其实就是把物理磁盘先进行划分,分成一块块pv,然后对pv进行分组形成vg,再将vg分配给lv,最后将lv挂载到挂载点上进行使用。之所以进行这么多层次的划分,就是为了能灵活的对磁盘进行逻辑上的区分使用。

二、常用命令 

1、磁盘相关操作

  • 使用命令:
fdisk -l

可看到磁盘空间划分 

上图表示机器有/dev/sdb、/dev/sda 两块磁盘,其中 /dev/sda下有 /dev/sda1、/dev/sda2 两个分区 

  • 使用命令:fdisk 具体磁盘
fdisk /dev/sda

查看详细的磁盘分区

 

2、pv相关操作

  • 使用命令:
pvdisplay

查看所有的物理卷(PV)。pvdisplay显示pv信息的同时,显示了pv与vg之间的关系

  •  可使用命令:pvcreate 进行未初始化磁盘 pv的创建

3、vg相关命令

  • 使用命令:
vgdisplay

可查看目前已创建的vg,注意Free PE/Size 字段,表示空余空间。vg卷组的空余空间=组成卷组的pv空余空间之和。

卷组的空余空间可随时分配给卷组下的 lv,进行 lv 空间的扩展

4、lv相关命令

  • 使用命令:
lvdisplay

可以看到所有的 lv,以及 lv 与 vg之间的关系。

根据第3步看到的 vg free pe,可将vg中可用空间给 lv扩容

  • 使用命令 lvextend -L +10G  lv路径 即可给 lv进行扩容

 5、挂载点

  • 使用命令
df -h

 

 可查看所有的 lv 路径及挂载点之间的关联。挂载点即我们日常访问操作的路径。

但是这里有个问题,如何查看创建好但还没挂载的 lv 呢?

  • 使用命令
lvdispaly | grep "LV Name"

查看所有的lv名,也可以 grep “LV Path”,然后与df -h列出的文件系统对比,即可查看到已创建未挂载的lv

 

  •  使用命令:
mount /dev/rootvg/lvnbu /home/log

进行 lv 与目录之间的关联,但是这里需注意:目录必须是新创建的空目录,否则无法挂载成功 

PS:当我们删除某个路径,报错 “设备或资源忙” 而无法删除时,可使用以下命令:

fuser -km mysqldata  // 强制删除访问mysqldata路径的所有进程
umount mysqldata     // 删除mysqldata的挂载lv
rm -rf mysqldata     // 删除mysqldata路径

但是该操作也会带来问题:删除目录后,挂载的 lv 会变成游离的 lv,没有使用且没有回收,造成资源浪费,所以删除路径后,记得将挂载的 lv 重新挂载。

 至此,常用的磁盘相关命令均总结完成,后续如有新学习的命令再持续补充,以此为记。

更多推荐

Linux磁盘管理(磁盘、pv、vg、lv、挂载点之间的关系及常用命令)