它是Linux环境下对磁盘分区进行管理的一种机制
lvm的基本步骤:
LVM(logical volume manager)逻辑管理卷,是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷。
LVM的常用术语:
物理存储介质:可以是磁盘分区,整个磁盘,RAID或SAN磁盘,设备必须初始化为LVM物理卷,才能与LVM结合使用。
物理卷PV:物理卷就是LVM的基本存储逻辑块。
卷组VG:lvm卷组类似于LVM系统中的物理硬盘。
逻辑卷LV:类似于非LVM系统中硬盘分区,LV建立在VG上,可以在LV之上建立文件系统。
PE:pv物理卷中可以分配的最小存储单元,pe的大小可以是指定的,默认为4MB.
名称 | 最小存储单元 |
---|---|
硬盘 | 扇区(512字节) |
文件系统 | block(1K或4K) |
raid | chunk(512K) |
LVM | pe |
LVM优点;
使用卷组,使多个硬盘空间看起来像一个大的硬盘。
使用逻辑卷,可以跨多个硬盘空间的分区,sdb1,sdb2,sdb3.
在使用逻辑卷时,不需要考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间
可以在线对LV,VG惊醒创建,删除,调整大小,LVM上的文件系统也需要重新调整大小。
创建lvm的基本步骤:创建物理卷,创建卷组,创建逻辑卷,格式化,挂载。
1.物理磁盘被格式化为pv,空间被划分为一个个的pe #pv包含pe
2.不同的pv加入到同一个vg中, #VG包含pv
3.在VG中创建LV逻辑卷,基于PE创建,(组成LV的PE可能来自不同的物理磁盘) #LV基于PE创建
-
LV可以格式化后装载使用, #格式化挂载使用
-
LV的扩充缩减实际上就是增加或减少组成该LV的pe数量,其过程不会丢失原始数据。
创建磁盘
添加磁盘
fdisk /dev/sdb #创建4个主分区,每个分区1G
参数t:选择分区号
参数l:查看系统分区类别型号
ls /dev/sdb*
设定分区类型代码:fdisk /dev/sdb ===== t========选择分区号======8e=====w
8e:代表lvm卷
83:代表linux分区
pvcareate /dev/sdb{1,2,3,4} #创建pv
pvs 查询
pvdisplay /dev/sdb1 详细查看
vgcreate vg01 /dev/sdb1 创建卷组将/dev/sdb1加入到vg01中,
vgs 查看
vgdisplay vg01 查看vg01
pvs 查看
创建LV
lvcreate -n 指定新逻辑卷的名称 -L 指定lv大小的size (-l 指定LE的数量)vgname
lvcreate -n lv01 -L 16M VG01 创建lv01
lvcreate -n lv02 -l 4 vg01 用四个le组成lv02逻辑卷
格式化lv文件系统与挂载
mkdir /lv01
mkfs.ext4 /dev/vg01/lv01 格式化
lv01逻辑卷的路径在哪?
ls /dev/vg01/lv01
ll /dev/vg01/lv01 是个软连接真正的路径在/dev/dm-0
mount /dev/vg01/lv01 /lv01/
df -h /lv01/ 查看分区信息
echo "/dev/vg01/lv01 /lv01 ext4 defaults 0 0" >>/etc/fstab 开机自动开启
指定pe的大小
指定PE大小用的参数:-s 如果存储的数据都是大文件,那么PE尽量调大,读取速度快。
HDFS ceph swift,gfs,mfs
参数 -s指定pe的大小
vgcreate -s 16M vg02 /dev/sdb2
vgs
vgdisplay vg02
LV扩容
首先,确认一下是否有可用的扩容空间,因为空间是从VG里面创建的,并且LV不能跨VG扩容
vgs
用到的命令
vgextend
lvextend
扩容逻辑卷
lvs
lvextend -L +30M /dev/vg01/lv01 扩容30M
lvextend -L 30m /dev/vg01/lv01 扩容到30M
df -h /dev/lv01 显示未扩容
lvs 显示已经扩容
注:可以看到lv虽然扩展了,但是文件系统大小还是原来的,下面开始扩容文件系统
ext4文件系统扩容使用命令语法:resize2fs 逻辑卷名称
xfs文件系统扩容使用命令语法:xfs_growfs 挂载点
resize2fs /dev/vg01/lv01
df -h /lv01/
方法3:使用lvextend命令中加参数 -r ,它支持多种不同的文件系统,ext3.ext4.
lvextend -L 80M -r /dev/vg01/lv01
vls
df -h /lv01/
已经提升
vg扩容
场景:vg卷组中的空间不够,需要添加新的硬盘进来
vgs
pvcreate /dev/sdb3 创建pv
vgextend vg01 /dev/sdb3 将/dev/sdb3创建成vg并加入到vg01中
LVM缩小:
lvs
lvreduce -L 20M //dev/vg01/lv01 缩小到20M
lvs
df -h /lv01/
答:lv可以动态增加,可以动态缩小的,但是xfs文件系统不支持缩小,btrfs文件系统支持在线缩小。
vg缩小,要保证你的物理卷是否被使用,因为它无法缩小一个正在使用的vg
cp -r /boot/grub /lv01/
vgreduce vg01 /dev/sdb1
互动:如果sdb1是一个磁盘阵列,而这个磁盘阵列使用年代太久,我们必须移出怎么办?
增加pv到指定pg中
将要移除的pv文件移到新添加的pv
pvmove /dev/sdb1 /dev/sdb3 移动数据
vgreduce vg01 /dev/sdb1 移完数据在移除sdb1
pvs
LVM删除
创建LVM流程
pvcreate 创建pv---》vgcreate 创建卷组 ---》lvcreate 创建逻辑卷组--->mkfs.ext4 lv格式化 ---》mount挂载
删除LVM流程
umount卸载-----》lvremove 移出逻辑卷----》vgremove vg移出卷组 --->pvremove移出pv
umount /lv01/
vgs
lvremove /dev/vg01/lv01
lvs
vgremove vg01
vgs
pvremove /dev/sdb1
pvs