02 RedHat LVM逻辑卷管理.docx
《02 RedHat LVM逻辑卷管理.docx》由会员分享,可在线阅读,更多相关《02 RedHat LVM逻辑卷管理.docx(13页珍藏版)》请在冰豆网上搜索。
02RedHatLVM逻辑卷管理
技术文档
(v110210)
作者
王卫锋
审核
分类
RedHat
子类
OperaSystem
更新时间
2011-2-10
关键字
RedHatEnterpriseLinux
摘要
RedHatEnterpriseLinux5操作系统下逻辑卷的管理概念和命令
主要适用环境
X86主机平台,RHEL5或更高版本
版本说明
版本号
拟制/修改责任人
拟制/修改日期
修改内容/理由
V110210
王卫锋
2011-2-10
新建
目录
版本说明2
1系统和软硬件环境说明4
2LVM理论知识4
2.1LVM创建的流程:
PV-->VG-->LV4
2.2工作原理4
3创建相应的磁盘分区5
3.1修改磁盘,创建相应的分区5
3.2使磁盘分区生效5
4创建PV5
4.1相关命令5
4.2创建物理卷5
5创建VG6
5.1相关命令6
5.2创建逻辑卷VG7
5.3在VG中删除与添加PV7
5.4PE和LV大小的关系和限制8
6创建逻辑卷LV9
6.1相关命令9
6.2创建逻辑卷LV9
7挂载逻辑卷LV10
7.1LV的格式化10
8LVM的删除方法和过程11
8.1umount取消挂载11
8.2删除LV逻辑卷11
8.3删除VG卷组11
8.4删除PV12
9命令说明12
1系统和软硬件环境说明
硬件环境:
X86主机平台
软件环境:
RedHatEnterpriseLinux4或更高版本
2LVM理论知识
2.1LVM创建的流程:
PV-->VG-->LV
PV(PhysicalVolume):
物理卷,可以是单独磁盘,也可以是硬盘分区
VG(VolumeGroup):
卷组,是PV的组合,可以看成单独的逻辑磁盘
LV(LogicalVolume):
逻辑分区,当于物理分区的/dev/hdaX,只有逻辑卷才可以写数据
PE(PhysicalExtent):
物理范围,VG单元,类似于RAID的条带大小。
当多个PV组成一个VG时,LVM会在所有PV上做类似格式化的动作,将每个PV切成一块块的空间,这一块块的空间就称为PE,通常是4MB
LE(LogicalExtent):
逻辑范围,LV的组成单位。
大小为PE的倍数(通常为1:
1)
2.2工作原理
LVM在每个物理卷头部都维护了一个metadata,每个metadata中都包含了整个VG的信息,包括每个VG的布局配置、PV的编号、LV的编号,以及每个PE到LE的映射关系。
同一个VG中的每个PV头部的信息是相同的,这样有利于故障时进行数据恢复。
LVM对上层文件系统提供LV层,隐藏了操作细节。
对文件系统而言,对LV的操作与原先对Partition的操作没有差别。
当对LV进行写入操作时,LVM定位相应的LE,通过PV头部的映射表,将数据写入到相应的PE上。
LVM实现的关键在于在PE和LE间建立映射关系,不同的映射规则决定了不同的LVM存储模型。
LVM支持多个PV的Stripe和Mirror,这点和软Raid的实现十分相似。
使用LVM的优势:
•文件系统可以跨多个磁盘,因此大小不会受物理磁盘的限制。
•可以在系统运行状态下动态地扩展文件系统大小。
•可以增加新磁盘到LVM的存储池中。
•可以以镜像的方式冗余重要数据到多个物理磁盘上。
•可以很方便地导出整个卷组,并导入到另外一台机器上
使用LVM的限制:
•在从卷组中移除一个磁盘时必须使用reducevg,否则会出问题。
•当卷组中的一个磁盘损坏时,整个卷组都会受影响。
•不能减小文件系统大小(受文件系统类型限制)。
•因为加入了额外的操作,存储性能会受影响(使用Stripe的情况另当别论)
3创建相应的磁盘分区
3.1修改磁盘,创建相应的分区
[root@saniscsi]#fdisk-l
Disk/dev/sda:
42.9GB,42949672960bytes
255heads,63sectors/track,5221cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBootStartEndBlocksIdSystem
/dev/sda1*1255204825683Linux
/dev/sda22563821020127+82Linuxswap/Solaris
/dev/sda3383522138869267+5Extended
/dev/sda538339510439183Linux
/dev/sda639640810439183Linux
/dev/sda740942110439183Linux
/dev/sda842243410439183Linux
这里创建了4个扩展分区,每个100M,用fdisk/dev/sda创建的,分区没有格式化
3.2使磁盘分区生效
[root@saniscsi]#partprobe
4创建PV
4.1相关命令
pvcreate创建PV
pvscan扫描PV
pvdisplay显示PV
pvremove删除PV
partprobe
4.2创建物理卷
[root@saniscsi]#pvcreate/dev/sda5/dev/sda6
Physicalvolume"/dev/sda5"successfullycreated
Physicalvolume"/dev/sda6"successfullycreated
[root@saniscsi]#pvscan
PV/dev/sda5lvm2[101.94MB]
PV/dev/sda6lvm2[101.94MB]
Total:
2[203.89MB]/inuse:
0[0]/innoVG:
2[203.89MB]
[root@saniscsi]#pvdisplay
"/dev/sda5"isanewphysicalvolumeof"101.94MB"
---NEWPhysicalvolume---
PVName/dev/sda5
VGName
PVSize101.94MB
AllocatableNO
PESize(KByte)0
TotalPE0
FreePE0
AllocatedPE0
PVUUIDhDtAhK-adlx-5Ex0-ogc1-Alvm-H274-a8u7c2
"/dev/sda6"isanewphysicalvolumeof"101.94MB"
---NEWPhysicalvolume---
PVName/dev/sda6
VGName
PVSize101.94MB
AllocatableNO
PESize(KByte)0
TotalPE0
FreePE0
AllocatedPE0
PVUUIDSy1wPG-XnjQ-eYD5-91vj-Ug5b-EGgU-i30lCS
5创建VG
5.1相关命令
vgcreate创建VG
vgscan扫描VG
vgdispaly
vgextend
vgreduce
vgchange
vgremove
5.2创建逻辑卷VG
[root@saniscsi]#vgcreatevg0/dev/sda5/dev/sda6
Volumegroup"vg0"successfullycreated
[root@saniscsi]#vgscan
Readingallphysicalvolumes.Thismaytakeawhile...
Foundvolumegroup"vg0"usingmetadatatypelvm2
Device'/dev/sda6'hasbeenleftopen.
Device'/dev/sda5'hasbeenleftopen.
[root@saniscsi]#vgdisplay
---Volumegroup---
VGNamevg0
SystemID
Formatlvm2
MetadataAreas2
MetadataSequenceNo1
VGAccessread/write
VGStatusresizable
MAXLV0
CurLV0
OpenLV0
MaxPV0
CurPV2
ActPV2
VGSize200.00MB
PESize4.00MB/*分配的块的大小默认为4M*/
TotalPE50
AllocPE/Size0/0
FreePE/Size50/200.00MB
VGUUIDiE7uoy-boR3-N6Cv-91Gf-G5vE-ftD6-gSGVlB
5.3在VG中删除与添加PV
[root@saniscsi]#vgreducevg0/dev/sda5
Removed"/dev/sda5"fromvolumegroup"vg0"
[root@saniscsi]#vgextendvg0/dev/sda5
Volumegroup"vg0"successfullyextended
5.4PE和LV大小的关系和限制
InordertolimittheLinuxkernelmemoryusage,thereisalimitof65,536physicalextents(PE)perlogicalvolume(LV).Hence,theLVMPEsizewilldirectlydeterminethemaximumsizeofalogicalvolume(LV)!
Forexample,4MBPEsize(thedefaultPEsize)willlimitsinglelogicalvolume(LV)to256GB,16MBPEsizewilllimitsingleLVtogrowbeyond1TB,etc.
BesidethePEsize,themaximumsizeofsingleLVisalsolimitedbyCPUarchitectureandLinuxkernelversion:
Linuxkernelversion2.4.xlimitthemaximumLVsizeto2TB.
SomeolderLinuxkernelpriorto2.4.x,themaximumLVsizeislimitedto1TB(causedbytheintegersignednessproblemsintheblocklayer).
Thecombinationof32-bitCPUandLinuxkernelversion2.6.x,thelimitoflogicalvolumesizeismaximizedat16TB.
ForLinuxkernel2.6.xrunningon64-bitCPU,themaximumLVsizeis8EB(extremelyterriblebigstorageforthistimebeing!
)
from:
这段问题里有如下2个重点信息:
1.PE的大小决定LV的容量,默认4M的PE最大支持的256G的LV。
16M的PE最大支持1TB的LV。
2.影响LV容量的还有CPU架构。
对于32bit下,Linux内核为2.6.X的支持16TB,64bit下,Linux内核为2.6.x的支持8EB。
所以如果要想支持大量的LV。
那么对在创建LV的时候,还需要指定PE的大小。
这个我们在vgcreate命令中加一个-s参数即可:
[root@saniscsi]#vgremovevg0
Volumegroup"vg0"successfullyremoved
[root@saniscsi]#vgcreate-s16MBvg0/dev/sda5/dev/sda6
Volumegroup"vg0"successfullycreated
[root@saniscsi]#vgscan
Readingallphysicalvolumes.Thismaytakeawhile...
Foundvolumegroup"vg0"usingmetadatatypelvm2
Device'/dev/sda6'hasbeenleftopen.
Device'/dev/sda5'hasbeenleftopen.
[root@saniscsi]#vgdisplay
---Volumegroup---
VGNamevg0
SystemID
Formatlvm2
MetadataAreas2
MetadataSequenceNo1
VGAccessread/write
VGStatusresizable
MAXLV0
CurLV0
OpenLV0
MaxPV0
CurPV2
ActPV2
VGSize192.00MB
PESize16.00MB-这里我们看到PE改成16MB了
TotalPE12
AllocPE/Size0/0
FreePE/Size12/192.00MB
VGUUIDA9w4ho-3Fdo-ELYl-VRqY-yhaZ-61rt-68sXsi
6创建逻辑卷LV
6.1相关命令
lvcreate
lvscan
lvdisplay
lvextend
lvreduce
lvremove
lvresize
6.2创建逻辑卷LV
[root@saniscsi]#lvcreate-L184M-ndatevg0
Roundingupsizetofullphysicalextent192.00MB
Logicalvolume"date"created
[root@saniscsi]#lvscan
ACTIVE'/dev/vg0/date'[192.00MB]inherit
[root@saniscsi]#lvdisplay
---Logicalvolume---
LVName/dev/vg0/date
VGNamevg0
LVUUIDPAyJph-B9K2-P15u-Zkl3-pBxs-e0TG-DCuRzq
LVWriteAccessread/write
LVStatusavailable
#open0
LVSize192.00MB
CurrentLE12--注12*16MB=192MB,和之前的PE是1:
1
Segments2
Allocationinherit
Readaheadsectorsauto
-currentlysetto256
Blockdevice253:
0
7挂载逻辑卷LV
7.1LV的格式化
[root@sanvg0]#mkfs.ext3/dev/vg0/date
mke2fs1.40.8(13-Mar-2008)
Filesystemlabel=
OStype:
Linux
Blocksize=1024(log=0)
Fragmentsize=1024(log=0)
49152inodes,196608blocks
9830blocks(5.00%)reservedforthesuperuser
Firstdatablock=1
Maximumfilesystemblocks=67371008
24blockgroups
8192blockspergroup,8192fragmentspergroup
2048inodespergroup
Superblockbackupsstoredonblocks:
8193,24577,40961,57345,73729
Writinginodetables:
done
Creatingjournal(4096blocks):
done
Writingsuperblocksandfilesystemaccountinginformation:
done
Thisfilesystemwillbeautomaticallycheckedevery23mountsor180days,whichevercomesfirst.Usetune2fs-cor-itooverride.
[root@sanvg0]#mkdir-p/u01/backup
[root@sanvg0]#mount/dev/vg0/date/u01/backup
[root@sanvg0]#df-T
FilesystemType1K-blocksUsedAvailableUse%Mountedon
/dev/sda1ext31984016651076123052835%/
tmpfstmpfs34901603490160%/dev/shm
/dev/mapper/vg0-dateext319040356641749094%/u01/backup
挂载成功之后,就可以使用了
8LVM的删除方法和过程
VM卸载的方法与分区的删除方法类似,就是最后创建的最先删除,顺序如下:
先删除LV
再删除VG
最后PV
以前的LVM的分区应用fdisk转换成其它类型的文件系统,当普通分区使用
8.1umount取消挂载
[root@sanvg0]#umount/dev/vg0/date
[root@sanvg0]#df-T
FilesystemType1K-blocksUsedAvailableUse%Mountedon
/dev/sda1ext31984016651148123045635%/
tmpfstmpfs34901603490160%/dev/shm
8.2删除LV逻辑卷
[root@sanvg0]#lvremove/dev/vg0/date
Doyoureallywanttoremoveactivelogicalvolume"date"?
[y/n]:
y
Logicalvolume"date"successfullyremoved
8.3删除VG卷组
[root@sanvg0]#vgchange-anvg0
0logicalvolume(s)involumegroup"vg0"nowactive
[root@sanvg0]#vgremovevg0
Volumegroup"vg0"successfullyremoved
对vgchange命令的说明,先看帮助:
[root@sanvg0]#vgchange--help
vgchange:
Changevolumegroupattributes
vgchange
[-A|--autobackup{y|n}]
[--allocAllocationPolicy]
[-P|--partial]
[-d|--debug]
[-h|--help]
[--ignorelockingfailure]
[--ignoremonitoring]
[--monitor{y|n}]
[-t|--test]
[-u|--uuid]
[-v|--verbose]
[--version]
{-a|--available[e|l]{y|n}|-这个是我们使用的参数,表示状态可用不可用,有两个值:
y和n
-c|--clustered{y|n}|
-x|--resizeable{y|n}|
-l|--logicalvolumeMaxLogicalVolumes|
-p|--maxphysicalvolumesMaxPhysicalVolumes|
-s|--physicalextentsizePhysicalExtentSize[kKmMgGtTpPeE]|
--addtagTag|
--deltagTag}
[VolumeGroupName...]
8.4删除PV
[root@sanvg0]#pvscan
PV/dev/sda5lvm2[101.94MB]
PV/dev/sda6lvm2[101.94MB]
PV/dev/sda7lvm2[101.94MB]
Total:
3[305.83MB]/inuse:
0[0]/innoVG:
3[305.83MB]
[root@sanvg0]#pvremove/dev/sda5/dev/sda6/dev/sda7
Labelsonphysicalvolume"/dev/sda5"successfullywiped
Labelsonphysicalvolume"/dev/sda6"successfullywiped
Labelsonphysicalvolume