您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > Linux 磁盘管理之LVM详解
逻辑卷轴管理员(LogicalVolumeManager)想像一个情况,你在当初规划主机的时候将/home只给他50G,等到使用者众多之后导致这个filesystem不够大,此时你能怎么作?多数的朋友都是这样:再加一颗新硬盘,然后重新分割、格式化,将/home的数据完整的复制过来,然后将原本的partition卸载重新挂载新的partition。啊!好忙碌啊!若是第二次分割却给的容量太多!导致很多磁碟容量被浪费了!你想要将这个partition缩小时,又该如何作?将上述的流程再搞一遍!唉~烦死了,尤其复制很花时间ㄟ~有没有更简单的方法呢?有的!那就是我们这个小节要介绍的LVM这玩意儿!LVM的重点在於『可以弹性的调整filesystem的容量!』而并非在於效能与数据保全上面。需要文件的读写效能或者是数据的可靠性,请参考前面的RAID小节。LVM可以整合多个实体partition在一起,让这些partitions看起来就像是一个磁碟一样!而且,还可以在未来新增或移除其他的实体partition到这个LVM管理的磁碟当中。如此一来,整个磁碟空间的使用上,实在是相当的具有弹性啊!既然LVM这么好用,那就让我们来瞧瞧这玩意吧!什么是LVM:PV,PE,VG,LV的意义LVM的全名是LogicalVolumeManager,中文可以翻译作逻辑卷轴管理员。之所以称为『卷轴』可能是因为可以将filesystem像卷轴一样伸长或缩短之故吧!LVM的作法是将几个实体的partitions(或disk)透过软件组合成为一块看起来是独立的大磁碟(VG),然后将这块大磁碟再经过分割成为可使用分割槽(LV),最终就能够挂载使用了。但是为什么这样的系统可以进行filesystem的扩充或缩小呢?其实与一个称为PE的项目有关!底下我们就得要针对这几个项目来好好聊聊!PhysicalVolume,PV,实体卷轴我们实际的partition需要调整系统识别码(systemID)成为8e(LVM的识别码),然后再经过pvcreate的命令将他转成LVM最底层的实体卷轴(PV),之后才能够将这些PV加以利用!调整systemID的方是就是透过fdisk啦!VolumeGroup,VG,卷轴群组所谓的LVM大磁碟就是将许多PV整合成这个VG的东西就是啦!所以VG就是LVM组合起来的大磁碟!这么想就好了。那么这个大磁碟最大可以到多少容量呢?这与底下要说明的PE有关喔~因为每个VG最多仅能包含65534个PE而已。如果使用LVM默认的参数,则一个VG最大可达256GB的容量啊!(参考底下的PE说明)PhysicalExtend,PE,实体延伸区块LVM默认使用4MB的PE区块,而LVM的VG最多仅能含有65534个PE,因此默认的LVMVG会有4M*65534/(1024M/G)=256G。这个PE很有趣喔!他是整个LVM最小的储存区块,也就是说,其实我们的文件数据都是藉由写入PE来处理的。简单的说,这个PE就有点像文件系统里面的block大小啦。这样说应该就比较好理解了吧?所以调整PE会影响到VG的最大容量喔!LogicalVolume,LV,逻辑卷轴最终的VG还会被切成LV,这个LV就是最后可以被格式化使用的类似分割槽的咚咚了!那么LV是否可以随意指定大小呢?当然不可以!既然PE是整个LVM的最小储存单位,那么LV的大小就与在此LV内的PE总数有关。为了方便使用者利用LVM来管理其系统,因此LV的装置档名通常指定为『/dev/vgname/lvname』的样式!此外,我们刚刚有谈到LVM可弹性的变更filesystem的容量,那是如何办到的?其实他就是透过『交换PE』来进行数据转换,将原本LV内的PE移转到其他装置中以降低LV容量,或将其他装置的PE加到此LV中以加大容量!VG、LV与PE的关系有点像下图:图3.1.1、PE与VG的相关性图示如上图所示,VG内的PE会分给虚线部分的LV,如果未来这个VG要扩充的话,加上其他的PV即可。而最重要的LV如果要扩充的话,也是透过加入VG内没有使用到的PE来扩充的!实作流程透过PV,VG,LV的规划之后,再利用mkfs就可以将你的LV格式化成为可以利用的文件系统了!而且这个文件系统的容量在未来还能够进行扩充或减少,而且里面的数据还不会被影响!实在是很『福气啦!』那实作方面要如何进行呢?很简单呢!整个流程由基础到最终的结果可以这样看:图3.1.2、LVM各组件的实现流程图示如此一来,我们就可以利用LV这个玩意儿来进行系统的挂载了。不过,你应该要觉得奇怪的是,那么我的数据写入这个LV时,到底他是怎么写入硬盘当中的?呵呵!好问题~其实,依据写入机制的不同,而有两种方式:线性模式(linear):假如我将/dev/hda1,/dev/hdb1这两个partition加入到VG当中,并且整个VG只有一个LV时,那么所谓的线性模式就是:当/dev/hda1的容量用完之后,/dev/hdb1的硬盘才会被使用到,这也是我们所建议的模式。交错模式(triped):那什么是交错模式?很简单啊,就是我将一笔数据拆成两部分,分别写入/dev/hda1与/dev/hdb1的意思,感觉上有点像RAID0啦!如此一来,一份数据用两颗硬盘来写入,理论上,读写的效能会比较好。基本上,LVM最主要的用处是在实现一个可以弹性调整容量的文件系统上,而不是在创建一个效能为主的磁碟上,所以,我们应该利用的是LVM可以弹性管理整个partition大小的用途上,而不是著眼在效能上的。因此,LVM默认的读写模式是线性模式啦!如果你使用triped模式,要注意,当任何一个partition『归天』时,所有的数据都会『损毁』的!所以啦,不是很适合使用这种模式啦!如果要强调效能与备份,那么就直接使用RAID即可,不需要用到LVM啊!LVM实作流程LVM必需要核心有支持且需要安装lvm2这个软件,好佳在的是,CentOS与其他较新的distributions已经默认将lvm的支持与软件都安装妥当了!所以你不需要担心这方面的问题!用就对了!鸟哥使用的测试机又要出动了喔!刚刚我们才练习过RAID,必须要将一堆目前没有用到的分割槽先杀掉,然后再重建新的分割槽。并且由於鸟哥仅有一个40GB的磁碟,所以底下的练习都仅针对同一颗磁碟来作的。我的要求有点像这样:先分割出4个partition,每个partition的容量均为1.5GB左右,且systemID需要为8e;全部的partition整合成为一个VG,VG名称配置为vbirdvg;且PE的大小为16MB;全部的VG容量都丢给LV,LV的名称配置为vbirdlv;最终这个LV格式化为ext3的文件系统,且挂载在/mnt/lvm中鸟哥就不仔细的介绍实体分割了,请您自行参考第八章的fdisk来达成底下的范例:(注意:修改系统识别码请使用t这个fdisk内的命令来处理即可)[root@~]#fdisk/dev/hda==其他流程请自行参考第八章处理[root@~]#partprobe==别忘记这个动作了!粉重要![root@~]#fdisk-lDisk/dev/hda:41.1GB,41174138880bytes255heads,63sectors/track,5005cylindersUnits=cylindersof16065*512=8225280bytesDeviceBootStartEndBlocksIdSystem/dev/hda1*11310439183Linux/dev/hda214128810241437+83Linux/dev/hda3128919255116702+83Linux/dev/hda419265005247401005Extended/dev/hda519262052102009682Linuxswap/Solaris/dev/hda62053223514699168eLinuxLVM/dev/hda72236241814699168eLinuxLVM/dev/hda82419260114699168eLinuxLVM/dev/hda92602278414699168eLinuxLVM上面的/dev/hda{6,7,8,9}这四个分割槽就是我们的实体分割槽!也就是底下会实际用到的资讯!注意看,那个8e的出现会导致system变成『LinuxLVM』哩!其实没有配置成为8e也没关系,不过某些LVM的侦测命令可能会侦测不到该partition就是了!接下来,就一个一个的处理各流程吧!PV阶段要创建PV其实很简单,只要直接使用pvcreate即可!我们来谈一谈与PV有关的命令吧!pvcreate:将实体partition创建成为PV;pvscan:搜寻目前系统里面任何具有PV的磁碟;pvdisplay:显示出目前系统上面的PV状态;pvremove:将PV属性移除,让该partition不具有PV属性。那就直接来瞧一瞧吧!#1.检查有无PV在系统上,然后将/dev/hda6~/dev/hda9创建成为PV格式[root@~]#pvscanNomatchingphysicalvolumesfound==找不到任何的PV存在喔![root@~]#pvcreate/dev/hda{6,7,8,9}Physicalvolume/dev/hda6successfullycreatedPhysicalvolume/dev/hda7successfullycreatedPhysicalvolume/dev/hda8successfullycreatedPhysicalvolume/dev/hda9successfullycreated#这个命令可以一口气创建这四个partition成为PV啦!注意大括号的用途[root@~]#pvscanPV/dev/hda6lvm2[1.40GB]PV/dev/hda7lvm2[1.40GB]PV/dev/hda8lvm2[1.40GB]PV/dev/hda9lvm2[1.40GB]Total:4[5.61GB]/inuse:0[0]/innoVG:4[5.61GB]#这就分别显示每个PV的资讯与系统所有PV的资讯。尤其最后一行,显示的是:#整体PV的量/已经被使用到VG的PV量/剩余的PV量#2.更详细的列示出系统上面每个PV的个别资讯:[root@~]#pvdisplay/dev/hda6isanewphysicalvolumeof1.40GB---NEWPhysicalvolume---PVName/dev/hda6==实际的partition装置名称VGName==因为尚未分配出去,所以空白!PVSize1.40GB==就是容量说明AllocatableNO==是否已被分配,结果是NOPESize(KByte)0==在此PV内的PE大小TotalPE0==共分割出几个PEFreePE0==没被LV用掉的PEAllocatedPE0==尚可分配出去的PE数量PVUUIDZ13Jk5-RCls-UJ8B-HzDa-Gesn-atku-rf2biN....(底下省略)....#由於PE是在创建VG时才给予的参数,因此在这里看到的PV里头的PE都会是0#而且也没有多余的PE可供分配(allocatable)。讲是很难,作是很简单!这样就将PV创建了两个罗!简单到不行吧!^_^!继续来玩VG去!VG阶段创建VG及VG相关的命令也不少,我们来看看:vgcreate:就是主要创建VG的命令啦!他的参数比较多,等一下介绍。vgscan:搜寻系统上面是否有VG存在?vgdisplay:显示目前系统上面的VG状态;vgextend:在VG内添加额外的PV;vgreduce:在VG内移除PV;vgchange:配置VG是否启动(active);vgremove:删除一个VG啊!
本文标题:Linux 磁盘管理之LVM详解
链接地址:https://www.777doc.com/doc-3382261 .html