标签:lvm
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
pvcreate [--commandprofile ProfileName] [-d|--debug] [-h|--help] [-t|--test]
[-v|--verbose] [--version] [-f[f]|--force [--force]] [-y|--yes] [--labelsector]
[--bootloaderareasize size] [-M|--metadatatype type][--[pv]metadatacopies NumberOf?
Copies][--metadatasize size] [--metadataignore {y|n}] [--dataalignment alignment]
[--dataalignmentoffset alignment_offset] [--restorefile file] [--norestorefile]
[--setphysicalvolumesize size] [-u|--uuid uuid] [-Z|--zero {y|n}] PhysicalVolume
[PhysicalVolume...]
-f 强制创建pv,不管其是否被划分到其他的vg中使用
-v verbose 显示创建过程
-u uuid 基于uuid创建物理卷
pvremove 移除pv
pvmove 将数据从该pv上转移到其他的pv上,以使该pv可以进行其他的移除类操作
pvremove 抹去数据
[--commandprofile ProfileName] [-d|--debug] [-h|--help] [-t|--test]
[-v|--verbose] [--version][-f[f]|--force [--force]] [-y|--yes] PhysicalVolume
[PhysicalVolume...]
pvremovewipes 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
vgcreate [--addtag Tag] [--allocAllocationPolicy] [-A|--autobackup {y|n}] [-c|--clus?
tered {y|n}][--commandprofile ProfileName] [-d|--debug] [-h|--help] [-l|--maxlogi?
calvolumes MaxLogicalVolumes][-M|--metadatatype type] [--metadataprofile ProfileName]
[-p|--maxphysicalvolumes MaxPhysicalVolumes] [--[vg]metadatacopies NumberOf?
Copies|unmanaged|all] [-s|--physicalextentsize PhysicalExtentSize[bBsSkKmMgGtTpPeE]]
[-t|--test] [-v|--verbose] [--version][PHYSICAL DEVICE OPTIONS] VolumeGroupName Phys?
icalDevicePath [PhysicalDevicePath...]
-s 设定物理卷的大小
vgextend
vgextend [-A|--autobackup {y|n}] [--commandprofile ProfileName] [-d|--debug]
[-h|-?|--help] [--restoremissing][-f|--force] [-t|--test] [-v|--verbose] [PHYSICAL
DEVICE OPTIONS] VolumeGroupNamePhysicalDevicePath [PhysicalDevicePath...]
vgremove
vgremove [--commandprofile ProfileName] [-d|--debug] [-f|--force]
[-h|-?|--help] [--noudevsync][-t|--test] [-v|--verbose] VolumeGroupName [Vol-
umeGroupName...]
vgremove allows you toremove one or more volume groups. If oneor more physi-
cal volumes in the volume group arelost, consider vgreduce --removemissing to
make the volume group metadataconsistent again.
If there are logical volumes thatexist in the volume group, a prompt will be
given to confirm removal. You can override the prompt with -f.
vgreduce
vgreduce [-a|--all] [-A|--autobackup {y|n}] [--commandprofile ProfileName]
[-d|--debug] [-h|-?|--help][--removemissing] [-t|--test] [-v|--verbose] Vol-
umeGroupName [PhysicalVolumePath...]
vgreduce 允许你从vg中 移除一个或更多未使用的pv
LV逻辑卷,逻辑卷,逻辑卷只能在所在的vg中动态扩充,或缩减。
lvcreate 逻辑卷的创建,使用现有的逻辑卷组空间创建,
lvcreate [--addtag Tag] [--allocAllocationPolicy] [-a|--activate [a|e|l]{y|n}]
[-k|--setactivationskip {y|n}] [-K|--ignoreactivationskip] [-A|--autobackup
{y|n}] [--commandprofile ProfileName] [-C|--contiguous {y|n}] [-d|--debug]
[-h|-?|--help] [--noudevsync][--ignoremonitoring] [--metadataprofile Profile-
Name] [--monitor {y|n}][--[raid]maxrecoveryrate Rate] [--[raid]minrecoveryrate
Rate] [-i|--stripes Stripes[-I|--stripesize StripeSize]] {[-l|--extents Logi-
calExtentsNumber[%{VG|PVS|FREE}] | -L|--size LogicalVolumeSize[bBsSkKmMg-
GtTpPeE]] | -V|--virtualsize VirtualSize[bBsSkKmMgGtTpPeE]} [-M|--persistent
{y|n}] [--minor minor] [-m|--mirrors Mirrors [--nosync] [--mirrorlog
{disk|core|mirrored} | --corelog] [-R|--regionsize MirrorLogRegionSize]]
[-n|--name LogicalVolume{Name|Path}] [-p|--permission {r|rw}] [-r|--readahead
{ReadAheadSectors|auto|none}] [-t|--test] [-T|--thin [--cachemode {write-
back|writethrough} [-c|--chunksize ChunkSize[bBsSkKmMgG]] [--discards
{ignore|nopassdown|passdown}] [--poolmetadatasize MetadataVolumeSize[bBsSkKm-
MgG]] [--poolmetadataspare {y|n}]][--thinpool ThinPoolLogicalVolume{Name|Path}
[-s|--snapshot [VolumeGroup{Name|Path}/] ExternalOriginLogicalVolumeName]]
[--type SegmentType] [-v|--verbose] [-W|--wipesignatures] [-Z|--zero {y|n}]
VolumeGroup{Name|Path}[/ThinPoolLogicalVolumeName][PhysicalVol-
umePath[:PE[-PE]]...]
lvcreate [-l|--extents LogicalExtentsNumber[%{ORIGIN|VG|PVS|FREE}] | -L|--size
LogicalVolumeSize[bBsSkKmMgGtTpPeE]][-c|--chunksize ChunkSize[bBsSkK]] [--com-
mandprofile Profilename] [--noudevsync][--ignoremonitoring] [--metadataProfile
ProfileName] [--monitor {y|n}] [-n|--name SnapshotLogicalVolume{Name|Path}]
-s|--snapshot {[VolumeGroup{Name|Path}/]OriginalLogicalVolumeName -V|--virtual-
sizeVirtualSize[bBsSkKmMgGtTpPeE]}
-s snapshot 制作快照卷 [vg{name|path}] 原lv(要做快照的对象) VG{name|path}
-n 为LV命名
-L #{kmgtpe} 指定大小
-l # 根据LE个数指定大小
lvdisplay 详细显示逻辑卷信息
lvs 概要显示逻辑卷信息
lvextend 扩展逻辑卷,利用现有vg空间扩充lv大小
lvextend [--alloc AllocationPolicy] [-A|--autobackup {y|n}] [--commandprofile
ProfileName] [-d|--debug] [-h|-?|--help] [-f|--force] [-i|--stripes Stripes
[-I|--stripesize StripeSize]] {-l|--extents [+]LogicalExtentsNum-
ber[%{VG|LV|PVS|FREE|ORIGIN}] | -L|--size [+]LogicalVolumeSize[bBsSkKmMg-
GtTpPeE]} [-n|--nofsck] [--noudevsync] [-r|--resizefs] [--use-policies]
[-t|--test] [-v|--verbose] LogicalVolumePath [PhysicalVolumePath[:PE[-PE]]...]
-L size[+/-]SIZE[bkmgtpe]
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、 创建物理卷
[root@localhost ~]# pvcreate /dev/sdb{1,2}
Physical volume"/dev/sdb1" successfully created
Physicalvolume "/dev/sdb2" successfully created
3、创建大小10G PE 16MB 的VG testvg
[root@localhost ~]# vgcreate -s 16m testvg /dev/sdb{1,2}
Volume group "testvg" successfullycreated
4、创建大小为5G的testlv
[root@localhost ~]# lvcreate-n testlv -L 5G testvg
Logicalvolume "testlv" created
[root@localhost ~]# 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用户的文件不能丢失;
[root@localhost users]#lvextend -L 7G /dev/testvg/testlv
[root@localhost users]#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创建快照,并尝试基于快照备份数据,验正快照的功能;
创建快照卷
[root@localhost ~]# lvcreate -L 3G -s /dev/testvg/testlv -n shotlv
#lvcreate -L 3G -s/dev/testvg/testlv -n shlv
挂载到/media目录下
#mount /dev/testvg/shlv /media
[root@localhost media]# ls /media
archlinux lost+found
修改原数据
[root@localhost media]# cd/users/
[root@localhost users]# mkdir tom
[root@localhost users]# ls /users
archlinux lost+found tom
快照卷并未改变
[root@localhost users]# ls /media
archlinux lost+found
删除原数据
[root@localhost users]# rm -rf /users/*
将快照卷原样复制到原目录下,将原目录下的数据恢复到快照时刻的样子,实现了数据的基础备份
[root@localhost users]# cp -af /media/* /users/
[root@localhost users]# ls /users
archlinux lost+found
6、创建一个由两个物理卷组成的大小为5G的卷组设备,要求其PE大小为16M;而后在此卷组中创建一个大小为2G的逻辑卷lv1,此逻辑卷要能在开机后自动挂载至/users目录;
[root@localhostusers]# pvcreate /dev/sda{5,6}
Physical volume "/dev/sda5"successfully created
Physical volume "/dev/sda6"successfully created
[root@localhostusers]# vgcreate -s 16M myvg /dev/sda{5,6}
Volume group "myvg" successfullycreated
[root@localhostusers]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg 2 0 0 wz--n- 10.00g 10.00g
[root@localhostusers]# lvcreate -L 2G -n LV1 /dev/myvg
Logical volume "LV1" created
[root@localhostusers]# mkfs.ext4 /dev/myvg/LV1
[root@localhost users]# vim /etc/fstab
/dev/myvg/LV1 /users ext4 defaults 0 0
~
"/etc/fstab" 18L, 963C
[root@localhost users]# mount -a
本文出自 “fall camel” 博客,请务必保留此出处http://fallcamel.blog.51cto.com/8079848/1689405
标签:lvm
原文地址:http://fallcamel.blog.51cto.com/8079848/1689405