Logical Volume Manager
LVM是在物理设备的基础上,建立逻辑存储设备,逻辑存储设备可以随意扩充,或缩减
功能
1、 根据需求动态扩充,或缩减空间
2、 实现快照备份
基本结构及概念
PV: pyicalvolume 物理卷,由物理设备盘区,raid或磁盘组成,
VG: volumegroup 卷组,由整数个PV组成,一个PV包含若干个 PE可添加或缩减PV弹性变化
LV: logical volume 逻辑卷,建立在vg上,最大不能超过vg的大小
PE: 最小的物理存储单位,只有加载到VG上才确定其大小 类似与物理磁盘中的block
LE: 在物理卷上叫PE,在逻辑卷上叫LE,最小的存储单位,
PV 管理工具
pvs :pv summary 概要显示pv信息
pvdisplay:详细显示pv使用情况
pvcreate: 创建pv
-f 强制创建pv,不管其是否被划分到其他的vg中使用
-v verbose 显示创建过程
-u uuid 基于uuid创建物理卷
pvremove 移除pv,将数据擦去,移除之
pvmove 将数据从该pv上转移到其他的pv上,以使该pv可以进行其他的移除类操作
pvremove wipes the label on a device so that LVM will no longer recognise it as
a physical volume.
pvscan 探测,扫描该系统上的所有的LVM块设备
pvchage:修改物理卷属性
VG管理工具
vgs 概要显示vg信息
vgdisplay 显示vg的详细信息
vgcreate 创建vg
-h|--help 获取帮助
-s #[bBsSkKmMgGtTpPeE] 设定PE的大小,一旦被创建很难被改变
使用格式如下:
[-t|--test] [-v|--verbose] [--version][PHYSICAL DEVICE OPTIONS] VolumeGroupName pyicalDevicePath [PhysicalDevicePath...]
vgextend 改变vg大小,只能是pv的整数大小。格式如下
-f|--force VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
强制改变其大小,一般不要这样,可能会毁坏数据
vgremove 移除VG,当你的VG不再使用了,可以移除之,如果VG中有PV请先移除之,
如果有逻辑卷存在,会提示你先移除PV,可以使用-f直接覆盖
vgreduce 允许你从vg中 移除一个或更多未使用的pv
[-v|--verbose] VolumeGroupName [PhysicalVolumePath...]
LV逻辑卷,逻辑卷,逻辑卷只能在所在的vg中动态扩充,或缩减。
lvcreate 逻辑卷的创建,使用现有的逻辑卷组空间创建,
-l|--extents LogicalExtentsNumber[%{VG|PVS|FREE
-L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE
-n|--name LogicalVolume{Name|Path}
-s|--snapshot [VolumeGroup{Name|Path} ExternalOriginLogicalVolumeName]]
-s snapshot 制作快照卷 [vg{name|path}] 原lv(要做快照的对象) VG{name|path}
-n 为LV命名
lvdisplay 详细显示逻辑卷信息
lvs 概要显示逻辑卷信息
lvextend 扩展逻辑卷,利用现有vg空间扩充lv大小
-l|--extents LogicalExtentsNumber[%{VG|LV|PVS|FREE|ORIGIN}]
-L|--size [+]LogicalVolumeSize[bBsSkKmMgGtTpPeE]
使用格式:
lvextend options LogicalVolumePath [PhysicalVolumePath[:PE[-PE]]...]
lvconvert将逻辑卷转化为快照,
lvreduce 删除逻辑卷,删除逻辑卷时,须确保数据已备份或保存
snapshot 保存的只是变化了的数据,未变化的数据还在原来的存储空间的
快照卷 是对磁盘某一个时刻的数据进行保存,它保存的只是变化了的数据
对磁盘保存数据过程的时间很短,只在一瞬间,因此,基本上是完成数据,在保存过程中变化的数据不能保存,其和快照后的数据可以通过增量备份实现其保存
快照卷也可以作为访问数据的一个入口,因此只能存在与和要保存的卷的组中,不能跨组
但只能访问快照时刻的数据、
快照后的数据不会保存到快照卷中,
其实现过程中不能格式化数据
具体实现命令
lvcreate–s –L #{kmgtpe} –n SNAPSHOT_NAME OriginalLogicalVolumeName
二、逻辑卷与快照卷功能的实现
1:创建一个至少有两个PV组成的大小为10G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录;
1、 要想创建pv必须要有可创建的物理设备,因此先创建两个5G的硬盘sdb1,sdb2,且将磁盘格式转化成8e lvm格式,以供创建lvm使用省略
2、 创建物理卷
#pvcreate /dev/sdb{1,2} Physical volume"/dev/sdb1"successfully created Physicalvolume "/dev/sdb2"successfully created
3、创建大小10G PE 16MB 的VG testvg
#vgcreate -s 16m testvg /dev/sdb{1,2} Volume group "testvg"successfullycreated
4、创建大小为5G的testlv
#lvcreate-n testlv -L 5G testvg Logicalvolume "testlv"created # lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert testlvtestvg -wi-a----- 5.00g
5、对/dev/testvg/testlv进行格式化
mkfs.ext4/dev/testvg/testlv
挂载到已创建的/users 目录下如此这样就可以使用testlv空间了了
2:新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复 制/etc/pam.d目录至自己的家目录;
[archlinux@localhost~]$ cp -r /etc/pam.d//users/archlinux/
3:扩展testlv至7G,要求archlinux用户的文件不能丢失;
#lvextend -L 7G /dev/testvg/testlv #resize2fs -p/dev/testvg/testlv
#扩展逻辑边界
4:收缩testlv至3G,要求archlinux用户的文件不能丢失;
缩减时,应先缩减其逻辑边界,在缩减其物理边界,而且不能在线缩减,需先卸载,还要强制进行磁盘检测,而且要确保缩减后的空间能承载现有数据,否则会出错!
1) 卸载,略
2) 缩减其逻辑边界
#e2fsck -f/dev/testvg/testlv #resize2fs -p /dev/testvg/testlv 3G
3) 缩减其物理边界
#lvreduce-L 3G/dev/testvg/testlv
4)重新挂载并使用
5、对testlv创建快照,并尝试基于快照备份数据,验正快照的功能;
创建快照卷
# lvcreate -L 3G -s /dev/testvg/testlv -n shotlv # lvcreate-L 3G -s/dev/testvg/testlv -n shlv
挂载到/media目录下
# mount /dev/testvg/shlv /media # ls /media archlinux lost+found
修改原数据
# cd/users/ # mkdir tom # ls /users archlinux lost+found tom
快照卷数据并未改变
# ls /media archlinux lost+found
删除原数据
# rm -rf /users/*
将快照卷原样复制到原目录下,将原目录下的数据恢复到快照时刻的样子,实现了数据的基础备份
# cp -af /media/* /users/
# ls /users
archlinux lost+found
6、创建一个由两个物理卷组成的大小为5G的卷组设备,要求其PE大小为16M;而后在此卷组中创建一个大小为2G的逻辑卷lv1,此逻辑卷要能在开机后自动挂载至/users目录;
# pvcreate /dev/sda{5,6} Physical volume "/dev/sda5"successfully created Physical volume "/dev/sda6"successfully created # vgcreate -s 16M myvg /dev/sda{5,6} Volume group "myvg" successfullycreated # vgs VG #PV #LV #SN Attr VSize VFree myvg 2 0 0 wz--n- 10.00g 10.00g # lvcreate -L 2G -n LV1 /dev/myvg Logical volume "LV1" created # mkfs.ext4 /dev/myvg/LV1 # vim /etc/fstab /dev/myvg/LV1 /users ext4 defaults 0 0 ~ "/etc/fstab" 18L, 963C # mount -a
通过以上实例,大概可体现LVM 的基本使用格式及功用
转载于:https://blog.51cto.com/fallcamel/1689405