LVM 详解推荐

内容:(会在后期继续整理扩充该部分内容;欢迎探讨)

1. LVM基本创建及管理

2. LVM快照

3. LVM与RAID的结合使用:基于RAID的LVM

LVM创建:

描述: LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性. 通过创建LVM,我们可以更轻松的管理磁盘分区,将若干个不同大小的不同形式的磁盘整合为一个整块的卷组,然后在卷组上随意的创建逻辑卷,既避免了大量不同规格硬盘的管理难题,也使逻辑卷容量的扩充缩减不再受限于磁盘规格;并且LVM的snapshot(快照)功能给数据的物理备份提供了便捷可靠的方式;创建LVM过程;(如图)1. 在物理设备上创建物理分区,每个物理分区称为一个PE2. 使用fdisk工具创建物理分区卷标(修改为8e),形成PV(Physical Volume 物理卷)3. 使用vgcreate 将多个PV添加到一个VG(Volume Group 卷组)中,此时VG成为一个大磁盘;4. 在VG大磁盘上划分LV(Logical Volume 逻辑卷),将逻辑卷格式化后即可挂载使用;

各阶段可用的命令工具:(详细选项信息请be a man)

1. 创建PV

DeviceBootStartEndBlocksIdSystem/dev/sdb1160948917618eLinuxLVM/dev/sdc1160948917618eLinuxLVM/dev/sdd1160948917618eLinuxLVM[root@bogon~]#pvcreate/dev/sd[bcd]1Physicalvolume /dev/sdb1 successfullycreatedPhysicalvolume /dev/sdc1 successfullycreatedPhysicalvolume /dev/sdd1 successfullycreated

查看PV信息:

[root@bogon~]#pvdisplay---Physicalvolume---PVName/dev/sda2VGNamevol0PVSize40.00GB/notusable2.61MBAllocatableyesPESize(KByte)32768TotalPE1280FreePE281AllocatedPE999PVUUIDGxfWc2-hzKw-tP1E-8cSU-kkqY-z15Z-11Gacd /dev/sdb1 isanewphysicalvolumeof 4.67GB ---NEWPhysicalvolume---PVName/dev/sdb1VGNamePVSize4.67GBAllocatableNOPESize(KByte)0TotalPE0FreePE0AllocatedPE0PVUUID1rrc9i-05Om-Wzd6-dM9G-bo08-2oJj-WjRjLg /dev/sdc1 isanewphysicalvolumeof 4.67GB ---NEWPhysicalvolume---PVName/dev/sdc1VGNamePVSize4.67GBAllocatableNOPESize(KByte)0TotalPE0FreePE0AllocatedPE0PVUUIDRCGft6-l7tj-vuBX-bnds-xbLn-PE32-mCSeE8 /dev/sdd1 isanewphysicalvolumeof 4.67GB ---NEWPhysicalvolume---PVName/dev/sdd1VGNamePVSize4.67GBAllocatableNOPESize(KByte)0TotalPE0FreePE0AllocatedPE0PVUUIDSLiAAp-43zX-6BC8-wVzP-6vQu-uyYF-ugdWbD

2. 创建VG

