Linux磁盘管理之LVM的使用
一、LVM介绍
在我们管理Linux磁盘的时候,通常会遇到这么一种情况。在最初规划Linux的磁盘的时候,我们给某个分区划分了一定量的磁盘空间,使用一段时间后,发现我们规划的磁盘空间不足了,这个时候怎么办?我们肯定要想办法给扩容呀,找一块磁盘分区,格式化,然后挂载,然后把数据拷贝到新加的磁盘上,然后把原有的磁盘卸载掉,通常我们是这样做的。这样一来虽然达到了扩容的目的,但是费时费力;如果第二次扩容,空间还是不够,我们又要重复上面的步骤;如果分配的磁盘空间过大,使用了很久才发现它根本用不到那么多空间,这个时候是不是又要调整呀,听着就感觉很繁琐。这时候你肯定要想有没有那种可挂载上一块盘,我们利用某种管理手段,可以在线的调整磁盘的空间,这样有节约了时间,也可实现弹性管理磁盘。对,lvm就有这样的功能。
LVM(logicalvolumemanager)逻辑卷管理,它可以弹性的管理文件系统的容量,LVM的工作原理是将一个或多个底层块设备组织成一个逻辑设备,这个逻辑设备可以在未来新增或移除其他的分区到这个逻辑设备中,从而实现了弹性管理磁盘。
PV:物理卷(physicalvolume);物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如raid),是LVM的基本储存逻辑块,但和基本的物理存储介质(如分区,磁盘等)比较,却包含有与LVM相关的管理参数
VG:卷组(volumegroup)LVM卷组类似于非LVM系统中的物理硬盘,尤其物理卷组成,可以在卷组上创建一个或多个LVM分区(逻辑卷),LVM卷组由一个或多个物理卷组成
LV:逻辑卷(logicalvolume)LVM的逻辑卷类似非LVM系统中的硬盘分区,在逻辑卷之上可以创建文件系统。
LVM就是将一些零碎的磁盘分区(PV)合并成一个较大的磁盘(VG),然后在根据需要对这个较大的磁盘(VG)进行划分成不同的大小分区(LV),这些小的分区(LV)是可以动态的扩展和缩小的,这就是LVM的逻辑卷管理过程。所谓LVM的大磁盘就是将许多PV整合成的VG,那么这个大磁盘最大可达到多少容量呢?我们知道在文件系统里面数据存储的最小单位是块(block),不过在LVM当中数据储存的最小单位是PE,PE的的作用同block的作用一样,需要注意到是LVM默认使用的PE大小是4M,而LVM的VG最多能包含65534个PE,也就是说默认LVM的VG会有4×65534M/1024M=256G,所以PE的大小决定了VG的最大容量,当然我们在创建VG的时候可指定PE大小,从而来决定VG的大小。
二、LVM实现
1)前期准备几块硬盘或者分区来模拟PV
[root@test-centos7-node1~]#lsblk NAMEMAJ:MINRMSIZEROTYPEMOUNTPOINT sda8:0050G0disk ├─sda18:102G0part/boot ├─sda28:202G0part[SWAP] └─sda38:3046G0part/ sdb8:16050G0disk sr011:01792M0rom [root@test-centos7-node1~]#fdisk/dev/sdb Welcometofdisk(util-linux2.23.2). Changeswillremaininmemoryonly,untilyoudecidetowritethem. Becarefulbeforeusingthewritecommand. Devicedoesnotcontainarecognizedpartitiontable BuildinganewDOSdisklabelwithdiskidentifier0x6180123f. Command(mforhelp):p Disk/dev/sdb:53.7GB,53687091200bytes,104857600sectors Units=sectorsof1*512=512bytes Sectorsize(logical/physical):512bytes/512bytes I/Osize(minimum/optimal):512bytes/512bytes Disklabeltype:dos Diskidentifier:0x6180123f DeviceBootStartEndBlocksIdSystem Command(mforhelp):n Partitiontype: pprimary(0primary,0extended,4free) eextended Select(defaultp):p Partitionnumber(1-4,default1): Firstsector(2048-104857599,default2048): Usingdefaultvalue2048 Lastsector,+sectorsor+size{K,M,G}(2048-104857599,default104857599):+10G Partition1oftypeLinuxandofsize10GiBisset Command(mforhelp):p Disk/dev/sdb:53.7GB,53687091200bytes,104857600sectors Units=sectorsof1*512=512bytes Sectorsize(logical/physical):512bytes/512bytes I/Osize(minimum/optimal):512bytes/512bytes Disklabeltype:dos Diskidentifier:0x6180123f DeviceBootStartEndBlocksIdSystem /dev/sdb12048209735671048576083Linux Command(mforhelp):t Selectedpartition1 Hexcode(typeLtolistallcodes):8e Changedtypeofpartition'Linux'to'LinuxLVM' Command(mforhelp):n Partitiontype: pprimary(1primary,0extended,3free) eextended Select(defaultp):p Partitionnumber(2-4,default2): Firstsector(20973568-104857599,default20973568): Usingdefaultvalue20973568 Lastsector,+sectorsor+size{K,M,G}(20973568-104857599,default104857599):+10G Partition2oftypeLinuxandofsize10GiBisset Command(mforhelp):t Partitionnumber(1,2,default2): Hexcode(typeLtolistallcodes):8e Changedtypeofpartition'Linux'to'LinuxLVM' Command(mforhelp):n Partitiontype: pprimary(2primary,0extended,2free) eextended Select(defaultp):p Partitionnumber(3,4,default3): Firstsector(41945088-104857599,default41945088): Usingdefaultvalue41945088 Lastsector,+sectorsor+size{K,M,G}(41945088-104857599,default104857599):+10G Partition3oftypeLinuxandofsize10GiBisset Command(mforhelp):t Partitionnumber(1-3,default3): Hexcode(typeLtolistallcodes):8e Changedtypeofpartition'Linux'to'LinuxLVM' Command(mforhelp):p Disk/dev/sdb:53.7GB,53687091200bytes,104857600sectors Units=sectorsof1*512=512bytes Sectorsize(logical/physical):512bytes/512bytes I/Osize(minimum/optimal):512bytes/512bytes Disklabeltype:dos Diskidentifier:0x6180123f DeviceBootStartEndBlocksIdSystem /dev/sdb1204820973567104857608eLinuxLVM /dev/sdb22097356841945087104857608eLinuxLVM /dev/sdb34194508862916607104857608eLinuxLVM Command(mforhelp):w Thepartitiontablehasbeenaltered! Callingioctl()tore-readpartitiontable. Syncingdisks. [root@test-centos7-node1~]#lsblk NAMEMAJ:MINRMSIZEROTYPEMOUNTPOINT sda8:0050G0disk ├─sda18:102G0part/boot ├─sda28:202G0part[SWAP] └─sda38:3046G0part/ sdb8:16050G0disk ├─sdb18:17010G0part ├─sdb28:18010G0part └─sdb38:19010G0part sr011:01792M0rom [root@test-centos7-node1~]#
说明:这里是用的分区来模拟硬盘当作PV,这里需要注意一点,就是我们分区完保存后,可能存在不同不到问题,就是我们分区完用lsblk看不到分区,可用partprobe来同步分区信息。centos6使用partx -a/dev/sdb来增加分区同步到内存,如果是删除某个分区,就需要执行partx-d-nr#/dev/sdb 此命令表示从/dev/sdb的分区信息中删除sdb#分区信息,并同步到内存中。这里还需要注意一点的是我们分区的类型要选8e表示LinuxLVM
2)装lvm2这个包
[root@test-centos7-node1~]#lvs -bash:lvs:commandnotfound [root@test-centos7-node1~]#yuminfolvm2 Loadedplugins:fastestmirror Loadingmirrorspeedsfromcachedhostfile *base:mirrors.aliyun.com *extras:mirrors.aliyun.com *updates:mirrors.aliyun.com AvailablePackages Name:lvm2 Arch:x86_64 Epoch:7 Version:2.02.185 Release:2.el7_7.2 Size:1.3M Repo:updates/7/x86_64 Summary:Userlandlogicalvolumemanagementtools URL:http://sources.redhat.com/lvm2 License:GPLv2 Description:LVM2includesallofthesupportforhandlingread/writeoperationson :physicalvolumes(harddisks,RAID-Systems,magnetooptical,etc., :multipledevices(MD),seemdadm(8)orevenloopdevices,see :losetup(8)),creatingvolumegroups(kindofvirtualdisks)fromone :ormorephysicalvolumesandcreatingoneormorelogicalvolumes :(kindoflogicalpartitions)involumegroups. [root@test-centos7-node1~]#yuminstalllvm2-y Loadedplugins:fastestmirror Loadingmirrorspeedsfromcachedhostfile *base:mirrors.aliyun.com *extras:mirrors.aliyun.com *updates:mirrors.aliyun.com ResolvingDependencies -->Runningtransactioncheck --->Packagelvm2.x86_647:2.02.185-2.el7_7.2willbeinstalled -->ProcessingDependency:lvm2-libs=7:2.02.185-2.el7_7.2forpackage:7:lvm2-2.02.185-2.el7_7.2.x86_64 -->ProcessingDependency:device-mapper-persistent-data>=0.7.0-0.1.rc6forpackage:7:lvm2-2.02.185-2.el7_7.2.x86_64 -->ProcessingDependency:liblvm2app.so.2.2(Base)(64bit)forpackage:7:lvm2-2.02.185-2.el7_7.2.x86_64 -->ProcessingDependency:libdevmapper.so.1.02(DM_1_02_141)(64bit)forpackage:7:lvm2-2.02.185-2.el7_7.2.x86_64 -->ProcessingDependency:libdevmapper-event.so.1.02(Base)(64bit)forpackage:7:lvm2-2.02.185-2.el7_7.2.x86_64 -->ProcessingDependency:liblvm2app.so.2.2()(64bit)forpackage:7:lvm2-2.02.185-2.el7_7.2.x86_64 -->ProcessingDependency:libdevmapper-event.so.1.02()(64bit)forpackage:7:lvm2-2.02.185-2.el7_7.2.x86_64 -->Runningtransactioncheck --->Packagedevice-mapper-event-libs.x86_647:1.02.158-2.el7_7.2willbeinstalled --->Packagedevice-mapper-libs.x86_647:1.02.140-8.el7willbeupdated -->ProcessingDependency:device-mapper-libs=7:1.02.140-8.el7forpackage:7:device-mapper-1.02.140-8.el7.x86_64 --->Packagedevice-mapper-libs.x86_647:1.02.158-2.el7_7.2willbeanupdate --->Packagedevice-mapper-persistent-data.x86_640:0.8.5-1.el7willbeinstalled --->Packagelvm2-libs.x86_647:2.02.185-2.el7_7.2willbeinstalled -->ProcessingDependency:device-mapper-event=7:1.02.158-2.el7_7.2forpackage:7:lvm2-libs-2.02.185-2.el7_7.2.x86_64 -->Runningtransactioncheck --->Packagedevice-mapper.x86_647:1.02.140-8.el7willbeupdated --->Packagedevice-mapper.x86_647:1.02.158-2.el7_7.2willbeanupdate --->Packagedevice-mapper-event.x86_647:1.02.158-2.el7_7.2willbeinstalled -->FinishedDependencyResolution DependenciesResolved ============================================================================================================================ PackageArchVersionRepositorySize ============================================================================================================================ Installing: lvm2x86_647:2.02.185-2.el7_7.2updates1.3M Installingfordependencies: device-mapper-eventx86_647:1.02.158-2.el7_7.2updates190k device-mapper-event-libsx86_647:1.02.158-2.el7_7.2updates189k device-mapper-persistent-datax86_640.8.5-1.el7base423k lvm2-libsx86_647:2.02.185-2.el7_7.2updates1.1M Updatingfordependencies: device-mapperx86_647:1.02.158-2.el7_7.2updates294k device-mapper-libsx86_647:1.02.158-2.el7_7.2updates322k TransactionSummary ============================================================================================================================ Install1Package(+4Dependentpackages) Upgrade(2Dependentpackages) Totaldownloadsize:3.8M Downloadingpackages: DeltaRPMsdisabledbecause/usr/bin/applydeltarpmnotinstalled. (1/7):device-mapper-event-1.02.158-2.el7_7.2.x86_64.rpm|190kB00:00:00 (2/7):device-mapper-event-libs-1.02.158-2.el7_7.2.x86_64.rpm|189kB00:00:00 (3/7):device-mapper-libs-1.02.158-2.el7_7.2.x86_64.rpm|322kB00:00:00 (4/7):lvm2-2.02.185-2.el7_7.2.x86_64.rpm|1.3MB00:00:00 (5/7):device-mapper-1.02.158-2.el7_7.2.x86_64.rpm|294kB00:00:00 (6/7):lvm2-libs-2.02.185-2.el7_7.2.x86_64.rpm|1.1MB00:00:00 (7/7):device-mapper-persistent-data-0.8.5-1.el7.x86_64.rpm|423kB00:00:00 ---------------------------------------------------------------------------------------------------------------------------- Total4.3MB/s|3.8MB00:00:00 Runningtransactioncheck Runningtransactiontest Transactiontestsucceeded Runningtransaction Updating:7:device-mapper-1.02.158-2.el7_7.2.x86_641/9 Updating:7:device-mapper-libs-1.02.158-2.el7_7.2.x86_642/9 Installing:7:device-mapper-event-libs-1.02.158-2.el7_7.2.x86_643/9 Installing:7:device-mapper-event-1.02.158-2.el7_7.2.x86_644/9 Installing:7:lvm2-libs-2.02.185-2.el7_7.2.x86_645/9 Installing:device-mapper-persistent-data-0.8.5-1.el7.x86_646/9 Installing:7:lvm2-2.02.185-2.el7_7.2.x86_647/9 Createdsymlinkfrom/etc/systemd/system/sysinit.target.wants/lvm2-lvmpolld.socketto/usr/lib/systemd/system/lvm2-lvmpolld.socket. Cleanup:7:device-mapper-1.02.140-8.el7.x86_648/9 Cleanup:7:device-mapper-libs-1.02.140-8.el7.x86_649/9 Verifying:7:device-mapper-libs-1.02.158-2.el7_7.2.x86_641/9 Verifying:7:device-mapper-1.02.158-2.el7_7.2.x86_642/9 Verifying:device-mapper-persistent-data-0.8.5-1.el7.x86_643/9 Verifying:7:lvm2-2.02.185-2.el7_7.2.x86_644/9 Verifying:7:lvm2-libs-2.02.185-2.el7_7.2.x86_645/9 Verifying:7:device-mapper-event-1.02.158-2.el7_7.2.x86_646/9 Verifying:7:device-mapper-event-libs-1.02.158-2.el7_7.2.x86_647/9 Verifying:7:device-mapper-1.02.140-8.el7.x86_648/9 Verifying:7:device-mapper-libs-1.02.140-8.el7.x86_649/9 Installed: lvm2.x86_647:2.02.185-2.el7_7.2 DependencyInstalled: device-mapper-event.x86_647:1.02.158-2.el7_7.2device-mapper-event-libs.x86_647:1.02.158-2.el7_7.2 device-mapper-persistent-data.x86_640:0.8.5-1.el7lvm2-libs.x86_647:2.02.185-2.el7_7.2 DependencyUpdated: device-mapper.x86_647:1.02.158-2.el7_7.2device-mapper-libs.x86_647:1.02.158-2.el7_7.2 Complete! [root@test-centos7-node1~]#
说明:最小化安装系统默认系统上没有安装这个包的,所以我们需要把这个包装上才可创建LVM
3)创建PV
[root@test-centos7-node1~]#pvcreate/dev/sdb{1,2,3} Physicalvolume"/dev/sdb1"successfullycreated. Physicalvolume"/dev/sdb2"successfullycreated. Physicalvolume"/dev/sdb3"successfullycreated. [root@test-centos7-node1~]#pvscan PV/dev/sdb1lvm2[10.00GiB] PV/dev/sdb3lvm2[10.00GiB] PV/dev/sdb2lvm2[10.00GiB] Total:3[30.00GiB]/inuse:0[0]/innoVG:3[30.00GiB] [root@test-centos7-node1~]#pvs PVVGFmtAttrPSizePFree /dev/sdb1lvm2---10.00g10.00g /dev/sdb2lvm2---10.00g10.00g /dev/sdb3lvm2---10.00g10.00g [root@test-centos7-node1~]#pvdisplay "/dev/sdb1"isanewphysicalvolumeof"10.00GiB" ---NEWPhysicalvolume--- PVName/dev/sdb1 VGName PVSize10.00GiB AllocatableNO PESize0 TotalPE0 FreePE0 AllocatedPE0 PVUUIDMsszES-YPdm-YGQl-7rgg-B6gX-Q4xu-T8m1gz "/dev/sdb3"isanewphysicalvolumeof"10.00GiB" ---NEWPhysicalvolume--- PVName/dev/sdb3 VGName PVSize10.00GiB AllocatableNO PESize0 TotalPE0 FreePE0 AllocatedPE0 PVUUIDBMMx8p-zu9O-ns61-G9DU-iKMR-NmZO-crCjlR "/dev/sdb2"isanewphysicalvolumeof"10.00GiB" ---NEWPhysicalvolume--- PVName/dev/sdb2 VGName PVSize10.00GiB AllocatableNO PESize0 TotalPE0 FreePE0 AllocatedPE0 PVUUIDLPynpW-twlu-fxwg-OlCT-jA2A-R5UI-fvqWLj [root@test-centos7-node1~]#
说明:pvcreate命令表示创建PV后面跟硬盘或分区对应的设备文件,pvscan命令作用是搜索系统里面任何具有PV属性的磁碟,PV属性就是通过pvcreate创建过的磁碟,pvs是查看pv简要情况,pvdisplay查看pv的详细信息。当然我们要移除某块盘,让其不具备PV属性,可以用pvremove+磁盘的设备文件路径
[root@test-centos7-node1~]#pvremove/dev/sdb3 Labelsonphysicalvolume"/dev/sdb3"successfullywiped. [root@test-centos7-node1~]#pvs PVVGFmtAttrPSizePFree /dev/sdb1lvm2---10.00g10.00g /dev/sdb2lvm2---10.00g10.00g [root@test-centos7-node1~]#
说明:移除pv的前提是它没有在任何VG里面才可做移除,否则移除不了
4)创建VG
[root@test-centos7-node1~]#pvs PVVGFmtAttrPSizePFree /dev/sdb1lvm2---10.00g10.00g /dev/sdb2lvm2---10.00g10.00g [root@test-centos7-node1~]#pvcreate/dev/sdb3 Physicalvolume"/dev/sdb3"successfullycreated. [root@test-centos7-node1~]#pvs PVVGFmtAttrPSizePFree /dev/sdb1lvm2---10.00g10.00g /dev/sdb2lvm2---10.00g10.00g /dev/sdb3lvm2---10.00g10.00g [root@test-centos7-node1~]#vgcreatetest-s8M/dev/sdb{1,2,3} Volumegroup"test"successfullycreated [root@test-centos7-node1~]#vgs VG#PV#LV#SNAttrVSizeVFree test300wz--n-<29.98g<29.98g [root@test-centos7-node1~]#vgscan Readingvolumegroupsfromcache. Foundvolumegroup"test"usingmetadatatypelvm2 [root@test-centos7-node1~]#vgdisplay ---Volumegroup--- VGNametest SystemID Formatlvm2 MetadataAreas3 MetadataSequenceNo1 VGAccessread/write VGStatusresizable MAXLV0 CurLV0 OpenLV0 MaxPV0 CurPV3 ActPV3 VGSize<29.98GiB PESize8.00MiB TotalPE3837 AllocPE/Size0/0 FreePE/Size3837/<29.98GiB VGUUID31vxAP-L5jb-8Yxm-25m2-LdD0-ee8R-sdTjum [root@test-centos7-node1~]#vgreducetest/dev/sdb3 Removed"/dev/sdb3"fromvolumegroup"test" [root@test-centos7-node1~]#vgs VG#PV#LV#SNAttrVSizeVFree test200wz--n-19.98g19.98g [root@test-centos7-node1~]#vgcreatetest2/dev/sdb3 Volumegroup"test2"successfullycreated [root@test-centos7-node1~]#vgs VG#PV#LV#SNAttrVSizeVFree test200wz--n-19.98g19.98g test2100wz--n-<10.00g<10.00g [root@test-centos7-node1~]#vgdisplaytest2 ---Volumegroup--- VGNametest2 SystemID Formatlvm2 MetadataAreas1 MetadataSequenceNo1 VGAccessread/write VGStatusresizable MAXLV0 CurLV0 OpenLV0 MaxPV0 CurPV1 ActPV1 VGSize<10.00GiB PESize4.00MiB TotalPE2559 AllocPE/Size0/0 FreePE/Size2559/<10.00GiB VGUUIDrc94SP-JAlk-63Rw-n5xz-qB0d-grnT-ItrMvT [root@test-centos7-node1~]#vgremovetest2 Volumegroup"test2"successfullyremoved [root@test-centos7-node1~]#vgs VG#PV#LV#SNAttrVSizeVFree test200wz--n-19.98g19.98g [root@test-centos7-node1~]#
说明:同样的vgcreate表示创建VG其用法格式是vgcreate VGNAME[option]储存设备路径其中-s表示指定PE的大小,VGNAME表示VG的名称,需要说明的是,指定名称不能和系统现有的VG名称相同;vgs查看系统上所有VG的简要信息,vgscan搜寻系统上面是否有VG,vgdisplay查看所有VG的详细信息,当然此例中只有一个,我们也可在后面指定查看某个VG的详细信息,只需要指定其VG名称即可;有关vg的命令有很多其中vgreduce的作用是在VG内移除PV,vgremove的作用是删除一个VG,这两个命令都需要在其后指定要操作的VG名称
5)创建LV
[root@test-centos7-node1~]#lvs [root@test-centos7-node1~]#lvcreate-L2G-naaatest Logicalvolume"aaa"created. [root@test-centos7-node1~]#lvcreate-L3G-nbbbtest Logicalvolume"bbb"created. [root@test-centos7-node1~]#lvs LVVGAttrLSizePoolOriginData%Meta%MoveLogCpy%SyncConvert aaatest-wi-a-----2.00g bbbtest-wi-a-----3.00g [root@test-centos7-node1~]#lvscan ACTIVE'/dev/test/aaa'[2.00GiB]inherit ACTIVE'/dev/test/bbb'[3.00GiB]inherit [root@test-centos7-node1~]#lvdisplay ---Logicalvolume--- LVPath/dev/test/aaa LVNameaaa VGNametest LVUUIDR9weh0-D85B-rMcW-oYSM-dAQb-gIQh-RXxITP LVWriteAccessread/write LVCreationhost,timetest-centos7-node1,2020-01-0609:05:23-0500 LVStatusavailable #open0 LVSize2.00GiB CurrentLE256 Segments1 Allocationinherit Readaheadsectorsauto -currentlysetto8192 Blockdevice253:0 ---Logicalvolume--- LVPath/dev/test/bbb LVNamebbb VGNametest LVUUIDLYwvZj-ogpf-nwtF-mja6-xwwl-A24W-BslJOu LVWriteAccessread/write LVCreationhost,timetest-centos7-node1,2020-01-0609:05:34-0500 LVStatusavailable #open0 LVSize3.00GiB CurrentLE384 Segments1 Allocationinherit Readaheadsectorsauto -currentlysetto8192 Blockdevice253:1 [root@test-centos7-node1~]#lvresize-L+4G/dev/test/aaa Sizeoflogicalvolumetest/aaachangedfrom2.00GiB(256extents)to6.00GiB(768extents). Logicalvolumetest/aaasuccessfullyresized. [root@test-centos7-node1~]#lvs LVVGAttrLSizePoolOriginData%Meta%MoveLogCpy%SyncConvert aaatest-wi-a-----6.00g bbbtest-wi-a-----3.00g [root@test-centos7-node1~]#lvresize-L-1G/dev/test/bbb WARNING:Reducingactivelogicalvolumeto2.00GiB. THISMAYDESTROYYOURDATA(filesystemetc.) Doyoureallywanttoreducetest/bbb?[y/n]:y Sizeoflogicalvolumetest/bbbchangedfrom3.00GiB(384extents)to2.00GiB(256extents). Logicalvolumetest/bbbsuccessfullyresized. [root@test-centos7-node1~]#lvs LVVGAttrLSizePoolOriginData%Meta%MoveLogCpy%SyncConvert aaatest-wi-a-----6.00g bbbtest-wi-a-----2.00g [root@test-centos7-node1~]#lvreduce-L3G/dev/test/aaa WARNING:Reducingactivelogicalvolumeto3.00GiB. THISMAYDESTROYYOURDATA(filesystemetc.) Doyoureallywanttoreducetest/aaa?[y/n]:y Sizeoflogicalvolumetest/aaachangedfrom6.00GiB(768extents)to3.00GiB(384extents). Logicalvolumetest/aaasuccessfullyresized. [root@test-centos7-node1~]#lvs LVVGAttrLSizePoolOriginData%Meta%MoveLogCpy%SyncConvert aaatest-wi-a-----3.00g bbbtest-wi-a-----2.00g [root@test-centos7-node1~]#lvreduce-L-1G/dev/test/aaa WARNING:Reducingactivelogicalvolumeto2.00GiB. THISMAYDESTROYYOURDATA(filesystemetc.) Doyoureallywanttoreducetest/aaa?[y/n]:y Sizeoflogicalvolumetest/aaachangedfrom3.00GiB(384extents)to2.00GiB(256extents). Logicalvolumetest/aaasuccessfullyresized. [root@test-centos7-node1~]#lvs LVVGAttrLSizePoolOriginData%Meta%MoveLogCpy%SyncConvert aaatest-wi-a-----2.00g bbbtest-wi-a-----2.00g [root@test-centos7-node1~]#lvremove/dev/test/bbb Doyoureallywanttoremoveactivelogicalvolumetest/bbb?[y/n]:y Logicalvolume"bbb"successfullyremoved [root@test-centos7-node1~]#lvs LVVGAttrLSizePoolOriginData%Meta%MoveLogCpy%SyncConvert aaatest-wi-a-----2.00g [root@test-centos7-node1~]#
说明:lvcreate命令作用是创建LV其中-L表示指定LV的大小,-n表示lv的名称最后跟VG的名称,表示从那个VG上创建LV;lvs命令作用是查看系统所有的lv简要信息;lvdisplay查看LV的详细信息,后面可以跟VG的名称表示查看指定VG上的所有LV的详细信息;lvreduce命令作用是缩减指定LV里的空间,如果指定的大小是负数如-3M表示缩减3M 如果指定的是3M则表示缩减至3M,这个需要注意,还有这个命令指定大小不能以类似+4M来指定;lvresize此命令的作用是调整LV的容量大小,这个命令指定调整大小+表示增加多少,-表示减少多少,若没有+/-表示调整到指定大小,lvresize和lvreduce这两个命令后面都是跟的lv对应设备的路径(其实不是真的设备路径,是设备的软连接路径),不能指定其名称;lvremove命令作用是删除指定的LV,若指定的是vg名,表示删除该VG上的所有LV,若需要删除某个LV需要指定其对应设备路径。
到此lvm就已经实现,后续就可以直接格式化,然后挂载使用了
[root@test-centos7-node1~]#vgs VG#PV#LV#SNAttrVSizeVFree test200wz--n-19.98g19.98g [root@test-centos7-node1~]#lvcreate-l100%FREE-nxxxtest WARNING:xfssignaturedetectedon/dev/test/xxxatoffset0.Wipeit?[y/n]:y Wipingxfssignatureon/dev/test/xxx. Logicalvolume"xxx"created. [root@test-centos7-node1~]#lvs LVVGAttrLSizePoolOriginData%Meta%MoveLogCpy%SyncConvert xxxtest-wi-a-----19.98g [root@test-centos7-node1~]#mkfs.xfs-f/dev/test/xxx meta-data=/dev/test/xxxisize=512agcount=4,agsize=1309696blks =sectsz=512attr=2,projid32bit=1 =crc=1finobt=0,sparse=0 data=bsize=4096blocks=5238784,imaxpct=25 =sunit=0swidth=0blks naming=version2bsize=4096ascii-ci=0ftype=1 log=internallogbsize=4096blocks=2560,version=2 =sectsz=512sunit=0blks,lazy-count=1 realtime=noneextsz=4096blocks=0,rtextents=0 [root@test-centos7-node1~]#lsblk NAMEMAJ:MINRMSIZEROTYPEMOUNTPOINT sda8:0050G0disk ├─sda18:102G0part/boot ├─sda28:202G0part[SWAP] └─sda38:3046G0part/ sdb8:16050G0disk ├─sdb18:17010G0part │└─test-xxx253:0020G0lvm ├─sdb28:18010G0part │└─test-xxx253:0020G0lvm └─sdb38:19010G0part sr011:01792M0rom [root@test-centos7-node1~]#mount/dev/test/xxx/mnt [root@test-centos7-node1~]#df-h FilesystemSizeUsedAvailUse%Mountedon /dev/sda346G1.6G45G4%/ devtmpfs1.9G01.9G0%/dev tmpfs1.9G01.9G0%/dev/shm tmpfs1.9G8.6M1.9G1%/run tmpfs1.9G01.9G0%/sys/fs/cgroup /dev/sda12.0G135M1.9G7%/boot tmpfs378M0378M0%/run/user/0 /dev/mapper/test-xxx20G33M20G1%/mnt [root@test-centos7-node1~]#
三、扩容LV
1)创建PV,并将其加入到VG中
[root@test-centos7-node1~]#pvs PVVGFmtAttrPSizePFree /dev/sdb1testlvm2a--9.99g0 /dev/sdb2testlvm2a--9.99g0 [root@test-centos7-node1~]#vgdisplay ---Volumegroup--- VGNametest SystemID Formatlvm2 MetadataAreas2 MetadataSequenceNo28 VGAccessread/write VGStatusresizable MAXLV0 CurLV1 OpenLV1 MaxPV0 CurPV2 ActPV2 VGSize19.98GiB PESize8.00MiB TotalPE2558 AllocPE/Size2558/19.98GiB FreePE/Size0/0 VGUUID31vxAP-L5jb-8Yxm-25m2-LdD0-ee8R-sdTjum [root@test-centos7-node1~]#
说明:从上面的信息可以看到VG的大小是19.98G也就是两块PV的大小。现在我们新创建一个pv,然后加到vg里
[root@test-centos7-node1~]#pvs PVVGFmtAttrPSizePFree /dev/sdb1testlvm2a--9.99g0 /dev/sdb2testlvm2a--9.99g0 [root@test-centos7-node1~]#pvcreate/dev/sdb3 Physicalvolume"/dev/sdb3"successfullycreated. [root@test-centos7-node1~]#pvs PVVGFmtAttrPSizePFree /dev/sdb1testlvm2a--9.99g0 /dev/sdb2testlvm2a--9.99g0 /dev/sdb3lvm2---10.00g10.00g [root@test-centos7-node1~]#vgs VG#PV#LV#SNAttrVSizeVFree test210wz--n-19.98g0 [root@test-centos7-node1~]#vgextendtest/dev/sdb3 Volumegroup"test"successfullyextended [root@test-centos7-node1~]#vgs VG#PV#LV#SNAttrVSizeVFree test310wz--n-<29.98g9.99g [root@test-centos7-node1~]#vgdisplay ---Volumegroup--- VGNametest SystemID Formatlvm2 MetadataAreas3 MetadataSequenceNo31 VGAccessread/write VGStatusresizable MAXLV0 CurLV1 OpenLV1 MaxPV0 CurPV3 ActPV3 VGSize<29.98GiB PESize8.00MiB TotalPE3837 AllocPE/Size2558/19.98GiB FreePE/Size1279/9.99GiB VGUUID31vxAP-L5jb-8Yxm-25m2-LdD0-ee8R-sdTjum [root@test-centos7-node1~]#
说明:vgextend命令作用是将指定pv加入到指定VG中,VG指定其名称即可,pv需指定其设备路径
2)将新加的VG的PE加入到xxxLV里
[root@test-centos7-node1~]#vgs VG#PV#LV#SNAttrVSizeVFree test310wz--n-<29.98g9.99g [root@test-centos7-node1~]#lvs LVVGAttrLSizePoolOriginData%Meta%MoveLogCpy%SyncConvert xxxtest-wi-ao----19.98g [root@test-centos7-node1~]#lvdisplay ---Logicalvolume--- LVPath/dev/test/xxx LVNamexxx VGNametest LVUUIDihOo41-gh1L-eSHK-iLXY-UGfF-J6uI-UmVWhF LVWriteAccessread/write LVCreationhost,timetest-centos7-node1,2020-01-0610:00:08-0500 LVStatusavailable #open1 LVSize19.98GiB CurrentLE2558 Segments2 Allocationinherit Readaheadsectorsauto -currentlysetto8192 Blockdevice253:0 [root@test-centos7-node1~]#lvextend-l+100%FREE/dev/test/xxx Sizeoflogicalvolumetest/xxxchangedfrom19.98GiB(2558extents)to<29.98GiB(3837extents). Logicalvolumetest/xxxsuccessfullyresized. [root@test-centos7-node1~]#lvs LVVGAttrLSizePoolOriginData%Meta%MoveLogCpy%SyncConvert xxxtest-wi-ao----<29.98g [root@test-centos7-node1~]#lvdisplay ---Logicalvolume--- LVPath/dev/test/xxx LVNamexxx VGNametest LVUUIDihOo41-gh1L-eSHK-iLXY-UGfF-J6uI-UmVWhF LVWriteAccessread/write LVCreationhost,timetest-centos7-node1,2020-01-0610:00:08-0500 LVStatusavailable #open1 LVSize<29.98GiB CurrentLE3837 Segments3 Allocationinherit Readaheadsectorsauto -currentlysetto8192 Blockdevice253:0 [root@test-centos7-node1~]#vgs VG#PV#LV#SNAttrVSizeVFree test310wz--n-<29.98g0 [root@test-centos7-node1~]#lsblk NAMEMAJ:MINRMSIZEROTYPEMOUNTPOINT sda8:0050G0disk ├─sda18:102G0part/boot ├─sda28:202G0part[SWAP] └─sda38:3046G0part/ sdb8:16050G0disk ├─sdb18:17010G0part │└─test-xxx253:0030G0lvm/mnt ├─sdb28:18010G0part │└─test-xxx253:0030G0lvm/mnt └─sdb38:19010G0part └─test-xxx253:0030G0lvm/mnt sr011:01792M0rom [root@test-centos7-node1~]#df-h FilesystemSizeUsedAvailUse%Mountedon /dev/sda346G1.6G45G4%/ devtmpfs1.9G01.9G0%/dev tmpfs1.9G01.9G0%/dev/shm tmpfs1.9G8.6M1.9G1%/run tmpfs1.9G01.9G0%/sys/fs/cgroup /dev/sda12.0G135M1.9G7%/boot tmpfs378M0378M0%/run/user/0 /dev/mapper/test-xxx20G33M20G1%/mnt [root@test-centos7-node1~]#
说明:可看到lvs里的空间已经加上去,lvextend命令作用是将指定VG里的空间添加到指定的lv中,上面的例子是把VG里的所有空闲空间添加到/dev/test/xxx里,当然还有一种情况在VG还有空余的空间,我们可以用lvresize来调整lv的大小;从上面的信息可以看到我们把新的空间加入到VG和Lv中后,df看挂载点空间却没有增加,接下来我们通过resize2fs将文件系统同步到增大的空间。
[root@test-centos7-node1~]#resize2fs/dev/test/xxx resize2fs1.42.9(28-Dec-2013) resize2fs:Badmagicnumberinsuper-blockwhiletryingtoopen/dev/test/xxx Couldn'tfindvalidfilesystemsuperblock. [root@test-centos7-node1~]#df-h FilesystemSizeUsedAvailUse%Mountedon /dev/sda346G1.6G45G4%/ devtmpfs1.9G01.9G0%/dev tmpfs1.9G01.9G0%/dev/shm tmpfs1.9G8.6M1.9G1%/run tmpfs1.9G01.9G0%/sys/fs/cgroup /dev/sda12.0G135M1.9G7%/boot tmpfs378M0378M0%/run/user/0 /dev/mapper/test-xxx20G33M20G1%/mnt [root@test-centos7-node1~]#
说明:看来用此命令不行,因为resize2fs这个命令针对ext系列的文件系统,xfs需要用xfs_growfs来调整
[root@test-centos7-node1~]#xfs_growfs/dev/test/xxx meta-data=/dev/mapper/test-xxxisize=512agcount=4,agsize=1309696blks =sectsz=512attr=2,projid32bit=1 =crc=1finobt=0spinodes=0 data=bsize=4096blocks=5238784,imaxpct=25 =sunit=0swidth=0blks naming=version2bsize=4096ascii-ci=0ftype=1 log=internalbsize=4096blocks=2560,version=2 =sectsz=512sunit=0blks,lazy-count=1 realtime=noneextsz=4096blocks=0,rtextents=0 datablockschangedfrom5238784to7858176 [root@test-centos7-node1~]#df-h FilesystemSizeUsedAvailUse%Mountedon /dev/sda346G1.6G45G4%/ devtmpfs1.9G01.9G0%/dev tmpfs1.9G01.9G0%/dev/shm tmpfs1.9G8.6M1.9G1%/run tmpfs1.9G01.9G0%/sys/fs/cgroup /dev/sda12.0G135M1.9G7%/boot tmpfs378M0378M0%/run/user/0 /dev/mapper/test-xxx30G33M30G1%/mnt [root@test-centos7-node1~]#
四、缩减LV(xfs文件系统)
1)卸载已经挂好的LV
[root@test-centos7-node1~]#df-h FilesystemSizeUsedAvailUse%Mountedon /dev/sda346G1.6G45G4%/ devtmpfs1.9G01.9G0%/dev tmpfs1.9G01.9G0%/dev/shm tmpfs1.9G8.6M1.9G1%/run tmpfs1.9G01.9G0%/sys/fs/cgroup /dev/sda12.0G135M1.9G7%/boot tmpfs378M0378M0%/run/user/0 /dev/mapper/test-xxx30G33M30G1%/mnt [root@test-centos7-node1~]#umount/mnt [root@test-centos7-node1~]#df-h FilesystemSizeUsedAvailUse%Mountedon /dev/sda346G1.6G45G4%/ devtmpfs1.9G01.9G0%/dev tmpfs1.9G01.9G0%/dev/shm tmpfs1.9G8.6M1.9G1%/run tmpfs1.9G01.9G0%/sys/fs/cgroup /dev/sda12.0G135M1.9G7%/boot tmpfs378M0378M0%/run/user/0 [root@test-centos7-node1~]#
2)强制进行磁盘检测
[root@test-centos7-node1~]#xfs_repair-n/dev/test/xxx Phase1-findandverifysuperblock... Phase2-usinginternallog -zerolog... -scanfilesystemfreespaceandinodemaps... -foundrootinodechunk Phase3-foreachAG... -scan(butdon'tclear)agiunlinkedlists... -processknowninodesandperforminodediscovery... -agno=0 -agno=1 -agno=2 -agno=3 -processnewlydiscoveredinodes... Phase4-checkforduplicateblocks... -settingupduplicateextentlist... -checkforinodesclaimingduplicateblocks... -agno=0 -agno=1 -agno=2 -agno=3 Nomodifyflagset,skippingphase5 Phase6-checkinodeconnectivity... -traversingfilesystem... -traversalfinished... -movingdisconnectedinodestolost+found... Phase7-verifylinkcounts... Nomodifyflagset,skippingfilesystemflushandexiting. [root@test-centos7-node1~]#
说明:ext系列文件系统可e2fsck命令检查
3)调整lv大小
[root@test-centos7-node1~]#lvreduce-L-10G/dev/test/xxx WARNING:Reducingactivelogicalvolumeto<19.98GiB. THISMAYDESTROYYOURDATA(filesystemetc.) Doyoureallywanttoreducetest/xxx?[y/n]:y Sizeoflogicalvolumetest/xxxchangedfrom<29.98GiB(3837extents)to<19.98GiB(2557extents). Logicalvolumetest/xxxsuccessfullyresized. [root@test-centos7-node1~]#lvs LVVGAttrLSizePoolOriginData%Meta%MoveLogCpy%SyncConvert xxxtest-wi-a-----<19.98g [root@test-centos7-node1~]#lvdisplay ---Logicalvolume--- LVPath/dev/test/xxx LVNamexxx VGNametest LVUUIDuhZZaz-Odd9-ibwY-2Z1Z-ZmNY-eZF7-0lXERT LVWriteAccessread/write LVCreationhost,timetest-centos7-node1,2020-01-0610:32:42-0500 LVStatusavailable #open0 LVSize<19.98GiB CurrentLE2557 Segments2 Allocationinherit Readaheadsectorsauto -currentlysetto8192 Blockdevice253:0 [root@test-centos7-node1~]#
4)挂载
[root@test-centos7-node1~]#mount/dev/test/xxx/mnt mount:/dev/mapper/test-xxx:can'treadsuperblock [root@test-centos7-node1~]#
说明:做到这里发现一个问题,xfs文件系统是不支持逻辑卷缩减的,为什么呢?xfs的文件系统调整命令是xfs_growfs这个命令只支持增大的操作。我们在调整lv大小的时候实际上是把文件系统给破坏了,要想缩减空间,就必须重新格式化后在挂载,这样一来如果原有的盘里有数据就丢了。所以xfs上做LV的缩减没有意义
[root@test-centos7-node1~]#mkfs.xfs/dev/test/xxx-f meta-data=/dev/test/xxxisize=512agcount=4,agsize=1309184blks =sectsz=512attr=2,projid32bit=1 =crc=1finobt=0,sparse=0 data=bsize=4096blocks=5236736,imaxpct=25 =sunit=0swidth=0blks naming=version2bsize=4096ascii-ci=0ftype=1 log=internallogbsize=4096blocks=2560,version=2 =sectsz=512sunit=0blks,lazy-count=1 realtime=noneextsz=4096blocks=0,rtextents=0 [root@test-centos7-node1~]#mount/dev/test/xxx/mnt [root@test-centos7-node1~]#df-h FilesystemSizeUsedAvailUse%Mountedon /dev/sda346G1.6G45G4%/ devtmpfs1.9G01.9G0%/dev tmpfs1.9G01.9G0%/dev/shm tmpfs1.9G8.6M1.9G1%/run tmpfs1.9G01.9G0%/sys/fs/cgroup /dev/sda12.0G135M1.9G7%/boot tmpfs378M0378M0%/run/user/0 /dev/mapper/test-xxx20G33M20G1%/mnt [root@test-centos7-node1~]
五、缩减LV(ext系列文件系统)
1)卸载已挂载的LV
[root@test-centos7-node1~]#df-Th FilesystemTypeSizeUsedAvailUse%Mountedon /dev/sda3xfs46G1.6G45G4%/ devtmpfsdevtmpfs1.9G01.9G0%/dev tmpfstmpfs1.9G01.9G0%/dev/shm tmpfstmpfs1.9G8.6M1.9G1%/run tmpfstmpfs1.9G01.9G0%/sys/fs/cgroup /dev/sda1xfs2.0G135M1.9G7%/boot tmpfstmpfs378M0378M0%/run/user/0 /dev/mapper/test-xxxext420G45M19G1%/mnt [root@test-centos7-node1~]#umount/mnt [root@test-centos7-node1~]#df-Th FilesystemTypeSizeUsedAvailUse%Mountedon /dev/sda3xfs46G1.6G45G4%/ devtmpfsdevtmpfs1.9G01.9G0%/dev tmpfstmpfs1.9G01.9G0%/dev/shm tmpfstmpfs1.9G8.6M1.9G1%/run tmpfstmpfs1.9G01.9G0%/sys/fs/cgroup /dev/sda1xfs2.0G135M1.9G7%/boot tmpfstmpfs378M0378M0%/run/user/0 [root@test-centos7-node1~]#
2)强制执行磁盘检测
[root@test-centos7-node1~]#e2fsck-f/dev/test/xxx e2fsck1.42.9(28-Dec-2013) Pass1:Checkinginodes,blocks,andsizes Pass2:Checkingdirectorystructure Pass3:Checkingdirectoryconnectivity Pass4:Checkingreferencecounts Pass5:Checkinggroupsummaryinformation /dev/test/xxx:11/1310720files(0.0%non-contiguous),126322/5236736blocks [root@test-centos7-node1~]#
说明:这一步我们在不执行的话,直接下一步它也会提示我们先做磁盘检测
3)调整文件系统大小
[root@test-centos7-node1~]#resize2fs/dev/test/xxx12G resize2fs1.42.9(28-Dec-2013) Resizingthefilesystemon/dev/test/xxxto3145728(4k)blocks. Thefilesystemon/dev/test/xxxisnow3145728blockslong. [root@test-centos7-node1~]#
4)调整LV的大小
[root@test-centos7-node1~]#lvreduce-L12G/dev/test/xxx WARNING:Reducingactivelogicalvolumeto12.00GiB. THISMAYDESTROYYOURDATA(filesystemetc.) Doyoureallywanttoreducetest/xxx?[y/n]:y Sizeoflogicalvolumetest/xxxchangedfrom<19.98GiB(2557extents)to12.00GiB(1536extents). Logicalvolumetest/xxxsuccessfullyresized. [root@test-centos7-node1~]#lvs LVVGAttrLSizePoolOriginData%Meta%MoveLogCpy%SyncConvert xxxtest-wi-a-----12.00g [root@test-centos7-node1~]#
说明:这里缩减到的空间需同文件系统的大小一致或者缩减后的空间比文件系统调整的空间要大才行,这样才不能损坏文件系统,切记不能比文件系统调整的空间还小,小了,在缩减空间的时候就破坏了文件系统,会导致后续的挂载无法进行。
5)挂载
[root@test-centos7-node1~]#mount/dev/test/xxx/mnt [root@test-centos7-node1~]#df-h FilesystemSizeUsedAvailUse%Mountedon /dev/sda346G1.6G45G4%/ devtmpfs1.9G01.9G0%/dev tmpfs1.9G01.9G0%/dev/shm tmpfs1.9G8.6M1.9G1%/run tmpfs1.9G01.9G0%/sys/fs/cgroup /dev/sda12.0G135M1.9G7%/boot tmpfs378M0378M0%/run/user/0 /dev/mapper/test-xxx12G41M12G1%/mnt [root@test-centos7-node1~]#
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。