Appearance
LVM 管理
lvm 可以将独立的硬盘或分区或 raid 虚拟成一个整体的硬盘,具有动态的扩缩性
1. LVM 组成
1.1 物理卷 (PV,Physical Volume)
一个可供存储 LVM 的块设备. 如硬盘分区(MBR 或 GPT 分区)、SAN 的硬盘、RAID 或 LUN,一个回环文件, 一个被内核映射的设备 (例如 dm-crypt),它包含一个特殊的 LVM 头,它是 LVM 构建的实际硬件或存储系统。
1.2 卷组 (VG,Volume Group)
卷组是对一个或多个物理卷的集合,并在设备文件系统中显示为 /dev/VG_NAME。
1.3 逻辑卷 (LV,Logical Volume)
逻辑卷是可供系统使用的最终元设备,它们在卷组中创建和管理,由物理块组成,实际上就是一个虚拟分区,并显示为 /dev/VG_NAME/LV_NAME,通常在其上可以创建文件系统。
1.4 物理块 (PE,Physical Extends)
一个卷组中最小的连续区域(默认为 4 MiB),多个物理块将被分配给一个逻辑卷。你可以把它看成物理卷的一部分,这部分可以被分配给一个逻辑卷。
2. 创建 LVM
2.1 创建 pv
使用 pvcreate 命令创建 pv,每个磁盘即是一个 pv
警告
基于 raid 创建 lvm,请使用 raid 后的虚拟磁盘,比如:/dev/md1 进行 pv 创建,其余步骤与普通磁盘一致
sh
pvcreate /dev/sd{b..e}
sh
[root@moujun ~]# pvcreate /dev/md1
WARNING: xfs signature detected on /dev/md1 at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/md1.
Physical volume "/dev/md1" successfully created.
[root@moujun ~]#
2.2 创建 vg
创建卷组vg01
,并把物理卷/dev/sdb
、/dev/sdc
、/dev/sdd
、 /dev/sde
加入该卷组
sh
vgcreate vg01 /dev/sd{b..e}
sh
[root@moujun ~]# vgcreate vg01 /dev/md1
Volume group "vg01" successfully created
[root@moujun ~]#
可以通过 vgs、vgscan、vgdisplay 查看卷组信息
sh
[root@moujun ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 3 0 wz--n- <99.00g 4.00m
vg01 1 0 0 wz--n- 19.98g 19.98g
[root@moujun ~]#
2.3 创建 lv
创建指定大小: lvcreate -L 1G <vg_name> -n <lv_name>
vg 所有空间创建: lvcreate -l +100%FREE <vg_name> -n <lv_name>
sh
lvcreate -L 1G vg01 -n lv01
lvcreate -l +100%FREE vg01 -n lv01
sh
[root@moujun ~]# lvcreate -l +100%FREE vg01 -n lv01
Logical volume "lv01" created.
[root@moujun ~]#
3. 格式化 LVM
sh
[root@moujun ~]# mkfs.xfs /dev/mapper/vg01-lv01
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=4, agsize=1309440 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5237760, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@moujun ~]#
4. 挂载
4.1 临时挂载
sh
[root@moujun ~]# mount /dev/mapper/vg01-lv01 /mnt/raid/
[root@moujun ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.9M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 50G 1.8G 49G 4% /
/dev/sda1 1014M 150M 865M 15% /boot
/dev/mapper/centos-home 46G 33M 46G 1% /home
tmpfs 379M 0 379M 0% /run/user/0
/dev/mapper/vg01-lv01 20G 33M 20G 1% /mnt/raid
[root@moujun ~]#
4.2 永久挂载
参数说明:
md
设备 挂载点 文件系统类型 挂载参数 是否备份 是否检测
/dev/sdc /data ext4 defaults 0 0
在/etc/fstab
文件中添加挂载信息
go
# /etc/fstab
# Created by anaconda on Mon Feb 19 02:16:44 2024
#
# 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 0 0
UUID=36410410-ab0e-42ad-a762-c9be30da02fa /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/mapper/vg01-lv01 /mnt/raid xfs defaults 0 0
4. LVM 扩容
raid 创建请参考 raid 创建 ,其他步骤与普通硬盘完全一样
创建 pv
sh[root@moujun raid]# pvcreate /dev/md2 Physical volume "/dev/md2" successfully created. [root@moujun raid]#
扩展到 vg 中
sh[root@moujun raid]# vgextend vg01 /dev/md2 Volume group "vg01" successfully extended [root@moujun raid]#
扩展 lvm
创建指定大小:
lvextend -L +1G <lv_name>
vg 所有空间创建:
lvextend -l +100%FREE <lv_name>
shlvextend -L +1G /dev/mapper/vg01-lv01 lvextend -l +100%FREE /dev/mapper/vg01-lv01
扩展命令:
sh[root@moujun raid]# lvextend -l +100%FREE /dev/mapper/vg01-lv01 Size of logical volume vg01/lv01 changed from 19.98 GiB (5115 extents) to <29.97 GiB (7672 extents). Logical volume vg01/lv01 successfully resized. [root@moujun raid]#
刷新 lv 空间
当 lv 格式为xfs:
xfs_growfs /dev/mapper/vg01-lv01
当 lv 格式为ext4:
resize2fs /dev/mapper/vg01-lv01
sh[root@moujun raid]# xfs_growfs /dev/mapper/vg01-lv01 meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=4, agsize=1309440 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=5237760, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 5237760 to 7856128 [root@moujun raid]#
df 确认空间已扩容完成
go[root@moujun raid]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 8.9M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/mapper/centos-root 50G 1.8G 49G 4% / /dev/sda1 1014M 150M 865M 15% /boot /dev/mapper/centos-home 46G 33M 46G 1% /home /dev/mapper/vg01-lv01 20G 33M 20G 1% /mnt/raid /dev/mapper/vg01-lv01 30G 33M 30G 1% /mnt/raid tmpfs 379M 0 379M 0% /run/user/0
重启验证