[[root@bogon~]#vgcreatemyvg-s16M/dev/sd[bcd]1Volumegroup myvg successfullycreated##-s在创建时指定PE块的大小,默认是4M。查看系统上VG状态[root@bogon~]#vgdisplay---Volumegroup---VGNamemyvgSystemIDFormatlvm2MetadataAreas3MetadataSequenceNo1VGAccessread/writeVGStatusresizableMAXLV0CurLV0OpenLV0MaxPV0CurPV3ActPV3VGSize13.97GB##VG总大小PESize16.00MB ##默认的PE块大小是4MTotalPE894##总PE块数AllocPE/Size0/0 ##已经使用的PE块数目FreePE/Size894/13.97GB##可用的PE数目及磁盘大小VGUUIDRJC6Z1-N2Jx-2Zjz-26m6-LLoB-PcWQ-FXx3lV

3. 在VG中划分出LV:

[root@bogon~]#lvcreate-L256M-ndata1myvgLogicalvolume data1 created## -L指定LV大小## -n指定lv卷名称[root@bogon~]#lvcreate-l20-ntestmyvgLogicalvolume test created## -l指定LV大小占用多少个PE块;上面大小为:20*16M=320M[root@bogon~]#lvdisplay---Logicalvolume---LVName/dev/myvg/dataVGNamemyvgLVUUIDd0SYy1-DQ9T-Sj0R-uPeD-xn0z-raDU-g9lLeKLVWriteAccessread/writeLVStatusavailable#open0LVSize256.00MBCurrentLE16Segments1AllocationinheritReadaheadsectorsauto-currentlysetto256Blockdevice253:2---Logicalvolume---LVName/dev/myvg/testVGNamemyvgLVUUIDos4UiH-5QAG-HqOJ-DoNT-mVeT-oYyy-s1xArVLVWriteAccessread/writeLVStatusavailable#open0LVSize320.00MBCurrentLE20Segments1AllocationinheritReadaheadsectorsauto-currentlysetto256Blockdevice253:3

4. 然后就可以格式化LV,挂载使用:

[root@bogon~]#mkfs-text3-b2048-LDATA/dev/myvg/data[root@bogon~]#mount/dev/myvg/data/data/## 拷贝进去一些文件,测试后面在线扩展及缩减效果:[root@bogondata]#cp/etc/* /data/

5. 扩大LV容量:(2.6kernel+ext3filesystem) lvextend命令可以增长逻辑卷 resize2fs可以增长filesystem在线或非在线 (我的系统内核2.6.18,ext3文件系统,查man文档,现在只有2.6的内核+ext3文件系统才可以在线增容量) 首先逻辑扩展:

[root@bogondata]#lvextend-L500M/dev/myvg/dataRoundingupsizetofullphysicalextent512.00MBExtendinglogicalvolumedatato512.00MBLogicalvolumedatasuccessfullyresized##-L500M:指扩展到500M,系统此时会找最近的柱面进行匹配;##-L+500M:值在原有大小的基础上扩大500M;##-l[+]50类似上面,但是以Pe块为单位进行扩展;

然后文件系统物理扩展:

[root@bogondata]#resize2fs-p/dev/myvg/dataresize2fs1.39(29-May-2006)Filesystemat/dev/myvg/dataismountedon/data;on-lineresizingrequiredPerforminganon-lineresizeof/dev/myvg/datato262144(2k)blocks.Thefilesystemon/dev/myvg/dataisnow262144blockslong.##据上面信息,系统自动识别并进行了在线扩展;查看状态:[root@bogon~]#lvdisplay---Logicalvolume---LVName/dev/myvg/dataVGNamemyvgLVUUIDd0SYy1-DQ9T-Sj0R-uPeD-xn0z-raDU-g9lLeKLVWriteAccessread/writeLVStatusavailable#open1LVSize512.00MBCurrentLE32Segments1AllocationinheritReadaheadsectorsauto-currentlysetto256Blockdevice253:2##此时查看挂载目录,文件应该完好;

6. 缩减LV容量: 缩减容量是一件危险的操作;缩减必须在离线状态下执行;并且必须先强制检查文件系统错误,防止缩减过程损坏数据;

[root@bogon~]#umount/dev/myvg/data[root@bogon~]#e2fsck-f/dev/myvg/datae2fsck1.39(29-May-2006)Pass1:Checkinginodes,blocks,andsizesPass2:CheckingdirectorystructurePass3:CheckingdirectoryconnectivityPass4:CheckingreferencecountsPass5:CheckinggroupsummaryinformationDATA:13/286720files(7.7%non-contiguous),23141/573440blocks

先缩减物理大小:

[root@bogon~]#resize2fs/dev/myvg/data256Mresize2fs1.39(29-May-2006)Resizingthefilesystemon/dev/myvg/datato131072(2k)blocks.Thefilesystemon/dev/myvg/dataisnow131072blockslong.

再缩减逻辑大小:

[root@bogon~]#lvreduce-L256M/dev/myvg/dataWARNING:Reducingactivelogicalvolumeto256.00MBTHISMAYDESTROYYOURDATA(filesystemetc.)Doyoureallywanttoreducedata?[y/n]:yReducinglogicalvolumedatato256.00MBLogicalvolumedatasuccessfullyresized

查看状态、重新挂载:

[root@bogon~]#lvdisplay---Logicalvolume---LVName/dev/myvg/dataVGNamemyvgLVUUIDd0SYy1-DQ9T-Sj0R-uPeD-xn0z-raDU-g9lLeKLVWriteAccessread/writeLVStatusavailable#open0LVSize256.00MBCurrentLE16Segments1AllocationinheritReadaheadsectorsauto-currentlysetto256Blockdevice253:2 重新挂载:[root@bogon~]#mount/dev/myvg/data/data/[root@bogondata]#df/data/Filesystem1K-blocksUsedAvailableUse%Mountedon/dev/mapper/myvg-data25390095082365284%/data

7. 扩展VG,向VG中添加一个PV:

[root@bogondata]#pvcreate/dev/sdc2Physicalvolume /dev/sdc2 successfullycreated[root@bogondata]#vgextendmyvg/dev/sdc2Volumegroup myvg successfullyextended[root@bogondata]#pvdisplay---Physicalvolume---PVName/dev/sdc2VGNamemyvgPVSize4.67GB/notusable9.14MBAllocatableyesPESize(KByte)16384TotalPE298FreePE298AllocatedPE0PVUUIDhrveTu-2JUH-aSgT-GKAJ-VVv2-Hit0-PyoOOr

8. 缩减VG,取出VG中的某个PV:

移除某个PV时,需要先转移该PV上数据到其他PV,然后再将该PV删除; 移出指定PV中的数据:

[root@bogondata]#pvmove/dev/sdc2Nodatatomoveformyvg##如果sdc2上面有数据,则会花一段时间移动,并且显示警告信息,再次确认后才会执行;##如上,提示该分区中没有数据; 

移除PV:

[root@bogondata]#vgreducemyvg/dev/sdc2Removed /dev/sdc2 fromvolumegroup myvg ##若发现LVM中磁盘工作不太正常,怀疑是某一块磁盘工作由问题后就可以用该方法移出问题盘##上数据,然后删掉问题盘;

LVM快照:描述:

在一个非常繁忙的服务器上,备份大量的数据时,需要停掉大量的服务,否则备份下来的数据极容易出现不一致状态,而使备份根本不能起效;这时快照就起作用了;原理: 逻辑卷快照实质是访问原始数据的另外一个路径而已;快照保存的是做快照那一刻的数据状态;做快照以后,任何对原始数据的修改,会在修改前拷贝一份到快照区域,所以通过快照查看到的数据永远是生成快照那一刻的数据状态;但是对于快照大小有限制,做快照前需要估算在一定时间内数据修改量大小,如果在创建快照期间数据修改量大于快照大小了,数据会溢出照成快照失效崩溃; 快照不是永久的。如果你卸下LVM或重启,它们就丢失了,需要重新创建。创建快照:

[root@bogon~]#lvcreate-L500M-pr-s-ndatasnap/dev/myvg/dataRoundingupsizetofullphysicalextent512.00MBLogicalvolume datasnap created##-L l设置大小##-p:permission,设置生成快照的读写权限,默认为RW;r为只读##-s指定lvcreate生成的是一个快照##-n指定快照名称挂载快照到指定位置:[root@bogon~]#mount/dev/myvg/datasnap/backup/mount:blockdevice/dev/myvg/datasnapiswrite-protected,mountingread-only然后备份出快照中文件即可,备份后及时删除快照:[root@bogon~]#ls/backup/inittablost+found

基于RAID的LVM的建立:

描述:

基于RAID的LVM,可以在底层实现RAID对数据的冗余或是提高读写性能的基础上,可以在上层实现LVM的可以灵活管理磁盘的功能;

如图:

建立过程:

1. 建立LinuxRAID形式的分区:

DeviceBootStartEndBlocksIdSystem/dev/sdb1162497983+fdLinuxraidautodetect/dev/sdc1162497983+fdLinuxraidautodetect/dev/sdd1162497983+fdLinuxraidautodetect/dev/sde1162497983+fdLinuxraidautodetect

2. 创建RAID-5:

[root@nod1~]#mdadm-C/dev/md0-ayes-l5-n3-x1/dev/sd{b,c,d,e}1mdadm:array/dev/md0started.#RAID-5有一个spare盘,三个活动盘。#查看状态,发现跟创建要求一致,且创建正在进行中:[root@nod1~]#cat/proc/mdstatPersonalities:[raid6][raid5][raid4]md0:activeraid5sdd1[4]sde1[3](S)sdc1[1]sdb1[0]995712blockslevel5,64kchunk,algorithm2[3/2][UU_][======= .............]recovery=36.9%(184580/497856)finish=0.2minspeed=18458K/secunuseddevices: none # 查看RAID详细信息:[root@nod1~]#mdadm-D/dev/md0/dev/md0:Version:0.90CreationTime:WedApr604:27:462011RaidLevel:raid5ArraySize:995712(972.54MiB1019.61MB)UsedDevSize:497856(486.27MiB509.80MB)RaidDevices:3TotalDevices:4PreferredMinor:0Persistence:SuperblockispersistentUpdateTime:WedApr604:36:082011State:cleanActiveDevices:3WorkingDevices:4FailedDevices:0SpareDevices:1Layout:left-symmetricChunkSize:64KUUID:5663fc8e:68f539ee:3a4040d6:ccdac92aEvents:0.4NumberMajorMinorRaidDeviceState08170activesync/dev/sdb118331activesync/dev/sdc128492activesync/dev/sdd13865-spare/dev/sde1

3. 建立RAID配置文件:

[root@nod1~]#mdadm-Ds /etc/mdadm.conf[root@nod1~]#cat/etc/mdadm.conf ARRAY/dev/md0level=raid5num-devices=3metadata=0.90spares=1UUID=5663fc8e:68f539ee:3a4040d6:ccdac92a

4. 基于刚建立的RAID设备创建LVM:

#将md0创建成为PV(物理卷):[root@nod1~]#pvcreate/dev/md0Physicalvolume /dev/md0 successfullycreated#查看物理卷:[root@nod1~]#pvdisplay /dev/md0 isanewphysicalvolumeof 972.38MB ---NEWPhysicalvolume---PVName/dev/md0VGName#此时该PV不包含在任何VG中,故为空;PVSize972.38MBAllocatableNOPESize(KByte)0TotalPE0FreePE0AllocatedPE0PVUUIDPUb3uj-ObES-TXsM-2oMS-exps-LPXP-jD218u#创建VG[root@nod1~]#vgcreatemyvg-s32M/dev/md0Volumegroup myvg successfullycreated#查看VG状态:[root@nod1~]#vgdisplay---Volumegroup---VGNamemyvgSystemIDFormatlvm2MetadataAreas1MetadataSequenceNo1VGAccessread/writeVGStatusresizableMAXLV0CurLV0OpenLV0MaxPV0CurPV1ActPV1VGSize960.00MBPESize32.00MBTotalPE30AllocPE/Size0/0FreePE/Size30/960.00MBVGUUID9NKEWK-7jrv-zC2x-59xg-10Ai-qA1L-cfHXDj#创建LV:[root@nod1~]#lvcreate-L500M-nmydatamyvgRoundingupsizetofullphysicalextent512.00MBLogicalvolume mydata created#查看LV状态:[root@nod1~]#lvdisplay---Logicalvolume---LVName/dev/myvg/mydataVGNamemyvgLVUUIDKQQUJq-FU2C-E7lI-QJUp-xeVd-3OpA-TMgI1DLVWriteAccessread/writeLVStatusavailable#open0LVSize512.00MBCurrentLE16Segments1AllocationinheritReadaheadsectorsauto-currentlysetto512Blockdevice253:2


问题:(实验环境,很难做出判断,望有经验的多做指教) 在RAID上实现LVM后,不能再手动控制阵列的停止。 raid设备在建成以后,是不可以改变活动磁盘数目的。只能新增备份盘, 删除故障盘。故,若对存储需求估计失误,raid上层的LVM分区即使可以扩展, 但是仍可能无法满足存储需求; 如果整个raid不能满足容量需求,在试验中是可以实现将两个RAID同时加入 一个VG,从而实现RAID间的无缝衔接~但是这样做在实际生产中效果怎么样?是 否会因为架构太复杂造成系统负过大,或是对拖慢I/O响应速度?!这仍旧是个问 题; 基于RAID之上的LVM,若划分多个LV,多个LV之间的数据分布情况怎么样?! 会不会拖慢RAID本来带来的性能提升? RAID间的无缝衔接示意图:







明天的希望,让我们忘了今天的痛苦

LVM 详解推荐

相关文章:

你感兴趣的文章:

标签云: