LVM的介绍与创建
LVM介绍
LVM,Logical Volume Manager,逻辑卷管理器
LVM的原理是将磁盘/分区逻辑上组成一块独立的大磁盘/分区,然后将这块大磁盘分区后使用。
LVM的优点:弹性管理磁盘容量
LVM相关概念
PV,Physical Volume,物理卷,磁盘/分区经过系统转化成LVM最底层的物理单元
VG,Volume Group,卷组,LVM大磁盘,由PV组合而成
PE,Physical Extent,实体区块,整个LVM最小的存储区块,类似于文件系统的block
LV,Logical Volume,逻辑卷,由PE组成,可用于格式化挂载的逻辑分区
KVM数据写入机制
- 线性模式linear:按磁盘识别顺序依次写入磁盘,默认数据写入机制
- 交错模式triped:数据拆分写入不同的磁盘;类似RAID0;若磁盘损坏,则所有数据也将损坏
LVM实现
- PV:更改分区的system ID 为8e(LVM)
- VG:将PV组合成VG
- LV:切分VG,组成各自的LV
设置分区类型
使用分区模拟LVM的创建
fdisk -l /dev/sda #使用l查看type,使用t修改类型为8e
创建PV
pvcreate :将物理磁盘/分区建立成为 PV ;
pvscan :搜寻目前系统里面具有 PV 的磁盘;
pvdisplay :显示出目前系统上面的 PV 状态;
pvremove :将 PV 属性移除
pvscan #查看目前系统上是否有PV硬盘
pvdisplay /dev/sda6 #查看系统上详细的PV信息
pvcreate /dev/sda{5,6,7,8} #创建pv
创建VG
vgcreate :创建vg
vgscan :查看是否存在VG
vgdisplay :显示目前系统的 VG 状态;
vgextend :在 VG 内增加额外的 PV ;
vgreduce :在 VG 内移除 PV;
vgchange :设定 VG 是否启动 (active);
vgremove :删除一个 VG
vgscan #查看目前系统上是否存在vg
vgdisplay vgname #查看目前的vg信息
vgcreate -s 4M vgname /dev/sda{6,7,8} #建立VG组,-s表示PE的大小
vgextend vgname /dev/sda9 #将分区/dev/sda9扩充到VG中
扩充VG
创建LV
lvcreate :创建 LV
vscan :查询系统上面的 LV ;
lvdisplay :显示系统上面的 LV 状态
lvextend :在 LV 里面增加容量
lvreduce :在 LV 里面减少容量;
lvremove :删除一个 LV
lvresize :对 LV 进行容量大小的调整
lvdisplay /dev/vgname/lvname #查看系统上的lv信息;需要使用LV的全名来查看相应信息
lvcreate -L 2G -n lvname vgname #-L表示lv的容量,需要是PE的倍数
lvcerate -l 128 -n lvname vgname #-l表示lv的容量,使用的是PE的个数
格式化、挂载LV
mkfs.xfs /dev/vgname/lvname #需要使用LV的全名进行格式化
mkdir /data/lvm
mount /dev/vgname/lvname /data/lvm
df -hT /data/lvm
测试使用LV
LV扩容
LV扩容,文件系统层面的扩容,扩容的文件系统有XFS、EXT4
注:xfs文件系统容量只能扩容,不能缩减
vgdisplay vgname #查看VG是否有剩余的容量可用来扩充
lvresize -L +500M /dev/vgname/lvname #使用vg的容量来扩充lv的容量
lvscan #查看扩充后的LV信息
df -hT /data/lvm #扩充LV后发现文件系统是没有更新扩充后的信息的
查看扩容后的LV信息
文件系统容量没有相对增加, LVM 可以在线直接处理,并不需要特别给他 umount
增加文件系统容量,xfs_growfs
xfs_info /data/lvm #查看文件系统信息
xfs_growfs /data/lvm #处理文件系统的容量
查看扩容后的文件系统容量
在扩容过程中,分区中的数据不变
LVM 动态自动调整磁盘使用率
LVM Thin Volume,使用多少容量才分配多少容量给相应的LV。先建立一个磁盘容量存储池thin pool,然后由这个存储池产生一个指定固定容量的LV。LV实际使用的大小会动态的从存储池中获取,但是在查看LV容量的时候显示的是指定的LV大小。
建立LV容量池
指定容量池的大小建立LV
lvcreate -L 1G -T vgname/poolname #创建thin pool
lvdisplay /dev/vgname/poolname #查看容量池信息
lvs vgname #查看vg信息
查看LV简易信息
使用容量池建立LV
lvcreate -V 10G -T vgname/poolname -n thin1 #容量可自定义为大于poolname的容量
lvs vgname
使用LV
使用数据测试时,pool使用率达到了67.5%,而文件系统则才使用6.59%
mkfs.xfs /dev/vgname/thin1
mkdir /data/thin
mount /dev/vgname/thin1 /data/thin
df -hT /data/thin