【Linux】LVM理论介绍、实战操作

一、LVM理论介绍

1.1 标准分区与LVM的基本概念

标准分区(Standard Partition) 是直接创建在物理磁盘上的传统分区方式,包括主分区、扩展分区和逻辑分区。它们是静态的,一旦创建后大小就固定不变(除非使用特殊工具调整)。

逻辑卷管理(Logical Volume Manager, LVM) ,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。

1.2 标准分区与LVM的区别

1.3 标准分区与LVM的架构对比

  • 标准分区架构
bash 复制代码
物理磁盘 → 分区表(MBR/GPT) → 主分区/扩展分区 → 文件系统

MBR分区表最多支持4个主分区(或3个主分区+1个扩展分区),而GPT分区表则突破了这一限制,同时支持更大的磁盘容量。
  • LVM架构
bash 复制代码
物理磁盘 → 物理卷(PV) → 卷组(VG) → 逻辑卷(LV) → 文件系统

1.4 LVM基本概念

  • PV (Physical Volume):物理卷
    物理卷是LVM的基本存储单元。它可以是一个完整的物理磁盘或磁盘分区。物理卷是LVM中用于创建卷组的基础元素。
  • VG (Volume Group):卷组
    卷组是由一个或多个物理卷组成的存储池。卷组将物理卷的存储空间整合在一起,为逻辑卷的创建提供统一的存储资源。卷组可以动态地添加或移除物理卷,以调整其存储容量。一个卷组中至少要包括一个物理卷。
  • LV (Logical Volume):逻辑卷
    逻辑卷是从卷组中分配出来的存储空间。它类似于传统分区,但具有更大的灵活性。逻辑卷可以动态地调整大小,而不会影响其中的数据。逻辑卷可以用于创建和管理文件系统,从而方便地扩展或缩小存储空间。多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。
  • PE (Physical Extent):物理扩展
    物理扩展是卷组内的最小分配单元。每个物理卷在被加入卷组时都会被划分成若干个大小相等的PE。
    逻辑卷也是由这些PE组成的。PE使得LVM可以灵活地管理和分配存储空间。
    PE的大小是可配置的,默认为4MB。PE的大小一旦确定将不能改变,同一个卷组中的所有物理卷的PE的大小是一致的。
    LVM最多可以创建出65534个PE,因此LVM最大的VG卷组是256G。

1.5 LVM原理图

1.6 LVM常用的部署命令

二、LVM创建

2.1 服务器新增两块磁盘

服务器新添加两块磁盘后,Linux系统并不能直接识别到,因为连接存储设备的SCSI总线需要重新扫描,才能识别到这些新的存储设备。

bash 复制代码
# 查看主机总线号 
ls /sys/class/scsi_host/   

# 重新扫描SCSI总线来添加设备
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan

# 查看新添加的磁盘
lsblk

2.2 安装lvm相关软件包

bash 复制代码
yum install lvm2 lvm2-libs -y

2.3 创建物理卷

powershell 复制代码
# 创建PV
pvcreate /dev/sdb /dev/sdc

# 查看PV信息
pvdisplay
pvs
pvscan

2.4 创建卷组

powershell 复制代码
# 创建VG(默认PE大小为4MB)
vgcreate vg_data /dev/sdb /dev/sdc

# 指定PE大小
vgcreate -s 16M vg_data /dev/sdb1

# 查看VG信息
vgdisplay
vgs

2.5 创建逻辑卷

powershell 复制代码
# 创建第一个LV,容量为5G
lvcreate -L 5G -n lv_data1 vg_data

# 创建第二个LV,-l 指定PE个数,一个PE默认为4MB
lvcreate -l 200 -n lv_data2 vg_data

# 创建第三个LV,将剩余的全部的100%空间分给它
lvcreate -l 100%FREE -n lv_data3 vg_data

# 查看LV信息
lvdisplay
lvs

2.6 创建文件系统

powershell 复制代码
# xfs文件系统
mkfs.xfs /dev/vg_data/lv_data1
mkfs.xfs /dev/vg_data/lv_data2
mkfs.xfs /dev/vg_data/lv_data3

# ext4文件系统
mkfs.ext4 /dev/vg_data/lv_data1

2.7 挂载逻辑卷

powershell 复制代码
# 创建挂载点
mkdir {/data1,/data2,/data3}

# 手动挂载
mount /dev/vg_data/lv_data1 /data1
mount /dev/vg_data/lv_data2 /data2
mount /dev/vg_data/lv_data3 /data3

# 开机自动挂载
echo "/dev/vg_data/lv_data1  /data1 xfs defaults 0 0 " >> /etc/fstab
echo "/dev/vg_data/lv_data2  /data2 xfs defaults 0 0 " >> /etc/fstab
echo "/dev/vg_data/lv_data3  /data3 xfs defaults 0 0 " >> /etc/fstab
mount -a

⚠️ /dev/vg_data/lv_data1 和 /dev/mapper/vg_data-lv_data1 属于软链接关系,两者指向同一 LVM 逻辑卷设备,仅访问路径形式不同。

三、LVM扩容

3.1 扩展VG

  • 新增加一块磁盘/dev/sdc
powershell 复制代码
# 1. 创建PV
pvcreate /dev/sdc

# 2. 扩展VG
vgextend vg_data /dev/sdc

# 3. 查看扩展后的VG
vgdisplay vg_data

3.2 扩展LV

powershell 复制代码
# 扩展 LV 大小(增加10G)
lvextend -L+10G /dev/vg_data/lv_data1

# 或指定LV大小
lvextend -L 30G /dev/vg_data/lv_data2

3.3 扩展文件系统

powershell 复制代码
# 对于 XFS
xfs_growfs /dev/vg_data/lv_data1

# 对于 ext4
resize2fs /dev/vg_data/lv_data1

⚠️XFS文件系统原生不支持「在线缩容」,也无官方缩容工具(仅支持扩容),直接缩容会导致文件系统损坏!若必须缩容,需通过「备份数据 → 卸载并删除文件系统 → 缩容逻辑卷 → 重建 XFS 文件系统 → 恢复数据」的流程实现。

相关推荐
生活很暖很治愈14 分钟前
Linux——孤儿进程&进程调度&大O(1)调度
linux·服务器·ubuntu
HalvmånEver30 分钟前
Linux:线程同步
linux·运维·服务器·线程·同步
Zach_yuan32 分钟前
自定义协议:实现网络计算器
linux·服务器·开发语言·网络
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [drivers][I2C]I2C
linux·笔记·学习
VekiSon1 小时前
Linux内核驱动——杂项设备驱动与内核模块编译
linux·c语言·arm开发·嵌入式硬件
Y1rong1 小时前
linux之网络
linux
寄存器漫游者1 小时前
Linux 软件编程 - IO 编程
linux·运维·spring
_别来无恙_2 小时前
TFTP的使用Linux
linux·服务器
Zaralike2 小时前
Linux 服务器网络不通排查 SOP(标准操作流程)
linux·服务器·网络
getapi2 小时前
注塑件的费用构成
linux·服务器·ubuntu