LVM逻辑卷管理器 基础

逻辑卷管理器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

wKioL1jNHYWSqQExAAE07FdQwNI432.png

图 1-1 LVM各组件的实现流程图示

二、LVM基础实践

1、创建一个大小为5G的LVM

使用fdisk 创建两个大小分别为3G,7G的磁盘分区

fdisk /dev/sdb

wKioL1jNIN6jHxjlAAAmOK_L31s697.png

将新建的/dev/sdb5和/dev/sdb6的system ID改为Linux LVM(8e)

wKiom1jNIPXSq3vyAADr7jKRJ4g388.png

wKioL1jNIQ_CZmKAAAAnMTXZLbw476.png

w保存退出

让系统识别分区表

partprobe /dev/sdb

查看系统是否识别了新的分区表

cat /proc/partitions

wKioL1jNISyDqfTuAAAs3_EbOWM408.png

创建PV,使用pvcreate将物理分区新建为PV (pvcreate使用格式可参考man手册,简单的使用格式 pvcreate /PATH/TO/BLOCKDEVICE)

pvcreate /dev/sdb{5,6}

使用pvs查看所有的pv设备

wKioL1jNIWHwMlFjAAATI1wFi6Y353.png

使用pvdisplay 查看pv设备的详细信息

wKioL1jNIfewixWXAAA4x-OoE_Y436.png

wKiom1jNIh6DjCzQAAA5AnPTXu8507.png

将新建的pv设备新建为VG(vgcreate VGDEVICENAME /PATH/TO/PVDEVICE)

vgcreate myvg /dev/sdb{5,6}

可以使用-s选项设置PE的大小,默认为4MB

使用vgs查看所有的vg设备

使用vgdisplay查看vg设备的详细信息

wKiom1jNI42gcpWBAABU-9dWmlY784.png

(vgscan和pvscan分别可以产看当前文件系统上存在的vg设备和pv设备)

使用lvcreate再myvg上新建lv(lvcreate -n LV_NAME -L #G|M VG_NAME)

lvcreate -n mylv -L 5G myvg

lvs

lvdisplay

wKioL1jNI77xg_qBAAAjAm1MolE906.png

wKioL1jNI77C0w83AABTLMzC65k066.png

格式化新建的lv

mke2fs -j /dev/myvg/mylv

wKiom1jNJHPRfivrAABvUFgrAGM624.png

挂载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

wKioL1jNJTnjtEyjAAArDMLViTU082.png

使用新建的PV将myvg拓展

vgextend myvg /dev/sdb7

wKiom1jNJWviLs-MAABAwIoGce8303.png

拓展lv

lvextend -L 12G /dev/myvg/mylv

或者使用

lvextend -L +7G /dev/myvg/mylv

wKiom1jNJZ_w6wx7AABY6Kr5670334.png

使用lvs或者lvdisplay查看mylv

wKioL1jNJbzh7_3FAABSYoIYIWQ527.png

为拓展的mylv的文件系统重新划分大小

划分之前需要强制检查磁盘,使用e2fsck检查mylv,使用-f强制检查

e2fsck -f /dev/myvg/mylv

wKiom1jNJf2g0vUMAAA18zMpAKs152.png

使用resize2fs重新划分mylv文件系统的大小

resize2fs -p /dev/myvg/mylv

wKioL1jNJjniF53wAAAp1Z3eECE263.png

-p选项为划分至物理边界(就是将mylv全部划分,如果指定大小划分的话resize2fs /dev/myvg/mylv #G)

重新挂载mylv至/mnt/mylv

wKiom1jNJmrStH3SAACgUzHQEHg330.png

拓展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

wKiom1jNJtDjjcYRAAAg4A9CQF0877.png

使用lvreduce缩减mylv的空间

lvreduce -L 3G /dev/myvg/mylv

或者使用

lvreduce -L -9G /dev/myvg/mylv

wKioL1jNJumTcu0YAAAytZEsWpA451.png

wKiom1jNJxeyt2U9AAAi6dpcmEQ918.png

重新挂载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

wKiom1jNJ1OBl60IAABv30eVZDg912.png

挂载快照卷

mount /dev/myvg/mysnapshot /mnt/mysnapshot

创建快照卷完成

这里挂载的快照卷是创建快照时mylv的状态,可以使用tar命令将快照卷中的文件备份。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13906.html