Linux LVM逻辑卷配置:单个目录挂载多块硬盘

  原理, 其他常见问题
内容纲要

概要说明


大数据集群对于磁盘容量要求很高,某些情况下机器的单个磁盘容量不够但是磁盘数量很多时,可以参考本文将多个磁盘挂载到同一个目录下。
PS: 需要对相关磁盘重新分区、格式化等操作,请注意备份数据;重新挂载过程中还会导致TDH的挂载链断裂,请确保知晓如何处理。

详细说明


LVM全称为Logical Volume Manager 逻辑卷管理器,LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。其中

PV:Physical Volume 物理卷

VG:volume Group 卷组

LV:Logincal Volume 逻辑卷

更多详细介绍: https://blog.51cto.com/lanlian/1256197

本文介绍如何将三块磁盘sde/sdd/sdc挂载到同一个目录/mnt/disk1下
步骤是先在sde上创建PV/VG/LV,然后在sdd/sdc上创建pv并且将其扩展到VG、LV中去。

1、创建分区

该步骤可以不做。
如果想要手动创建分区,可以参考:
http://www.weichun.vip/?id=66

2、在sde上创建PV/VG/LV

要创建逻辑卷,首先要创建物理卷PV,之后创建卷组VG,最后才创建逻辑卷LV,下面是逻辑卷创建的详细过程:

第一,创建物理卷PV


[root@sophon3 ~]# pvcreate /dev/sde1
WARNING: xfs signature detected on /dev/sde1 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/sde1.
  Physical volume "/dev/sde1" successfully created.
[root@sophon3 ~]# pvs
  PV         VG Fmt  Attr PSize    PFree   
  /dev/sde1     lvm2 ---  <931.00g <931.00g

上面步骤中sde上已经有了分区,所以提示擦除;pvs或者pvdisplay命令可以看到所有的pv。

第二,建卷组VG

[root@sophon3 ~]# vgcreate  lvm_data  /dev/sde1
  Volume group "lvm_data" successfully created

[root@sophon3 ~]# vgs
  VG       #PV #LV #SN Attr   VSize    VFree   
  lvm_data   1   0   0 wz--n- <931.00g <931.00g

其中lvm_data是vg的名字;vgs或者vgdisplay命令可以看到所有的pv。

第三,创建逻辑卷LV

[root@sophon3 ~]# lvcreate -L 930G  -n  lvmdata_1   lvm_data
  Logical volume "lvmdata_1" created.
[root@sophon3 ~]# 
[root@sophon3 ~]# lvs
  LV        VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lvmdata_1 lvm_data -wi-a----- 930.00g                                                    
