Skip to content

逻辑卷管理

基本概念

  • 物理卷 (PV): 底层存储设备(如硬盘、RAID阵列、分区)
  • 卷组 (VG): 多个物理卷组成一个存储池
  • 逻辑卷 (LV): 在卷组上划分的虚拟分区
  • RAID10: RAID1(镜像) + RAID0(条带化),兼顾性能和数据安全
  • PE/LE: 物理扩展块/逻辑扩展块,LVM管理的最小存储单元
  • 快照: 基于时间点的数据副本,可用于备份或恢复

架构设计

  物理层: 8块4TB NVMe数据盘
  ↓
  RAID层: 每4块盘组成一个RAID10阵列
  md0 (磁盘1-4) md1 (磁盘5-8)
  ↓
  LVM层: 两个RAID设备组成一个逻辑卷组
  vg_database (包含md0和md1)
  ↓
  逻辑卷: 在卷组中创建多个逻辑卷
  mysql_data (5T) mysql_log (1T) postgres_data (4T) ...
  ↓
  文件系统: 每个逻辑卷格式化为文件系统
  /dev/vg_database/mysql_data → XFS → /db/mysql/data

raid 配置

# 安装RAID管理工具
sudo apt install mdadm -y
# 创建RAID10阵列
sudo mdadm --create /dev/md0 \
    --level=10 \
    --raid-devices=4 \
    --metadata=1.2 \
    --name=DB_DATA_01 \
    /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1
sudo mdadm --create /dev/md1 \
    --level=10 \
    --raid-devices=4 \
    --metadata=1.2 \
    --name=DB_DATA_02 \
    /dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1 /dev/nvme8n1

参数说明

  • --level=10: 使用RAID10级别
  • --raid-devices=4: 使用4个设备
  • --metadata=1.2: 使用1.2版元数据(推荐用于RAID10)

查看状态

sudo mdadm --detail /dev/md0

lvm 配置

# 安装LVM管理工具
sudo apt install lvm2 thin-provisioning-tools epics-base -y
# 安装文件系统工具
sudo apt install xfsprogs btrfs-progs e2fsprogs -y
# 安装监控工具
sudo apt install smartctl nvme-cli sysstat -y

创建物理卷 (PV)

# 在RAID设备上创建物理卷
sudo pvcreate /dev/md0
sudo pvcreate /dev/md1

# 验证物理卷创建
sudo pvs
sudo pvdisplay

物理卷管理命令:

  • pvs - 显示物理卷概览
  • pvdisplay - 详细显示物理卷信息
  • pvinfo - 显示物理卷信息
  • pvscan - 扫描系统中所有物理卷
  • pvmove - 移动物理卷上的数据到其他物理卷
  • pvremove - 删除物理卷

创建卷组 (VG)

# 创建卷组,设置PE大小为64MB
sudo vgcreate -s 64M vg_database /dev/md0 /dev/md1

# 验证卷组
sudo vgs
sudo vgdisplay

创建逻辑卷 (LV)

 创建MySQL日志逻辑卷(分配1TB空间)
sudo lvcreate -L 1T -n mysql_log vg_database
# 创建PostgreSQL数据逻辑卷(分配4TB空间)
sudo lvcreate -L 4T -n postgres_data vg_database
# 创建PostgreSQL WAL日志逻辑卷(分配500GB空间)
sudo lvcreate -L 500G -n postgres_wal vg_database

逻辑卷管理命令:

  • lvs - 显示逻辑卷概览
  • lvdisplay - 详细显示逻辑卷信息
  • lvscan - 扫描逻辑卷
  • lvextend - 扩展逻辑卷
  • lvreduce - 缩小逻辑卷
  • lvremove - 删除逻辑卷
  • lvresize - 调整逻辑卷大小

文件系统配置

# MySQL数据卷 - 使用XFS(适合大文件)
sudo mkfs.xfs -f -m reflink=1 /dev/vg_database/mysql_data

# MySQL日志卷 - 使用XFS
sudo mkfs.xfs -f /dev/vg_database/mysql_log

# PostgreSQL数据卷 - 使用XFS
sudo mkfs.xfs -f /dev/vg_database/postgres_data

# PostgreSQL WAL卷 - 使用EXT4(适合小文件)
sudo mkfs.ext4 -F /dev/vg_database/postgres_wal

卷管理

# 查看卷组剩余空间
sudo vgdisplay vg_database | grep Free

# 扩展逻辑卷(增加5GB)
sudo lvextend -L +5G /dev/vg_database/mysql_data

# 扩展文件系统(XFS)
sudo xfs_growfs /db/mysql/data

# 对于EXT4文件系统:
sudo resize2fs /dev/vg_database/mysql_log