当前位置: 首页 > news >正文

Orange的运维学习日记--28.Linux逻辑卷详解

Orange的运维学习日记–28.Linux逻辑卷详解

文章目录

  • Orange的运维学习日记--28.Linux逻辑卷详解
    • 为什么使用 LVM
    • 基本概念
    • 创建物理卷
    • 创建卷组
    • 创建逻辑卷
    • 创建文件系统并挂载
    • 清理 LVM 对象
    • 扩展与缩减逻辑卷
      • 扩展 LV
      • 缩减 LV
    • 调整文件系统大小
      • 扩展 XFS 文件系统
      • 扩展 EXT4 文件系统
      • 缩减 EXT4 文件系统
    • 逻辑卷快照
    • 创建 RAID 逻辑卷
      • 创建 RAID0 条带卷
      • 创建 RAID1 镜像卷

为什么使用 LVM

物理分区方式虽然简单,但存在以下不足

  • 分区必须使用连续空间,扩展时经常需要借助额外工具进行挂载区间移动
  • 难以跨多块硬盘创建单一文件系统,受单盘容量限制
  • 单盘故障将导致该分区上所有数据不可用

LVM 提供了一种逻辑抽象层,将多个物理设备合并为一个存储池,实现灵活的动态扩展、缩减、快照及镜像等功能


基本概念

LVM 由三个核心对象组成

  • 物理卷(PV)
    基于磁盘、分区或软件 RAID 设备创建,存储 LVM 元数据
  • 卷组(VG)
    将一个或多个 PV 聚合为一个逻辑存储池,管理员可在池内划分空间
  • 逻辑卷(LV)
    从 VG 中按需切分出的可挂载块设备,类似于传统分区

在这里插入图片描述

LVM 管理流程分为三步

  1. 在物理设备上创建 PV
  2. 将 PV 加入 VG
  3. 从 VG 上创建 LV

在这里插入图片描述


创建物理卷

创建 PV 时,LVM 会在设备开头和结尾写入元数据,建议新加设备、分区或 RAID 设备上执行

# 单个设备创建 PV
pvcreate /dev/sdb# 同时对多个设备创建 PV
pvcreate /dev/sd{c,d}# 查看所有 PV 列表
pvs# 检查单个 PV 详细属性
pvdisplay /dev/sdb

在 PV 详细信息中,你可以看到 PV 大小、可用物理扩展(PE)数量及 UUID 等关键信息


创建卷组

卷组是物理卷的集合,后续逻辑卷会从中分配空间

# 创建名称为 webapp 的 VG,包含 /dev/sdb
vgcreate webapp /dev/sdb# 创建名称为 dbapp 的 VG,包含 /dev/sdc 和 /dev/sdd
vgcreate dbapp /dev/sd{c,d}# 查看所有 VG 列表及其聚合容量
vgs# 查看卷组 dbapp 详细信息
vgdisplay dbapp

在 vgdisplay 输出中,重点关注 VG 大小(VSize)、空闲空间(VFree)和 PE 大小(默认 4MiB,可用 -s 调整)


创建逻辑卷

逻辑卷相当于传统分区,支持跨盘、在线扩容、镜像及快照等高级功能

# webapp VG 中创建 5G 大小的 LV,名称为 webapp01
lvcreate -n webapp01 -L 5G webapp# dbapp VG 中创建 25G 跨盘 LV,名称为 data01
lvcreate -n data01 -L 25G dbapp# 列出所有 LV 及其所属 VG、大小等信息
lvs

逻辑卷有三种常见路径

  • /dev/卷组名/逻辑卷名
  • /dev/mapper/卷组名-逻辑卷名
  • /dev/dm-数字

可通过 ls -l /dev/卷组名/逻辑卷名 查看对应映射


创建文件系统并挂载

在逻辑卷上创建文件系统与普通分区相同,可选 XFS、EXT4 等格式