[root@sophon3 ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/lvm_data/lvmdata_1
  LV Name                lvmdata_1
  VG Name                lvm_data
  LV UUID                PGKANK-WuL5-saF4-f0Z4-VUaM-sLVm-16FzOt
  LV Write Access        read/write
  LV Creation host, time sophon3, 2021-03-23 11:13:46 +0800
  LV Status              available
  # open                 0
  LV Size                930.00 GiB
  Current LE             238080
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

命令中的-n参数指定lv的名字,最后的参数指定lv所属的vg,-L指定大小,更多lvcreate的参数可以查阅末尾的参考文档;比如:

lvcreate -l  100%VG -n lv-data vg-data -- 创建新的 lv 把所有的vg 划给一个lv 并取名为lv-data 

可以用lvdisplay命令看到详细的结果。

第四,格式化、挂载分区

[root@sophon3 ~]# mkfs.ext4 /dev/mapper/lvm_data-lvmdata_1 
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=64 blocks, Stripe width=64 blocks
60948480 inodes, 243793920 blocks
12189696 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2392850432
7440 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
    102400000, 214990848

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

  └─lvm_data-lvmdata_1 253:0    0  930G  0 lvm  
[root@sophon3 ~]# mount /dev/mapper/lvm_data-lvmdata_1  /mnt/disk3
[root@sophon3 ~]# df -h | grep disk3
/dev/mapper/lvm_data-lvmdata_1  916G   77M  869G   1% /mnt/disk3

注意最后的路径名字是lv跟vg的名字拼接而来的,也可以写成:

 mkfs.ext4    /dev/lvm_data/lvmdata_1

或者格式化为其他格式:

mkfs -t xfs  -f /dev/lvm_data/lvmdata_1 
mkfs -t ext3  -f /dev/lvm_data/lvmdata_1

3、在sdd上创建PV并扩展到VG中

[root@sophon3 ~]# pvcreate /dev/sdd1
WARNING: xfs signature detected on /dev/sdd1 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/sdd1.
  Physical volume "/dev/sdd1" successfully created.
[root@sophon3 ~]# 
[root@sophon3 ~]# vgextend lvm_data /dev/sdd1
  Volume group "lvm_data" successfully extended

由于sdd上之前有一个分区,所以提示擦除。
上面步骤完成之后再去查看VG会发现其大小已经改变:

[root@sophon3 ~]# vgdisplay
  --- Volume group ---
  VG Name               lvm_data
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               <1.82 TiB
  PE Size               4.00 MiB
  Total PE              476670
  Alloc PE / Size       238080 / 930.00 GiB
  Free  PE / Size       238590 / 931.99 GiB
  VG UUID               PcLwXT-Il4i-oceC-HTsQ-JwKu-ee7n-bao3Zn

扩展VG完成之后,还需要扩展到LV中:

[root@sophon3 ~]# lvextend -l +100%FREE /dev/mapper/lvm_data-lvmdata_1 
  Size of logical volume lvm_data/lvmdata_1 changed from 930.00 GiB (238080 extents) to <1.82 TiB (476670 extents).
  Logical volume lvm_data/lvmdata_1 successfully resized.
[root@sophon3 ~]# resize2fs /dev/mapper/lvm_data-lvmdata_1 
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/lvm_data-lvmdata_1 is mounted on /mnt/disk3; on-line resizing required
old_desc_blocks = 117, new_desc_blocks = 233
The filesystem on /dev/mapper/lvm_data-lvmdata_1 is now 488110080 blocks long.

PS: 更详细VG、LV的扩展与缩减操作可以查阅末尾的参考文献

以上步骤完成之后可以去检查disk3的容量:

[root@sophon3 ~]# df -h | grep disk3
/dev/mapper/lvm_data-lvmdata_1  1.8T   68M  1.8T   1% /mnt/disk3

4、对sdc盘做同样的操作

[root@sophon3 mnt]# pvcreate /dev/sdc1/
  Device /dev/sdc1/ not found (or ignored by filtering).
[root@sophon3 mnt]# pvcreate /dev/sdc1
WARNING: xfs signature detected on /dev/sdc1 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/sdc1.
  Physical volume "/dev/sdc1" successfully created.
[root@sophon3 mnt]# vgextend  lvm_data /dev/sdc1
  Volume group "lvm_data" successfully extended
[root@sophon3 mnt]# vgdisplay
  --- Volume group ---
  VG Name               lvm_data
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               <2.73 TiB
  PE Size               4.00 MiB
  Total PE              715005
  Alloc PE / Size       476670 / <1.82 TiB
  Free  PE / Size       238335 / <931.00 GiB
  VG UUID               PcLwXT-Il4i-oceC-HTsQ-JwKu-ee7n-bao3Zn

[root@sophon3 mnt]# lvextend -l +100%FREE /dev/mapper/lvm_data-lvmdata_1 
  Size of logical volume lvm_data/lvmdata_1 changed from <1.82 TiB (476670 extents) to <2.73 TiB (715005 extents).
  Logical volume lvm_data/lvmdata_1 successfully resized.
[root@sophon3 mnt]# resize2fs /dev/mapper/lvm_data-lvmdata_1 
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/lvm_data-lvmdata_1 is mounted on /mnt/disk3; on-line resizing required
old_desc_blocks = 233, new_desc_blocks = 350
The filesystem on /dev/mapper/lvm_data-lvmdata_1 is now 732165120 blocks long.

[root@sophon3 mnt]# df -h | grep disk3
/dev/mapper/lvm_data-lvmdata_1  2.7T   68M  2.6T   1% /mnt/disk3

总结:LVM逻辑卷是Linux里面一个很棒的空间使用机制,因为分区在没有格式化的情况下是没有办法加大或者放小的。通过LVM可以将你的磁盘空间做到灵活自如。

参考文献

https://blog.51cto.com/lanlian/1256197
https://blog.51cto.com/dreamfire/1084729
https://blog.51cto.com/12173069/2065907
https://blog.csdn.net/wangsong_it/article/details/107509170
http://www.weichun.vip/?id=66

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。