LinuxLinux高级文件
全文字,阅读需20分钟。
目录
二、LVM逻辑卷2.1LVM概述2.2建立LVM步骤2.3物理卷管理2.3.1硬盘分区2.3.2建立物理卷2.3.3查看物理卷2.3.4删除物理卷2.4卷组管理2.4.1建立卷组2.4.2查看卷组2.4.3扩容卷组2.4.4减小卷组2.4.5删除卷组2.5逻辑卷管理2.5.1建立逻辑卷2.5.2查看逻辑卷2.5.3调整逻辑卷2.5.4删除逻辑卷二、LVM逻辑卷2.1LVM概述在实际使用Linux服务器的时候,随着业务的增加,文件系统负载会越来越大,当到了空间不足的情况时,如果还在使用传统的分区方式管理硬盘,就不得不将现有的所有分区全部删除,并重新规划新的存储方案。不仅如此,分区到底应该分多大呢?分得太大,会浪费硬盘空间;分得太小,又会面临不够使用的情况。如果在安装系统时规划不合理,这种困扰就会经常出现。
在以往(2.4内核以前)要想调整分区大小,要么先新建立一个更大的分区,然后复制旧分区中的内容到新分区,最后使用软链接来替代旧分区;要么使用调整分区大小的工具(如parted),parted虽然可以调整分区大小,但是它需要卸载分区之后才可以进行,也就是说需要停止服务。
从一开始,我们就需要有一种管理机制来帮助我们动态地管理存储,LVM就提供了这种功能。LVM最大的好处就是可以随时调整分区的大小,分区中的现有数据不会丟失,并且不需要卸载分区、停止服务。
LVM是LogicalVolumeManager的简称。它是Linux下对硬盘分区的一种管理机制。LVM适合于管理大存储设备,并允许用户动态调整文件系统的大小。此外,LVM的快照功能可以帮助我们快速备份数据。LVM为我们提供了逻辑概念上的磁盘,使得文件系统不再关心底层物理磁盘的概念。
LVM是在硬盘分区之上建立一个逻辑层,这个逻辑层让多个硬盘或分区看起来像一块逻辑硬盘,然后将这块逻辑硬盘分成逻辑卷之后使用,从而大大提高了分区的灵活性。将真实的物理硬盘或分区称作物理卷(PV);由多个物理卷组成一块大的逻辑硬盘,叫作卷组(VG);将卷组划分成多个可以使用的分区,叫作逻辑卷(LV)。而在LVM中最小的存储单位不再是block,而是物理扩展块(PhysicalExtend,PE)。
物理卷(PV,PhysicalVolume):就是真正的物理硬盘或分区。
卷组(VG,VolumeGroup):将多个物理卷合起来就组成了卷组。组成同一个卷组的物理卷可以是同一块硬盘的不同分区,也可以是不同硬盘上的不同分区。可以把卷组想象为一块逻辑硬盘,支持动态扩容。
逻辑卷(LV,LogicalVolume):卷组是一块逻辑硬盘,硬盘必须分区之后才能使用,我们把这个分区称作逻辑卷。逻辑卷可以被格式化和写入数据。我们可以把逻辑卷想象为分区。
物理扩展(PE,PhysicalExtend):PE是用来保存数据的最小单元,我们的数据实际上都是写入PE当中的。PE的大小是可以配置的,默认是4MB。
2.2建立LVM步骤建立LVM的时候,需要按照以下步骤来进行:
1.把物理硬盘分成分区,当然也可以是整块物理硬盘;
2.把物理分区建立为物理卷(PV),也可以直接把整块硬盘都建立为物理卷。
3.把物理卷整合为卷组(VG)。卷组就已经可以动态地调整大小了,可以把物理分区加入卷组,也可以把物理分区从卷组中删除。
4.把卷组再划分为逻辑卷(LV),逻辑卷也是可以直接调整大小的。逻辑卷可以想象为分区,所以也需要格式化和挂载。
2.3物理卷管理2.3.1硬盘分区使用fdisk交互命令创建硬盘分区,不过需要注意的是分区的系统ID不再是Linux默认的分区ID号83了,而要改成LVM的ID号8e。
2.3.2建立物理卷建立物理卷的命令如下:
[root
localhost~]#pvcreate[设备文件名]在建立物理卷时,既可以把整块硬盘都建立成物理卷,也可以把某个分区建立成物理卷。如果要把整块硬盘都建立成物理卷,则命令如下:
[root
localhost~]#pvcreate/dev/sdb#/dev/sdb为例在使用中要把分区建立成物理卷,所以执行以下命令:
[root
localhost~]#pvcreate/dev/sdb5Writingphysicalvolumedatatodisk"/dev/sdb5"Physicalvolume"/dev/sdb5"successfullycreated[rootlocalhost~]#pvcreate/dev/sdb6Writingphysicalvolumedatatodisk"/dev/sdb6"Physicalvolume"/dev/sdb6"successfullycreated[rootlocalhost~]#pvcreate/dev/sdb7Writingphysicalvolumedatatodisk"/dev/sdb7"Physicalvolume7dev/sdb7successfullycreated2.3.3查看物理卷查看物理卷的命令有两个,第一个是pvscan,用来查询系统中哪些硬盘或分区是物理卷。命令如下:
[root
localhost~]#pvscanPV/dev/sdb5Ivm2[1.01GiB]PV/dev/sdb6Ivm2[1.01GiB]PV/dev/sdb7Ivm2[1.01GiB]Total:3[3.03GiB]/innoVG:0[0]/innoVG:3[3.03GiB]可以看到在系统中,/dev/sdb5-7这三个分区是物理卷。最后一行的意思是:总共3个物理卷[大小]/使用了0个卷[大小]/空闲3个卷[大小]。
第二个查询命令是pvdisplay,它可以查看到更详细的物理卷状态,命令如下:
[root
localhost~]#pvdisplay"/dev/sdb5"isanewphysicalvolumeof"1.01GiB"---NEWPhysicalvolume---PVName/dev/sdb5#PV名VGName#属于的VG名,还没有分配,所以空白PVSize1.01GiB#PV的大小AllocatableNO#是否已经分配PESize0#PE大小,因为还没有分配,所以PE大小也没有指定TotalPE0#PE总数FreePE0#空闲PE数AllocatedPE0#可分配的PE数PVUUIDCEsVz3-f0sD-e1w0-wkHZ-iaLq-O6aV-xtQNTB#PV的UUID2.3.4删除物理卷如果不再需要物理卷,则使用pvremove命令删除,命令如下:
[root
localhost~]#pvremove/dev/sdb7注意:在删除物理卷时,物理卷必须不属于任何卷组,也就是需要先将物理卷从卷组中删除,再删除物理卷。
2.4卷组管理2.4.1建立卷组建立卷组使用的命令是vgcreate,具体命令格式如下:
[root
localhost~]#vgcreate[选项]卷组名物理卷名选项:-sPE大小:指定PE的大小,单位可以是MB,GB,TB等。如果不写默认PE大小为4MB之前创立了三个物理卷/dev/sdb5-7,先把/dev/sdb5和/dev/sdb6加入卷组,留着/dev/sdb7一会实验调整卷组大小,命令如下:
[root
localhost~]#vgcreate-s8MBscvg/dev/sdb5/dev/sdb6Volumegroup"scvg"successfullycreated2.4.2查看卷组查看卷组的命令同样有两个:vgscan命令主要用于查看系统中是否有卷组;而vgdisplay命令则用于查看卷组的详细状态。命令如下:
[root
localhost~]#vgscanReadingallphysicalvolumes.Thismaytakeawhile...Foundvolumegroup"scvg"usingmetadatatypelvm2#scvg的卷组确实存在[rootlocalhost~]#vgdisplay---Volumegroup---VGNamescvg#卷组名SystemIDFormatlvm2MetadataAreas2MetadataSequenceNo1VGAccessread/write#卷组访问状态VGStatusresizable#卷组状态MAXLV0#最大逻辑卷数CurLV0OpenLV0MaxPV0#最大物理卷数CurPV2#当前物理卷数ActPV2VGSize2.02GiB#卷组大小PESize8.00MiB#PE大小TotalPE#PE总数AllocPE/Size0/0#已用PE数量/大小FreePE/Size/2.02GiB#空闲PE数量/大小VGUUIDFs0dPf-LV7H-0Ir3-rthA-3UxC-LX5c-FLFriJ2.4.3扩容卷组现在要将/dev/sdb7加入卷组,使用的命令是vgextend。命令如下:
[root
localhost~]#vgextendscvg/dev/sdb7Volumegroup"scvg"successfullyextended#把/dev/sdb7物理卷也加入scvg卷组[rootlocalhost~]#vgdisplay---Volumegroup---VGNamescvgSystemIDFormatlvm2MetadataAreas3MetadataSequenceNo2VGAccessread/writeVGStatusresizableMAXLV0CurLV0OpenLV0MaxPV0CurPV3ActPV3VGSize3.02GiB#卷组容量增加PESize8.00MiBTotalPE#PE总数增加AllocPE/Size0/0FreePE/Size/3.02GiBVGUUIDFs0dPf-LV7H-0Ir3-rthA-3UxC-LX5c-FLFriJ2.4.4减小卷组既然可以增加卷组容量,当然也可以减少卷组容量,我们使用vgreduce命令在卷组中删除物理卷,删除之后记得再添加回来,以便下面再用于实验。命令如下:
[root
localhost~]#vgreducescvg/dev/sdb7Removed"/dev/sdb7"fromvolumegroup"scvg"#在卷组中删除/dev/sdb7物理卷[rootlocalhost~]#vgreduce-a#删除所有未使用的物理卷2.4.5删除卷组删除卷组的命令是vgremove。命令如下:
[root
localhost~]#vgremovescvgVolumegroup"scvg"successfullyremoved注意:只有在删除卷组之后,才能删除物理卷。还要注意的是,scvg卷组中还没有添加任何逻辑卷,如果拥有了逻辑卷,则记得先删除逻再删除卷组。
删除之后记得再建立回来,否则逻辑卷的实验无法完成。命令如下:
[root
localhost~]#vgcreate-s8MBscvg/dev/sdb5/dev/sdb6/dev/sdb7Volumegroup"scvg"successfullycreated#这次三个物理卷就一起加入卷组了2.5逻辑卷管理2.5.1建立逻辑卷可以把逻辑卷想象成分区,那么这个逻辑卷当然也需要被格式化和挂载。另外,逻辑卷也是可以动态调整大小的,而且数据不会丟失,也不用卸载逻辑卷。
之前建立了3GB大小的卷组scvg,接下来需要在卷组中建立逻辑卷。命令格式如下:
[root
localhost~]#lvcreate[选项][-n逻辑卷名]卷组名选项:-L容量:指定逻辑卷大小,单位MB,GB,TB等-l个数:按照PE个数指定逻辑卷大小,这个参数需要换算容量,太麻烦-n逻辑卷名:指定逻辑卷名建立一个1.5GB的userlv逻辑卷,建立命令如下:
[root
localhost~]#lvcreate-L1.5G-nuserlvscvgLogicalvolume"userlv"created#在scvg卷组中建立1.5GB的userlv逻辑卷建立完逻辑卷之后,还要格式化和挂载之后逻辑卷才能正常使用。格式化和挂载命令和操作普通分区时是一样的,不过需要注意的是逻辑卷的设备文件名是/dev/卷组名/逻辑卷名,如我们的userlv的设备文件名就是“/dev/scvg/userlv”,具体命令如下:
[root
localhost~]#mkfs-text4/dev/scvg/userlv#格式化[rootlocalhost~]#mkdir/disklvm[rootlocalhost~]#mount/dev/scvg/userlv/disklvm/#建立挂载点,并挂载[rootlocalhost~]#mount…省略部分输出…/dev/mapper/scvg-userlvon/disklvmtypeext4(rw)#已经挂载了#如果需要开机自动挂载,也要修改/etc/fstab文件2.5.2查看逻辑卷查看命令同样有两个,第一个命令lvscan只能看到系统中是否拥有逻辑卷,命令如下:
[root
localhost~]#lvscanACTIVE/dev/scvg/userlv[1.50GiB]inherit#能够看到激活的逻辑卷,大小事1.5GB第二个命令lvdisplay可以看到逻辑卷的详细信息,命令如下:
[root
localhost~]#lvdisplay---Logicalvolume---LVPath/dev/scvg/userlv#逻辑卷设备文件名LVNameuserlv#逻辑卷名VGNamescvg#所属的卷组名LVUUID2kyKmn-Nupd-CldB-8ngY-NsI3-b8hV-QeUunaLVWriteAccessread/writeLVCreationhost,timelocalhost,-06-:36:39+LVStatusavailable#open1LVSize1.50GiB#逻辑卷大小CurrentLESegments2AllocationinheritReadaheadsectorsauto-currentlysettoBlockdevice:02.5.3调整逻辑卷可以使用lvresize命令调整逻辑卷的大小,一般不推荐减少逻辑卷的空间,因为这非常容易导致逻辑卷中的文件系统的数据丟失。lvresize命令格式如下:
[root
localhost~]#lvresize[选项]逻辑卷设备文件名选项:-L容量:安装容量调整大小,单位KB,GB,TB等。使用+代表增加空间,-号代表减少空间。如果直接写容量,代表设定逻辑卷大小为指定大小。-l个数:按照PE个数调整逻辑卷大小先在/disklvm中建立点文件,一会调整完大小后观察数据是否会丢失:
[root
localhost~]#cd/disklvm/[rootlocalhostdisklvm]#touchtestf[rootlocalhostdisklvm]#mkdirtestd[rootlocalhostdisklvm]#lslost+foundtestdtestf刚刚的userlv逻辑卷的大小是1.5GB,scvg卷组中还有1.5GB的空闲空间,增加userlv逻辑卷的大小到2.5GB。
[root
localhostdisklvm]#lvresize-L2.5G/dev/scvg/userlvExtendinglogicalvolumeuserlvto2.50GiBLogicalvolumeuserlvsuccessfullyresized#增加userlv逻辑卷的大小到2.5GB#命令也可以这样写[rootlocalhostdisklvm]#lvresize-L+1G/dev/scvg/userlv[rootlocalhostdisklvm]#lvdisplay---Logicalvolume---LVPath/dev/scvg/userlvLVNameuserlvVGNamescvgLVUUID2kyKmn-Nupd-CldB-8ngY-NsI3-b8hV-QeUunaLVWriteAccessread/writeLVCreationhost,timelocalhost,-06-:36:39+LVStatusavailable#open1LVSize2.50GiB#大小改变了CurrentLESegments3AllocationinheritReadaheadsectorsauto-currentlysettoBlockdevice:0逻辑卷的大小已经改变了,但是好像有些问题:
[root
localhostdisklvm]#df-h/disklvm/文件系统容量已用可用已用%挂载点/dev/mapper/scvg-userlv1.5G35M1.4G3%/disklvm怎么/disklvm分区的大小还是1.5GB啊?刚刚只是逻辑卷的大小改变了,如果需要让分区使用这个新逻辑卷,还要使用resize2fs命令来调整分区的大小。不过这里就体现了LVM的优势,不需要卸载分区,直接就能调整分区的大小。resize2fs命令如下:
[root
localhost~]#resize2fs[选项][设备文件名][调整的大小]选项:-f:强制调整设备文件名:指定调整哪个分区的大小调整的大小:指定把分区调整到多大,要加M,G等单位。如果不加大小,会使用整个分区那么已经把逻辑卷调整到了2.5GB,这时就需要把整个逻辑卷都加入/disklvm分区,命令如下:
[root
localhost~]#resize2fs/dev/scvg/userlvresize2fs1.41.12(17-May-)Filesystemat/dev/scvg/userlvismountedon/disklvm;on-lineresizingrequiredolddesc_blocks=1,new_desc_blocks=1Performinganon-lineresizeof/dev/scvg/userlvto(4k)blocks.Thefilesystemon/dev/scvg/userlvisnowblockslong.#已经调整了分区大小[rootlocalhost~]#df-h/disklvm/文件系统容量已用可用已用%挂载点/dev/mapper/scvg-userlv2.5G35M2.4G2%/disklvm#分区大小已经是2.5GB了[rootlocalhost~]#ls/disklvm/lost+foundtestdtestf#而且数据并没有丢失2.5.4删除逻辑卷删除了逻辑卷,其中的数据就会丟失。命令格式如下:
[root
localhost~]#lvremove逻辑卷设备文件名删除userlv这个逻辑卷,记得删除时要先卸载。命令如下:
[root
localhost~]#umount/dev/scvg/userlv[rootlocalhost~]#lvremove/dev/scvg/userlv预览时标签不可点收录于话题#个上一篇下一篇转载请注明:http://www.sonphie.com/jibzd/14614.html