# 使用 XFS 格式化
mkfs.xfs /dev/webapp/webapp01# 挂载至目标目录
mount /dev/webapp/webapp01 /var/www/html

持久化挂载需在 /etc/fstab 中添加相应条目,保证重启后自动挂载


清理 LVM 对象

删除操作会清除所有数据,请务必确认无用后再执行

# 卸载挂载点
umount /dev/webapp/webapp01# 删除 LV
lvremove /dev/webapp/webapp01 /dev/dbapp/data01# 删除 VG
vgremove webapp dbapp# 删除 PV
pvremove /dev/sd{b..d}

扩展与缩减逻辑卷

扩展 LV

当 VG 空间充足,需要在线为 LV 增加容量时使用

# 在 webapp01 上增加 2G 空间
lvextend -L +2G /dev/webapp/webapp01# 查看最新大小
lvs /dev/webapp/webapp01

缩减 LV

缩减前请确保文件系统先缩减且无活跃写操作,避免数据损坏

# 从 webapp01 上减少 2G 空间
lvreduce -L -2G /dev/webapp/webapp01# 查看最新大小
lvs /dev/webapp/webapp01

调整文件系统大小

扩展 XFS 文件系统

XFS 只支持在线扩展,不支持在线缩减

# 扩展 LV 至 15G
lvextend -L 15G /dev/webapp/webapp01# 挂载点已挂载情况下在线扩容
xfs_growfs /var/www/html# 或者一并扩容 LV 和文件系统
lvextend -rL 20G /dev/webapp/webapp01

扩展 EXT4 文件系统

EXT4 支持在线扩展、离线缩减

# 扩展 LV 至 25G
lvextend -L 25G /dev/webapp/webapp01# 在线扩容文件系统
resize2fs /dev/webapp/webapp01# 或者一并扩容 LV 和文件系统
lvextend -rL 30G /dev/webapp/webapp01

缩减 EXT4 文件系统

缩减需提前卸载,且不能小于当前使用空间

  1. 卸载文件系统
  2. 检查文件系统完整性
  3. 离线缩减文件系统至目标大小
  4. 缩减 LV
  5. 挂载并验证
umount /var/www/html
e2fsck -f /dev/webapp/webapp01
resize2fs /dev/webapp/webapp01 10G
lvreduce -L 10G /dev/webapp/webapp01
mount /dev/webapp/webapp01 /var/www/html

逻辑卷快照

快照基于写时复制机制,记录原 LV 某一时刻数据状态

# 创建容量 10G 快照,名称 webapp01-snap1
lvcreate -s -n webapp01-snap1 -L 10G /dev/webapp/webapp01# 卸载原 LV 并挂载快照
umount /dev/webapp/webapp01
mount /dev/webapp/webapp01-snap1 /mnt/snapshot# 在快照上进行读写测试
echo hello world > /mnt/snapshot/hello.txt
cat /mnt/snapshot/hello.txt

快照可用作临时备份或测试环境,还原后可选择保留或删除


创建 RAID 逻辑卷

创建 RAID0 条带卷

条带卷将数据分散写入多个物理卷,提升并行读写性能,无冗余,任何一块设备故障都会丢失数据

假设存在三个未使用的物理卷 /dev/sdb/dev/sdc/dev/sdd,先将它们加入同一卷组

pvcreate /dev/sdb /dev/sdc /dev/sddvgcreate raidvg /dev/sdb /dev/sdc /dev/sdd

使用三条带创建一个 30G 大小的逻辑卷,指定条带数(-i)和条带大小(-I)

lvcreate -n lv_stripe -L 30G -i3 -I64K raidvg

参数说明

  • -i3:将数据分成 3 条带,分别写入三块物理卷
  • -I64K:每条带大小为 64KB,增大并行度需适配实际 I/O 大小

格式化并挂载

mkfs.xfs /dev/raidvg/lv_stripe
mount /dev/raidvg/lv_stripe /mnt/stripe

