磁盘:LVM 逻辑卷与 RAID 软阵列
介绍 LVM 的 PV/VG/PE/LV 概念与扩容流程,以及使用 mdadm 创建 RAID0 软阵列并挂载验证的完整步骤。
磁盘空间不够、需要跨盘合并、想要软阵列提升性能,这些场景分别由 LVM 和 mdadm 解决。本文整理磁盘查看、分区、LVM 全流程和 RAID0 软阵列创建方法。
一、查看磁盘状态
lsblk -o name,rota,type,serial,OPT-IO,MIN-IO,MOUNTPOINT,SIZE
blkid # 查看分区 UUID 和文件系统类型
parted /dev/sda print # 查看分区表(GPT/MBR)和分区布局
二、分区
MBR 磁盘用 fdisk,GPT 磁盘用 gdisk:
yum install gdisk
gdisk /dev/vda # q 取消,w 写入
注意:gdisk 创建分区后分区表不会立即更新,需要执行:
partprobe -s
lsblk /dev/vda
格式化:
mkfs.xfs /dev/vda4 # xfs 文件系统
mkfs.ext4 /dev/vda5 # ext4 文件系统
三、LVM 基本概念
LVM 把物理分区抽象成逻辑卷,支持在线扩容:
partition(物理分区) → PV(物理卷) → VG(卷组) → LV(逻辑卷) → 格式化挂载
- PV(Physical Volume):被 LVM 管理的物理分区。
- VG(Volume Group):多个 PV 整合成的存储池。
- PE(Physical Extent):VG 内最小存储单元。
- LV(Logical Volume):从 VG 中切出的逻辑卷,可格式化挂载。
四、LVM 创建流程
4.1 PV 阶段
pvcreate /dev/vda{5,6,7,8} # 把分区创建为 PV
pvscan # 扫描 PV
pvdisplay # 查看 PV 状态
4.2 VG 阶段
# 指定 PE 大小为 16MB,创建卷组
vgcreate -s 16M vbirdvg /dev/vda{5,6,7}
# 扩容:加入新的 PV
vgextend vbirdvg /dev/vda8
vgdisplay vbirdvg
PE 大小影响卷组容量上限:一个 VG 最多 65535 个 PE,容量上限 = 65535 × PE 大小。
4.3 LV 阶段
# 按容量创建
lvcreate -L 2G -n vbirdlv vbirdvg
# 按 PE 个数创建
lvcreate -l 20 -n vbirdlv vbirdvg
# 使用卷组全部剩余空间
lvcreate -l +100%FREE -n vbirdlv vbirdvg
4.4 格式化挂载
mkfs.xfs /dev/vbirdvg/vbirdlv # 注意使用 LV 全名
mkdir /srv/lvm
mount /dev/vbirdvg/vbirdlv /srv/lvm
df -Th /srv/lvm
4.5 在线扩容
# 先扩容 LV
lvextend -l +100%FREE /dev/vbirdvg/vbirdlv
# 再扩容文件系统(这一步不能少)
resize2fs /dev/vbirdvg/vbirdlv # ext4
xfs_growfs /srv/lvm # xfs
xfs 文件系统只能扩容不能缩小,规划时需注意。
4.6 开机自动挂载
vim /etc/fstab
/dev/mapper/vbirdvg-vbirdlv /srv/lvm xfs defaults 0 0
保存后执行 mount -a 验证。
五、mdadm 创建 RAID0
RAID0 把多块盘条带化,提升读写性能,但没有任何冗余,一块盘损坏即数据全丢。适合缓存、临时数据等场景。
5.1 安装
sudo apt update
sudo apt install mdadm -y
5.2 创建 RAID0
lsblk # 确认磁盘
sudo mdadm --create --verbose /dev/md0 \
--level=0 \
--raid-devices=4 \
/dev/sda /dev/sdb /dev/sdc /dev/sdd \
--chunk=256K
--chunk=256K 指定条带大小。
5.3 查看状态
cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdd[3] sdc[2] sdb[1] sda[0]
14651481600 blocks 256k chunks
5.4 保存配置
sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf
5.5 创建文件系统
RAID0 的 su/sw 参数与条带大小匹配,可以优化 xfs 分配:
sudo mkfs.xfs -f -d su=256k,sw=4 /dev/md0
su=256k:条带单元大小,对应--chunk。sw=4:条带数,对应磁盘数量。
5.6 挂载
sudo mkdir -p /data
sudo mount -o noatime,nodiratime,barrier=0 /dev/md0 /data
写入 /etc/fstab:
/dev/md0 /data xfs defaults,noatime,nodiratime,barrier=0 0 0
5.7 性能验证
sync; dd if=/dev/zero of=/data/testfile bs=1M count=10240 oflag=direct
写入完成后删除测试文件,避免占满空间。
六、总结
- LVM 解决容量管理:PV → VG → LV 分层抽象,
lvextend+xfs_growfs在线扩容。 - VG 容量上限受 PE 数量限制(65535 × PE 大小)。
- RAID0 提升性能但无冗余,
--chunk要与mkfs.xfs的su/sw对应。 - 新盘做阵列或 LVM 前,务必确认磁盘未被使用(参考磁盘验收文章的检查方法)。
相关脚本
整理自 cyy-tag/bash-example 仓库: