找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2249

积分

0

好友

323

主题
发表于 昨天 16:11 | 查看: 7| 回复: 0

在处理大数据存储需求时,一个常见的挑战是如何为 /data 这样的关键目录提供充足且可灵活调整的容量。这时,Linux 的逻辑卷管理器(LVM,Logical Volume Manager)便成为了一个强大的工具。它能动态调整磁盘容量,极大地提高了磁盘管理的灵活性。

PV 物理卷

物理卷,Physical Volume,是 LVM 机制的基本存储设备,通常对应一个普通分区或是整个硬盘。
创建物理卷时,会在分区或磁盘头部创建一个用于记录 LVM 属性的保留区块,并把存储空间分割成默认大小为 4MB 的基本单元(Physical Extend,PE),从而构成物理卷。
对于普通分区,需要先将其分区类型转换为 8e;对于整块硬盘,可以直接使用,也可以将其所有空间划分为一个主分区后再进行调整。

VG 卷组

卷组,Volume Group,是由一个多个物理卷组成的一个整体。卷组可以动态地添加或移除物理卷,并且在创建时可以指定 PE 的大小。

LV 逻辑卷

逻辑卷,Logical Volume,建立在卷组之上,与物理卷没有直接关系。逻辑卷在格式化后,就可以像普通分区一样挂载使用了。

通过以上对三者的解释,可以清晰地看到建立 LVM 的逻辑过程:

  • 首先,将普通分区或整个硬盘创建为物理卷
  • 然后,将一个或多个物理卷创建为卷组
  • 最后,在卷组上分割出不同的数据存储空间,形成逻辑卷

有了逻辑卷,就可以进行格式化、挂载等操作,投入使用了。这种分层抽象的设计,正是实现动态存储管理的核心。

LVM 管理

LVM 提供了一套完整的命令集来管理物理卷、卷组和逻辑卷。掌握这些命令是灵活运用 LVM 的关键。

常用命令总结如下:

功能 PV 管理命令 VG 管理命令 LV 管理命令
Scan(扫描) pvscan vgscan lvscan
Create(建立) pvcreate vgcreate lvcreate
Display(显示) pvdisplay(pvs) vgdisplay(vgs) lvdisplay(lvs)
Remove(移除) pvremove vgremove lvremove
Extend(扩展) / vgextend lvextend
Reduce(减少) / vgreduce lvreduce

下面通过一个实际系统的命令输出来直观地感受 LVM 的组成。在这个例子中,我们使用了两块大容量硬盘(sdb 和 sdc)为 /data 目录构建了一个巨大的逻辑卷。

[root@lab000 vgdata]# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0 223.6G  0 disk
├─sda1            8:1    0   500M  0 part /boot
└─sda2            8:2    0 223.1G  0 part
  ├─centos-swap 253:0    0     4G  0 lvm
  ├─centos-root 253:1    0   169G  0 lvm  /
  └─centos-home 253:3    0    50G  0 lvm  /home
sdb               8:16   0   9.1T  0 disk
└─vgdata-lvdata 253:2    0  18.2T  0 lvm  /data
sdc               8:32   0   9.1T  0 disk
└─vgdata-lvdata 253:2    0  18.2T  0 lvm  /data

[root@lab000 vgdata]# pvs
  PV         VG     Fmt  Attr PSize    PFree
  /dev/sda2  centos lvm2 a--  <223.08g 80.00m
  /dev/sdb   vgdata lvm2 a--    <9.10t     0
  /dev/sdc   vgdata lvm2 a--    <9.10t <1.43g

[root@lab000 vgdata]# vgs
  VG     #PV #LV #SN Attr   VSize    VFree
  centos   1   3   0 wz--n- <223.08g 80.00m
  vgdata   2   1   0 wz--n-  18.19t <1.43g

[root@lab000 vgdata]# lvs
  LV     VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home   centos -wi-ao----  50.00g
  root   centos -wi-ao---- 169.00g
  swap   centos -wi-a-----   4.00g
  lvdata vgdata -wi-ao----  18.19t

lsblk 的输出可以看到,/dev/sdb/dev/sdc 两块物理磁盘共同组成了一个名为 vgdata-lvdata 的逻辑卷,并挂载在 /data 下。pvsvgslvs 命令则清晰地展示了物理卷、卷组和逻辑卷之间的归属与容量关系。

最后,为了确保系统重启后能自动挂载,需要在 /etc/fstab 文件中添加相应的配置项:

[root@lab000 ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon Jun  8 14:59:59 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        1 1
UUID=287680f7-cdd8-424a-9fcc-d93f77144c16 /boot                   xfs     defaults        1 2
/dev/mapper/centos-home /home                   xfs     defaults        1 2
#/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/vgdata/lvdata /data xfs defaults 1 2

通过以上介绍,我们了解了 LVM 的核心概念、管理命令和一个实际的应用示例。对于希望深入掌握系统存储管理、构建灵活可靠存储架构的开发者或运维人员来说,LVM 是一项必备技能。如果你想与更多同行交流类似的技术实践,欢迎访问云栈社区进行探讨。

参考资料

[1] 如何在 Linux 中创建/配置 LVM(逻辑卷管理): https://linux.cn/article-12670-1.html

[2] 如何在 Linux 中扩展/增加 LVM 大小(逻辑卷调整): https://linux.cn/article-12673-1.html

[3] Linux 文件系统-XFS 收缩与扩展: https://blog.csdn.net/baidu_39459954/article/details/89446794

[4] archlinux LVM: https://wiki.archlinux.org/title/LVM

[5] LVM : 简介: https://www.cnblogs.com/sparkdev/p/10130934.html




上一篇:企业网络防火墙部署策略:出口防护、核心隔离与分层安全设计
下一篇:王老师逻辑漏洞挖掘与SRC实战:从入门到精通 Web安全核心技能与SRC漏洞挖掘实战精讲
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-11 17:38 , Processed in 0.245648 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表