逻辑卷管理器LVM(Logcal Volume Manager),LVM可以弹性的调整文件系统的容量,不必要再去烦恼文件系统空间不够的问题。LVM的实现是将几个物理分区(或磁盘)通过软件组合成为一块看起来是独立的大磁盘(VG),然后将这块大磁盘再经过分成可使用分区(LV),最终就能够挂载使用。
以下是LVM一些名词的解释,解释来自百度LVM:
PhysicalStorageMedia 物理存储设备
指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元
PV(Physical Volume)物理卷
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备,是LVM的基本存储逻辑块,但和基本的物理存储介质相比,却包含有与LVM相关的管理参数。
VG(Volume Group)卷组
类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成,可以在卷组上创建一个或多个LV
LV(Logical Volume)逻辑卷
类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上,在逻辑卷LV之上可以建立文件系统
PE(Physical Extent)物理块
每一个物理卷PV被划分为称为PE的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元,PE的大小是可以配置的,默认为4MB。所以物理卷(PV)大小等同的基本单元PE组成。
LE(Logical Extent)逻辑块
逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
LVM各组件的实现流程图如下图,图 1-1
图 1-1 LVM各组件的实现流程图示
二、LVM基础实践
1、创建一个大小为5G的LVM
使用fdisk 创建两个大小分别为3G,7G的磁盘分区
fdisk /dev/sdb
将新建的/dev/sdb5和/dev/sdb6的system ID改为Linux LVM(8e)
w保存退出
让系统识别分区表
partprobe /dev/sdb
查看系统是否识别了新的分区表
cat /proc/partitions
创建PV,使用pvcreate将物理分区新建为PV (pvcreate使用格式可参考man手册,简单的使用格式 pvcreate /PATH/TO/BLOCKDEVICE)
pvcreate /dev/sdb{5,6}
使用pvs查看所有的pv设备
使用pvdisplay 查看pv设备的详细信息
将新建的pv设备新建为VG(vgcreate VGDEVICENAME /PATH/TO/PVDEVICE)
vgcreate myvg /dev/sdb{5,6}
可以使用-s选项设置PE的大小,默认为4MB
使用vgs查看所有的vg设备
使用vgdisplay查看vg设备的详细信息
(vgscan和pvscan分别可以产看当前文件系统上存在的vg设备和pv设备)
使用lvcreate再myvg上新建lv(lvcreate -n LV_NAME -L #G|M VG_NAME)
lvcreate -n mylv -L 5G myvg
lvs
lvdisplay
格式化新建的lv
mke2fs -j /dev/myvg/mylv
挂载lv
mount /dev/myvg/mylv /mnt/mylv
使用mount查看挂载的lv设备
mount
2、拓展mylv到12GB
拓展mylv前,要卸载mylv
umount /dev/mapper/myvg-mylv
使用fdisk 新建一个大小为5G的新分区/dev/sdb7,并将其的System ID 设置为8e
将新分区设置为PV
pvcreate /dev/sdb7
使用新建的PV将myvg拓展
vgextend myvg /dev/sdb7
拓展lv
lvextend -L 12G /dev/myvg/mylv
或者使用
lvextend -L +7G /dev/myvg/mylv
使用lvs或者lvdisplay查看mylv
为拓展的mylv的文件系统重新划分大小
划分之前需要强制检查磁盘,使用e2fsck检查mylv,使用-f强制检查
e2fsck -f /dev/myvg/mylv
使用resize2fs重新划分mylv文件系统的大小
resize2fs -p /dev/myvg/mylv
-p选项为划分至物理边界(就是将mylv全部划分,如果指定大小划分的话resize2fs /dev/myvg/mylv #G)
重新挂载mylv至/mnt/mylv
拓展lv结束
3、缩减mylv到3GB
缩减要保证mylv中存贮数据的大小一定要小于缩减后的大小,否则会产生数据损坏的情况
使用df命令查看mylv被使用的大小
df -lh |sed -n '1p;/mylv/p'
缩减mylv前,要卸载mylv
umount /dev/mapper/myvg-mylv
缩减的步骤和拓展的步骤相反
首先resize mylv的fs
照样要进行强制检查
e2fsck -f /dev/myvg/mylv
将/dev/myvg/mylv缩减至3G
resize2fs /dev/myvg/mylv 3G
使用lvreduce缩减mylv的空间
lvreduce -L 3G /dev/myvg/mylv
或者使用
lvreduce -L -9G /dev/myvg/mylv
重新挂载mylv至/mnt/mylv
缩减mylv结束
4、为mylv创建快照卷
注意
(1)创建快照卷生命周期为整个数据访问时长,在这段时长内,数据的增长量不能超出快照卷大小
(2)快照卷应该是只读的
(3)快照卷和原卷在同一卷组内
使用lvcreate创建快照卷
lvcreate -L 50M -n mysnapshot -s -p r /dev/myvg/mylv
-L指定大小,-n指定名称,-s创建为快照,-p设置读写属性,r为readonly,rw为read and write
使用lvdisplay查看创建的快照卷
lvdisplay /dev/myvg/mysnapshot
挂载快照卷
mount /dev/myvg/mysnapshot /mnt/mysnapshot
创建快照卷完成
这里挂载的快照卷是创建快照时mylv的状态,可以使用tar命令将快照卷中的文件备份。