1.概念介绍
背景:Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。
LVM:使多个不相干的设备变成一个,以供使用;在原始数据不变的情况下,是设备变大
物理卷(pv):可以是实际物理硬盘的分区,也可以是整个物理硬盘
卷组(vg):建立在物理卷之上,一个卷组至少包含一个物理卷,在卷组建立后可以动态添加物理卷
逻辑卷(lvm):建立在卷组之上,建立后可以动态扩展和缩小空间,系统中多个逻辑卷可以属于同一个卷组,也可属于不同的多个卷组
物理扩展(pe):物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小自动更改为vg中定义的pe的大小)
表示方式:
/dev/卷组/逻辑卷
/dev/mapper/卷组-逻辑卷
2.创建lvm逻辑卷
1.新建一个目录
mkdir /lvmdata
2.划分物理分区,并修改分区标签为lvm
fdisk /dev/vdb
3.重新开启一个新的shell,使用如下监控命令,便于观察
watch -n 1 "pvs;echo ===;vgs;echo ===;lvs;echo ===;df -H /lvmdata"
4.创建物理卷
pvcreate /dev/vdb1 ##创建物理分区(将橙子榨成汁)
vgcreate -s 16M vg0 /dev/vdb1 ##(将橙子榨成汁倒入一个容器,单位是16M)
lvcreate -L 200M -n lv0 vg0 ##可以查看lvm卷的大小
lvcreate-L 20M-n lv0 vg0 ##将大容器的橙汁倒出到小杯子,想倒出20M,但由于最小单位为16M,所以会给出32M
mkfs.xfs /dev/vg0/lv0 ##将分出的lvm逻辑卷格式化才能挂载
mount/dev/vg0/lv0/lvmdata ##挂载/lvmdata下面用户才可使用
df 查看是否已经挂载
3.lvm扩容
1.xfs格式的拉伸
注意:文件系统是否能拉伸缩减是由文件系统本身决定的,xfs不能缩减(设备拉神后文件系统大小不变,因为格式化设备时,只格式化了固定大小)
第一种情况:当划分出来的主分区/dev/vdb1够用时,直接进行拉伸(一个橙子够喝的时候)
lvextend -L 100M /dev/vg0/lv0 ##将设备大小拉伸到100M
xfs_growfs /dev/vg0/lv0 ##将文件系统也拉伸
==第二种情况:当划分出来的主分区/dev/vdb1不够用时(将lvm拉伸为600M),先划分一个主分区/dev/vdb2出来,再进行拉伸
fdisk /dev/vdb
n->p->2->Enter->+100M->p查看
/dev/vdb2->t->2->8e->p查看->wq保存
partprobe ##同部分区表
pvcreate /dev/vdb2 ##榨橙子
vgextend vg0 /dev/vdb2 ##将橙汁倒进大杯子
lvextend -L 600M /dev/vg0/lv0 ##拉伸lvm
xfs_growfs /dev/vg0/lv0 ##拉伸文件系统(否则拉神的文件不能用)
LOOK!!xfs文件系统不能进行缩减,ext4文件系统支持缩减,他的拉伸方式与xfs也不太一样
2.ext4格式的拉伸
umount /lvmdata ##卸载
mkfs.ext4 /dev/vg0/lv0 ##将文设备格式化为ext4文件系统
mount /dev/vg0/lv0 /lvmdata ##挂载
blkid ##查看
lvexend -L 550M /dev/vg0/lv0 ##扩展lvm设备
resize2fs /dev/vg0/lv0 ##将文件系统也拉伸
4.怎样将ext4文件系统的设备进行缩减?
umount /lvmdata ##卸载
e2fsck-f/dev/vg0/lv0 ##扫描设备中的东西,否则直接衰减会造成损坏
resize2fs /dev/vg0/lv0 100M ##缩减文件系统
mount/dev/vg0/lv0 lvmdata ##把vdb6从物理卷中拿出
df -H /lvmdata ##查看大小
lvreduce -L 100M /dev/vg0/lv0 ##缩减lvm设备
5.如何将/dev/vdb2的东西移动到/dev/vdb1,空出/dev/vdb2
pvmove /dev/vdb2 /dev/vdb1 ##完全移过去再操作,否则损坏文件
vgreduce vg0 /dev/vdb2 ##把这个橙子移走
pvremove /dev/vdb2
6.如何建立lvm的快照
当真实的设备文件挂载在/lvmdata下面比较危险,损坏就不能恢复
因此给真实的设备照一个快照,挂载在/lvmdata下面进行一系列操作
如果误删什么东西,直接删除快照即可
umount /lvmdata ##先卸载再进行快照
lvcreate -L 20M -n lv0-backup -s /dev/vg0/lv0 ##作快照
lvs ##查看
mount /dev/vg0/lv0-backup /lvmdata ##挂载快照
df -H
cd /lvmdata
7.怎么删除一个lvm设备?
umount /lvmdata
lvremove /dev/vg0/lv0-backup
lvremove /dev/vg0/lv0
vgremove vg0
premove /dev/vdb2
fdisk /dev/vdb ##删除建立的所有主分区