查看条带卷分布

lsblk /dev/sd{b..d}
# 三个设备下都会出现同一个 lv_stripe 的映射

创建 RAID1 镜像卷

镜像卷将数据写入两块或多块物理卷,提供数据冗余,任一副本设备损坏后仍可读取

假设存在两个物理卷 /dev/sdb/dev/sdc,先加入卷组

pvcreate /dev/sdb /dev/sdcvgcreate mirrorgroup /dev/sdb /dev/sdc

创建一个带有 1 份镜像的 5G 逻辑卷

lvcreate -n lv_mirror -L 5G -m1 mirrorgroup

参数说明

  • -m1:每个数据块有一份镜像,共两份副本
  • 若要两份镜像(总 3 份),可指定 -m2

格式化并挂载

mkfs.ext4 /dev/mirrorgroup/lv_mirror
mount /dev/mirrorgroup/lv_mirror /mnt/mirror

检查镜像状态

lvs -o +devices mirrorgroup/lv_mirror
# 可见两个物理设备各自映射相同 LV
卷```bash
lvcreate -n lv_mirror -L 5G -m1 mirrorgroup

参数说明

  • -m1:每个数据块有一份镜像,共两份副本
  • 若要两份镜像(总 3 份),可指定 -m2

格式化并挂载

mkfs.ext4 /dev/mirrorgroup/lv_mirror
mount /dev/mirrorgroup/lv_mirror /mnt/mirror

检查镜像状态

lvs -o +devices mirrorgroup/lv_mirror
# 可见两个物理设备各自映射相同 LV
http://www.dtcms.com/a/315970.html

相关文章:

  • MATLAB实现的基于压缩感知的图像处理
  • 分布式选举算法:Bully、Raft、ZAB
  • Spring Boot与Redis连接池配置终极指南:从版本差异到生产实践
  • 【Mysql】业务视角下,SQL字段处理专题
  • VR眼动追踪技术帮助医生更快速确认大脑神经损伤与疾病
  • MySQL索引底层原理与性能优化实践
  • JavaScript性能优化实战:从核心指标分析
  • “命令行过长“?一键解决 IntelliJ IDEA 中 Java/Spring Boot 启动失败问题
  • 武汉火影数字:VR大空间在文旅产业的创新应用
  • 7、Redis队列Stream和单线程及多线程模型
  • 二手房翻新时怎样装修省钱?
  • STM32H7+FreeRTOS+LwIP移植EtherCAT开源主站SOEM
  • 【AI论文】iLRM:一种迭代式大型3D重建模型
  • 3D 材质与纹理:让虚拟模型 “以假乱真” 的核心密码
  • Linux内核C语言代码规范
  • 解决IntelliJ IDEA 项目名称后带中括号问题(模块名不一致)
  • OpenGL状态机与对象管理:优化图形渲染的高效方法
  • 支持在电脑桌面悬挂的便利贴工具好用评测
  • LeetCode 面试经典 150_数组/字符串_H 指数(9_274_C++_中等)(排序后再进行判断)(计数)
  • 应用科普 | 漫谈6G通信的未来
  • Vue中使用步骤条Steps-手写简单的步骤条功能
  • 大模型下一个飞跃?OpenAI的“新突破”:通用验证器
  • FANCU发那科机器人双脉冲焊接省气
  • 解决英飞凌Tricore编译软件Tasking加载过慢编译卡死问题
  • Windows驱动更新下载工具,电脑硬件设备驱动程序自动安装下载更新,可备份还原!键盘鼠标声卡网卡显卡主板硬盘驱动都可以下载,免费使用的神器!
  • 从传统架构到创新安全:Web2.0与Web3.0的比较分析
  • 10-红黑树
  • Python--JSON格式
  • 艺术性与真实感并存:FLUX.1 Krea [dev] 开源模型速览
  • 复杂环境跌倒识别准确率↑31%!陌讯多模态算法在智慧养老的落地实践