lvm使用手册


所属类别:Linux

文章作者:todayboy

特别推荐:免费发布信息 承包关键词~~抢爆了!HOT!


source:http://blog.donews.com/letviva/archive/2006/06/02/899745.aspx1.1什么是LVM? LVM是LogicalVolumeManager(逻辑卷管理)的简写,它由HeinzMauelshagen在Linux2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版1.1.0-rc2,以及LVM2开发版。 与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为应用与用户分配存储空间。在LVM管理下的存储卷可以按需要随时改变大小与移除(可能需对文件系统工具进行升级)。LVM也允许按用户组对存储卷进行管理,允许管理员用更直观的名称(如"sales'、'development')代替物理磁盘名(如'sda'、'sdb')来标识存储卷。 1.2为什么使用LVM? LVM通常用于装备大量磁盘的系统,但它同样适于仅有一、两块硬盘的小系统。 1.2.1小系统使用LVM的益处 传统的文件系统是基于分区的,一个文件系统对应一个分区。这种方式比较直观,但不易改变: 1.不同的分区相对独立,无相互联系,各分区空间很易利用不平衡,空间不能充分利用; 2.当一个文件系统/分区已满时,无法对其扩充,只能采用重新分区/建立文件系统,非常麻烦;或把分区中的数据移到另一个更大的分区中;或采用符号连接的方式使用其它分区的空间。 3.如果要把硬盘上的多个分区合并在一起使用,只能采用再分区的方式,这个过程需要数据的备份与恢复。 当采用LVM时,情况有所不同: 1.硬盘的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间; 2.文件系统建立在逻辑卷上,而逻辑卷可根据需要改变大小(在卷组容量范围内)以满足要求; 3.文件系统建立在LVM上,可以跨分区,方便使用; 1.2.2大系统使用LVM的益处 在使用很多硬盘的大系统中,使用LVM主要是方便管理、增加了系统的扩展性。 在一个有很多不同容量硬盘的大型系统中,对不同的用户的空间分配是一个技巧性的工作,要在用户需求与实际可用空间中寻求平衡。 用户/用户组的空间建立在LVM上,可以随时按要求增大,或根据使用情况对各逻辑卷进行调整。当系统空间不足而加入新的硬盘时,不必把用户的数据从原硬盘迁移到新硬盘,而只须把新的分区加入卷组并扩充逻辑卷即可。同样,使用LVM可以在不停服务的情况下。把用户数据从旧硬盘转移到新硬盘空间中去。 2LVM构成 LVM的结构简图如下: hda1hdc1sdc(PV:s物理卷,一般为分区或整个硬盘) \|/ \|/ diskvg(VG卷组由物理卷组成) /\ /\ usrlvrootlvvarlv(LV:s逻辑卷在卷组上创建) ext2reiserfsxfs(建立在逻辑卷上的文件系统) 2.1卷组volumegroup(VG) 卷组是LVM中最高抽象层,是由一个或多个物理卷所组成的存储器池。 2.2物理卷physicalvolume(PV) 典型的物理卷是硬盘分区,但也可以是整个硬盘或已创建的SoftwareRAID卷。 2.3逻辑卷logicalvolume(LV) 逻辑卷相当于非LVM系统中的分区,它在卷组上建立,是一个标准的块设备,可以在其上建立文件系统。 2.4物理块physicalextent(PE) 物理卷按大小相等的“块”为单位存储,块的大小与卷组中逻辑卷块的大小相同。 2.5逻辑块logicalextent(LE) 逻辑卷按“块”为单位存储,在一卷组中的所有逻辑卷的块大小是相同的。 2.6总述 例子:有一个卷组VG1,它的物理块大小为4MB。在这个卷组中为2个硬盘分区:/dev/hda1与/dev/hdb1,它们分别成为物理卷PV1与PV2。物理卷将按4MB为单位分块,如PV1与PV2分别可分为99与248块。在VG1上建立逻辑卷,它的大小可在1至347(99+248)块之间。当建立逻辑卷时,会建立逻辑块与物理块的一一映射关系。 2.7映射模式(linear/striped) 在建立逻辑卷时,可以选择逻辑块与物理块映射的策略: 1.线性映射-将把一定范围的物理块按顺序分配给逻辑卷,如LV的LE1–99映射到PV1,LE100–347映射到PV2。 2.交错模式-将把逻辑块交错映射到不同的物理卷中,如LV的LE1映射为PV1的PE1,LE2映射为PV2的PE1,LE3映射为PV1的PE2...。这种方式可以提高逻辑卷的性能,但是采用这种方式建立的逻辑卷将不能在它们所在的物理卷中扩展。 2.8Snapshots(快照) LVM提供了一个非常好的特性:snapshots。它允许管理员建立一个块设备:该设备是一逻辑卷在某一时刻冻结的精确拷贝。这个特性通常用于批处理过程(如备份)需要处理逻辑卷,但又不能停止系统。当操作完成时,snapshot设备可以被移除。这个特性要求在建立snapshot设备时逻辑卷处于相容状态。 3LVM的一般操作 3.1建立PV 为把一个磁盘或分区作为PV,首先应使用pvcreate对其初始化,如对IDE硬盘/dev/hdb, "使用整个磁盘, #pvcreate/dev/hdb 这将在磁盘上建立VG的描述符。 "使用磁盘分区,如/dev/hdb1。 使用fdisk的t命令把/dev/hda1的分区类型设为0x8e,然后运行: #pvcreate/dev/hdb1 这将在分区/dev/hda1上建立VG的描述符。 PV初始化命令pvcreate的一般用法为: pvcreatePV1[PV2...] 它的参数可以是整个磁盘、分区,也可以是一loop设备。 3.2建立VG 在使用pvcreate建立了PV后,可以用vgcreate建立卷组,如有PV1、PV2分别是/dev/hda1与/dev/hdb1,使用 #vgcreatetestvg/dev/hda1/dev/hdb1 将建立一个名为testvg的卷组,它由两个PV:/dev/hda1与/dev/hdb1组成。vgcreate的一般用法为: #vgcreate[options]VG_namePV1[PV2...] 其中的可选项包括设置VG最大支持的LV数、PE大小(缺省为4MB)等。 注意:当使用devfs系统时,应使用设备的全名而不能是SymbolLink,如对上例应为: #vgcreatetestvg/dev/ide/host0/bus0/target0/lun0/part1\ /dev/ide/host0/bus0/target1/lun0/part1 3.3激活VG 在被激活之前,VG与LV是无法访问的,这时可用命令: #vgchange-aytestvg 激活所要使用的卷组。当不再使用VG时,可用 #vgchange-antestvg 使之不再可用。 vgchange可用来设置VG的一些参数,如是否可用(-a[yn]选项)、支持最大逻辑卷数等。 3.4移除VG 在移除一卷组前应确认卷组中不再有逻辑卷,首先休眠卷组: #vgchange-antestvg 然后可用vgremove移除该卷组: #vgremovetestvg 3.5为VG增加新PV 当卷组空间不足时,可以加入新的物理卷来扩大容量,这时可用命令vgextend,如 #vgextendtestvg/dev/hdc1 其中/dev/hdc1是新的PV,当然在这之前,它应使用pvcreate初始化。 3.6从VG移除PV 在移除PV之前,应确认该PV没用被LV使用,这可用命令pvdisplay查看,如: #pvdisplay/dev/hda1 ---Physicalvolume--- PVName/dev/hda1 VGNametestvg PVSize1.95GB/NOTusable4MB[LVM:122KB] PV#1 PVStatusavailable Allocatableyes(butfull) CurLV1 PESize(KByte)4096 TotalPE499 FreePE0 AllocatedPE499 PVUUIDSd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7 如这个PV仍在被使用,则应把数据传移到其它PV上。在确认它未被使用后,可用命令vgreduce把它从VG中删除,如: #vgreducetestvg/dev/hda1 3.7创建LV 在创建逻辑卷前,应决定LV使用哪些PV,这可用命令vgdisplay与pvdisplay查看当前卷组与PV的使用情况。在已有的卷组上创建逻辑卷使用命令lvcreate,如: #lvcreate-L1500-ntestlvtestvg 将在卷组testvg上建立一个1500MB的线性LV,其命名为testlv,对应的块设备为/dev/testvg/testlv。 #lvcreate-i2-I4-l100-nanothertestlvtestvg 将在卷组testvg上建立名为anothertestlv的LV,其大小为100LE,采用交错方式存放,交错值为2,块大小为4KB。 如果需要LV使用整个VG,可首先用vgdisplay查找TotalPE值,然后在运行lvcreate时指定,如: #vgdisplaytestvggrep"TotalPE" TotalPE10230 #lvcreate-l10230testvg-nmylv 将使用卷组testvg的全部空间创建逻辑卷mylv。 在创建逻辑卷后,就可在其上创建文件系统并使用它。 命令lvcreate的常用方法: lvcreate[options]-n逻辑卷名卷组名[PV1...] 其中的常用可选项有: "-iStripes:采用交错(striped)方式创建LV,其中Stripes指卷组中PV的数量。 "-IStripe_size:采用交错方式时采用的块大小(单位为KB),Stripe_size必须为2的指数:2N,N=2,3...9。 "-lLEs:指定LV的逻辑块数。 "-Lsize:指定LV的大小,其后可以用K、M、G表示KB、MB、GB。 "-s:创建一已存在LV的snapshot卷。 "-nname:为LV指定名称。 3.8删除LV 为删除一个逻辑卷,必须首先从系统卸载其上的文件系统,然后可用lvremove删除,如: #umount/dev/testvg/testlv #lvremove/dev/testvg/testlv lvremove--doyoureallywanttoremove"/dev/testvg/testlv"?[y/n]:y lvremove--doingautomaticbackupofvolumegroup"testvg" lvremove--logicalvolume"/dev/testvg/testlv"successfullyremoved 3.9扩展LV 为逻辑卷增加容量可用使用lvextend,即可以指定要增加的尺寸也可以指定扩容后的尺寸,如 #lvextend-L12G/dev/testvg/testlv lvextend--extendinglogicalvolume"/dev/testvg/testlv"to12GB lvextend--doingautomaticbackupofvolumegroup"testvg" lvextend--logicalvolume"/dev/testvg/testlv"successfullyextended 将扩大逻辑卷testlv的容量为12GB。 #lvextend-L+1G/dev/testvg/testlv lvextend--extendinglogicalvolume"/dev/testvg/testlv"to13GB lvextend--doingautomaticbackupofvolumegroup"testvg" lvextend--logicalvolume"/dev/testvg/testlv"successfullyextended 将为LVtestlv再增大容量1GB至13GB。 为LV扩容的一个前提是:LV所在的VG有足够的空闲存储空间可用。 在为LV扩容之后,应同时为LV之上的文件系统扩容,使二者相匹配。对不同的文件系统有相对应的扩容方法。 3.9.1ext2/ext3 除非内核已有ext2online补丁,否则在改变ext2/ext3文件系统的大小时应卸载它: #umount/dev/testvg/testlv #resize2fs/dev/testvg/testlv #mount/dev/testvg/testlv/home 这里假设testlv安装点为/home。在es2fsprogs-1.19或以上版本中包含resize2fs命令。 在LVM发行包中有一个称为e2fsadm的工具,它同时包含了lvextend与resize2fs的功能,如: #e2fsadm-L+1G/dev/testvg/testlv 等价于下面两条命令: #lvextend-L+1G/dev/testvg/testlv #resize2fs/dev/testvg/testlv 但用户仍需首先卸载文件系统。 3.9.2reiserfs 与ext2不同,Reiserfs不必卸载文件系统,如: #resize_reiserfs-f/dev/testvg/testvl 3.9.3xfs SGIXFS文件系统必须在安装的情况下才可改变大小,并且要使用安装点而不是块设备,如: #xfs_growfs/home 3.10缩小LV 逻辑卷可扩展同样也可缩小,但应在缩小LV之前首先减小文件系统,否则将可能导致数据丢失。 3.10.1ext2/ext3 可以使用LVM的工具e2fsadm操作,如: #umount/home #e2fsadm-L-1G/dev/testvg/testvl #mount/home 如果采用resize2fs,就必须知道缩少后卷的块数: #umount/home #resize2fs/dev/testvg/testvl524288 #lvreduce-L-1G/dev/testvg/testvl #mount/home 3.10.2reiserfs 在缩小reiserfs时,应首先卸载它,如: #umount/home #resize_reiserfs-s-1G/dev/testvg/testvl #lvreduce-L-1G/dev/testvg/testvl #mount-treiserfs/dev/testvg/testvl/home 3.10.3xfs 无法实现。 3.11在PV间转移数据 若要把一个PV从VG中移除,应首先把其上所有活动PE中的数据转移到其它PV上,而新的PV必须是本VG的一部分,有足够的空间。如要把PV1:/dev/hda1上的数据移到PV2:/dev/sda1上可用命令: #pvmove/dev/hdb1/dev/sdg1 如果在该PV之上的LV采用交错方式存放,则这个转移过程不能被打断。 建议在转移数据之前备份LV中的数据。 3.12系统启动/关闭 "为使系统启动时可自动激活并使用LVM,可将以下几行添加到启动rc脚本中: /sbin/vgscan /sbin/vgchange-ay 这些行将浏览所有可用的卷组并激活它们。要注意的是,它们应在安装卷组上的文件系统操作之前被执行,否则将无法正常安装文件系统。 "在系统关机时,要关闭LVM,这可将以下这行添加到关机rc脚本中,并确保它在卸装了所有文件系统后执行: /sbin/vgchange-an 4磁盘分区问题 4.1一个磁盘上的多个分区 LVM允许PV建立在几乎所有块设备上,如整个硬盘、硬盘分区、SoftRAID: #pvcreate/dev/sda1 #pvcreate/dev/sdf #pvcreate/dev/hda8 #pvcreate/dev/hda6 #pvcreate/dev/md1 所以在一块硬盘上可以有多个PV/分区,但一般建议一块硬盘上只有一个PV: "便于管理,易于处理错误 "避免交错方式中性能下降。LVM不能辨别两个PV是否在同一硬盘上,故当采用交错方式时,会导致性能更差。 但在某些情况下可采用: "把已存在的系统合并到LVM中。在一个只有少数硬盘的系统中,转换为LVM时需在在各分区之间转移数据。 "把一个大硬盘分给不同的VG使用。 当一个VG的有不同的PV在同一硬盘时,创建交错方式的LV时应注意使用哪一个PV。 4.2Sundisklabels 仅在SUN的SPARC系统中有此问题。 5建立LVM用例 在本节中,将在3块SCSI硬盘:/dev/sda,/dev/sdb,/dev/sdc上按步建立LVM。 5.1准备分区 首先要做的是初始化硬盘,建立PV,这将会删除硬盘上的原有数据。在此,用整个硬盘为PV: #pvcreate/dev/sda #pvcreate/dev/sdb #pvcreate/dev/sdc pvcreate在每个硬盘的起始端建立卷组描述区(volumegroupdescriptorarea,VGDA)。 5.2创建卷组 利用上面三个PV建立卷组: #vgcreatetest_vg/dev/sda/dev/sdb/dev/sdc/ 然后可用vgdisplay查看/验证卷组的信息: #vgdisplay ---VolumeGroup--- VGNametest_vg VGAccessread/write VGStatusavailable/resizable VG#1 MAXLV256 CurLV0 OpenLV0 MAXLVSize255.99GB MaxPV256 CurPV3 ActPV3 VGSize1.45GB PESize4MB TotalPE372 AllocPE/Size0/0 FreePE/Size372/1.45GB VGUUIDnP2PY5-5TOS-hLx0-FDu0-2a6N-f37x-0BME0Y 其中最重要的前三条要正确,且VSsize是以上三个硬盘容量之和。 5.3建立LV 在确定卷组test_vg正确后,就可在其上创建LV。LV的大小可在VG大小范围内任意选择,如同在硬盘上分区。 5.3.1建立线性方式LV 在test_vg上建立一个大小为1GB的线性方式LV: #lvcreate-L1G-ntest_lvtest_vg lvcreate--doingautomaticbackupof"test_vg" lvcreate--logicalvolume"/dev/test_vg/test_lv"successfullycreated 5.3.2建立交错方式LV 在test_vg上建立一个大小为1GB的交错方式LV,交错参数为4KB: #lvcreate-i3-I4-L1G-ntest_lvtest_vg lvcreate--rounding1048576KBtostripeboundarysize1056768KB/258PE lvcreate--doingautomaticbackupof"test_vg" lvcreate--logicalvolume"/dev/test_vg/test_lv"successfullycreated 注意:如果使用-i2参数,则LV将仅使用test_vg中的两块硬盘。 5.4建立文件系统 在LVtest_lv创建后,就可在其上建立文件系统, 如,ext2/ext3系统: #mke2fs/dev/test_vg/test_lv 如,reiserfs: #mkreiserfs/dev/test_vg/test_lv 5.5测试文件系统 安装LV: #mount/dev/test_vg/test_lv/mnt #df Filesystem1k-blocksUsedAvailableUse%Mountedon /dev/hda1131155262882461610451%/ /dev/test_vg/test_lv1040132209872760%/mnt 则可以通过/mnt访问LV。 6使用snapshot做备份 例如我们要对卷组"test_vg"每晚进行数据库备份,就要采用snapshot类型的卷组。这种卷组是其它卷组的一个只读拷贝,它含有在创建snapshot卷组时原卷组的所有数据,这意味你可以备份这个卷组而不用担心在备份过程中数据会改变,也不需要暂时关闭数据库卷以备份。 6.1建立snapshot卷 一个snapshot卷可大可小,但必须有足够的空间存放所有在本snapshot卷生存期间改变的数据,一般最大要求是原卷组的1.1倍。如空间不够,snapshot卷将不能使用。 #lvcreate-L592M-s-ndbbackup/dev/test_vg/databases lvcreate--WARNING:thesnapshotmustbedisabledifitgetsfull lvcreate--INFO:usingdefaultsnapshotchunksizeof64KBfor"/dev/test_vg/dbbackup" lvcreate--doingautomaticbackupof"test_vg" lvcreate--logicalvolume"/dev/test_vg/dbbackup"successfullycreated 6.2安装snapshot卷 现在可以安装该卷: #mkdir/mnt/test_vg/dbbackup #mount/dev/test_vg/dbbackup/mnt/test_vg/dbbackup mount:blockdevice/dev/test_vg/dbbackupiswrite-protected,mountingread-only 从上面可以看出,snapshot卷是只读的。 当使用XFS文件系统时,mount命令要使用nouuid与norecovery选项: #mount/dev/test_vg/dbbackup/mnt/test_vg/dbbackup-onouuid,norecovery,ro 6.3备份数据 如采用tar向磁带备份: #tar-cf/dev/rmt0/mnt/test_vg/dbbackup 6.4删除snapshot卷 在完成备份后,就可卸载并删除snapshot卷。 #umount/mnt/test_vg/dbbackup #lvremove/dev/test_vg/dbbackup lvremove--doyoureallywanttoremove"/dev/test_vg/dbbackup"?[y/n]:y lvremove--doingautomaticbackupofvolumegroup"test_vg" lvremove--logicalvolume"/dev/test_vg/dbbackup"successfullyremoved 7更换卷组硬盘 由于某种原因,需要用新的硬盘替代卷组中的旧硬盘,如用一SCSI硬盘替换IDE硬盘,其步骤为: 7.1准备/初始化新硬盘 首先用pvcreate命令初始化新的硬盘,如使用整个硬盘: #pvcreate/dev/sdf pvcreate--physicalvolume"/dev/sdf"successfullycreated 7.2加入卷组 把新硬盘加入卷组: #vgextendtest_vg/dev/sdf vgextend--INFO:maximumlogicalvolumesizeis255.99Gigabyte vgextend--doingautomaticbackupofvolumegroup"test_vg" vgextend--volumegroup"test_vg"successfullyextended 7.3数据搬家 在移除旧硬盘前,要把其上的数据转移到新硬盘上。在转移数据时,不要求卸载文件系统,但建议在数据转移前进行备份,以防转移进程中意外导致数据丢失。 pvmove用来实现数据转移,根据数据量的多少,它可能要使用大量的时间,并可降低逻辑卷的性能,因此要在系统不太忙时操作。 #pvmove/dev/hdb/dev/sdf pvmove--movingphysicalextentsinactivevolumegroup"test_vg" pvmove--WARNING:movingofactivelogicalvolumesmaycausedataloss! pvmove--doyouwanttocontinue?[y/n]y pvmove--249extentsofphysicalvolume"/dev/hdb"successfullymoved 7.4移除未用硬盘 当数据被转移到其它硬盘后,就可以从卷组中删除这块不再使用的硬盘: #vgreducedev/dev/hdb vgreduce--doingautomaticbackupofvolumegroup"test_vg" vgreduce--volumegroup"test_vg"successfullyreducedbyphysicalvolume: vgreduce--/dev/hdb 从此,卷组test_vg不再使用IDE硬盘/dev/hdb,这块硬盘可以从机器中拆下或用作它途。 8迁移卷组到其它系统 把一个卷组转移到其它系统是很容易的(如更换服务器),这要用命令vgexport与vgimport。 8.1卸载文件系统 为整体搬迁卷组,应首先把它从文件系统中卸载,如: #unmount/mnt/design/users 8.2设置卷组为非活动状态 把卷组从内核中卸载,以避免任何对它可能的操作: #vgchange-antest_vg vgchange--volumegroup"test_vg"successfullydeactivated 8.3Export卷组 这个操作不是必须的,便它可以防止系统对卷组的访问: #vgexporttest_vg vgexport--volumegroup"test_vg"sucessfullyexported 当机器关机后,构成卷组的硬盘就可被转移到新的服务器上。 8.4Import卷组 在新的服务器上,可用pvscan查看卷组情况,如在这台计算机上,硬盘新的设备为/dev/sdb,使用pvscan可有: #pvscan pvscan--readingallphysicalvolumes(thismaytakeawhile...) pvscan--inactivePV"/dev/sdb1"isinEXPORTEDVG"test_vg"[996MB/996MBfree] pvscan--inactivePV"/dev/sdb2"isinEXPORTEDVG"test_vg"[996MB/244MBfree] pvscan--total:2[1.95GB]/inuse:2[1.95GB]/innoVG:0[0] 现可以import卷组test_vg(同时也激活它)以安装其上的文件系统 #vgimporttest_vg/dev/sdb1/dev/sdb2 vgimport--doingautomaticbackupofvolumegroup"test_vg" vgimport--volumegroup"test_vg"successfullyimportedandactivated 8.5安装文件系统 #mkdir-p/mnt/design/users #mount/dev/test_vg/users/mnt/design/users 在完成以上操作后,原卷组在新的服务器上就可使用了。 9分割卷组 这种情况是:需要在系统中加入新的卷组,但没有其它可用新硬盘,而已有的卷组中还有大量空间可用。如向系统加入一个"design"卷组。 9.1检查可用空间 #pvscan pvscan--readingallphysicalvolumes(thismaytakeawhile...) pvscan--ACTIVEPV"/dev/sda"ofVG"dev"[1.95GB/0free] pvscan--ACTIVEPV"/dev/sdb"ofVG"sales"[1.95GB/1.27GBfree] pvscan--ACTIVEPV"/dev/sdc"ofVG"ops"[1.95GB/564MBfree] pvscan--ACTIVEPV"/dev/sdd"ofVG"dev"[1.95GB/0free] pvscan--ACTIVEPV"/dev/sde"ofVG"ops"[1.95GB/1.9GBfree] pvscan--ACTIVEPV"/dev/sdf"ofVG"dev"[1.95GB/1.33GBfree] pvscan--ACTIVEPV"/dev/sdg1"ofVG"ops"[996MB/432MBfree] pvscan--ACTIVEPV"/dev/sdg2"ofVG"dev"[996MB/632MBfree] pvscan--total:8[13.67GB]/inuse:8[13.67GB]/innoVG:0[0] 我们决定把/dev/sdg1与/dev/sdg2分配组design,但首先要把其上的物理块移到其它卷的空闲空间中(如把卷组dev移到/dev/sdf,卷组ops移到/dev/sde)。 9.2从选定硬盘移出数据 由于硬盘上的逻辑卷仍在使用,故首先要转移它们的数据。 把所有在使用的物理块从/dev/sdg1上转移到/dev/sde,及从/dev/sdg2转移到/dev/sdf。 #pvmove/dev/sdg1/dev/sde pvmove--movingphysicalextentsinactivevolumegroup"ops" pvmove--WARNING:movingofactivelogicalvolumesmaycausedataloss! pvmove--doyouwanttocontinue?[y/n]y pvmove--doingautomaticbackupofvolumegroup"ops" pvmove--141extentsofphysicalvolume"/dev/sdg1"successfullymoved #pvmove/dev/sdg2/dev/sdf pvmove--movingphysicalextentsinactivevolumegroup"dev" pvmove--WARNING:movingofactivelogicalvolumesmaycausedataloss! pvmove--doyouwanttocontinue?[y/n]y pvmove--doingautomaticbackupofvolumegroup"dev" pvmove--91extentsofphysicalvolume"/dev/sdg2"successfullymoved 9.3创建新卷组 现在把/dev/sdg2从卷组dev从分割出并加入到新卷组design中。我们可用vgreduce与vgcreate完成工作,但vgsplit此时更方便: #vgsplitdevdesign/dev/sdg2 vgsplit--doingautomaticbackupofvolumegroup"dev" vgsplit--doingautomaticbackupofvolumegroup"design" vgsplit--volumegroup"dev"successfullysplitinto"dev"and"design" 9.4移除剩余的卷 接下来的工作把/dev/sdg1从卷组ops中分出并加入卷组design: #vgreduceops/dev/sdg1 vgreduce--doingautomaticbackupofvolumegroup"ops" vgreduce--volumegroup"ops"successfullyreducedbyphysicalvolume: vgreduce--/dev/sdg1 #vgextenddesign/dev/sdg1 vgextend--INFO:maximumlogicalvolumesizeis255.99Gigabyte vgextend--doingautomaticbackupofvolumegroup"design" vgextend--volumegroup"design"successfullyextended 9.5建立新逻辑卷及文件系统 在卷组design上建立逻辑卷,为今后的方便,现只使用一部分空间: #lvcreate-L750M-nusersdesign lvcreate--roundingupsizetophysicalextentboundary"752MB" lvcreate--doingautomaticbackupof"design" lvcreate--logicalvolume"/dev/design/users"successfullycreated #mke2fs/dev/design/users mke2fs1.18,11-Nov-1999forEXT2FS0.5b,95/08/09 Filesystemlabel= OStype:Linux Blocksize=4096(log=2) Fragmentsize=4096(log=2) 96384inodes,192512blocks 9625blocks(5.00<!--)reservedforthesuperuser Firstdatablock=0 6blockgroups 32768blockspergroup,32768fragmentspergroup 16064inodespergroup Superblockbackupsstoredonblocks: 32768,98304,163840 Writinginodetables:done Writingsuperblocksandfilesystemaccountinginformation:done #mkdir-p/mnt/design/users #mount/dev/design/users/mnt/design/users/ 现在就可使用卷组design。为方便使用,可把下面一行加入文件/etc/fstab中: /dev/design/user/mnt/design/usersext2defaults12 10转变根文件系统为LVM 注意:强烈要求在进行下面的操作前对系统进行备份,并且把/文件系统建立在LVM上会导致系统升级很复杂。 在下面的例子中,系统除了/boot外都安装在同一个分区中,文件系统的情况为: /dev/hda1/boot /dev/hda2swap /dev/hda3/ 进行转换的一个必要条件是硬盘上还有足够的空间给分区/dev/hda4创立LVM并把/分区的内容都复制到LVM上,否则: 1./分区还有至少一半空间空闲,可以缩减/分区,并把分出的空间划分到分区/dev/hda4; 为方便可用GNUparted工具:ftp://ftp.gnu.org/pub/gnu/parted;它可缩减带有文件系统的分区。同样也可用resize2fs与fdisk完成这个操作; 2.硬盘上已无足够空间,必须使用第二块硬盘,如/dev/hdb。 在完成以上准备及备份系统后,可继续以下步骤: 1.确认使用的Linux内核支持LVM,并且在编译时设置了CONFIGBLKDEVRAM与CONFIGBLKDEVINITRD。 2.设置/dev/hda4分区类型为LVM(8e): #fdisk/dev/hda Command(mforhelp):t Partitionnumber(1-4):4 Hexcode(typeLtolistcodes):8e Changedsystemtypeofpartition4to8e(Unknown) Command(mforhelp):w 3.设置LVM: "初始化LVM(vgscan) #vgscan "转变分区为PV: #pvcreate/dev/hda4 "建立卷组: #vgcreatevg/dev/hda4 "建立逻辑卷用以存放根系统:(这里假设空间为250MB) #lvcreate-L250Mrootvg 4.在逻辑卷上建立文件系统并把系统复制到其上: #mke2fs/dev/vg/root #mount/dev/vg/root/mnt/ #find/-xdevcpio-pvmd/mnt 5.修改新系统的fstab文件/mnt/etc/fstab,使/安装到/dev/vg/root: /dev/hda3/ext2defaults11 改变为: /dev/vg/root/ext2defaults11 6.创建LVM初始化RAM盘: #lvmcreate_initrd 此处要确认为lvmcreate_init给出正确的initrdimage文件名,它应在/boot/目录下。 7.在/etc/lilo.conf中为LVM加入新入口项,其形式如下: image=/boot/KERNEL_IMAGE_NAME label=lvm root=/dev/vg/root initrd=/boot/INITRD_IMAGE_NAME ramdisk=8192 此处KERNELIMAGENAME是支持LVM的内核,INITRDIMAGENAME指由lvmcreate_initrd建立的initrdimage。如果LVM的配置很多,可以把ramdisk设置的大一些:此处为8192,缺省为4096。在lvmcrate_initrd的输出中有如下一行: lvmcreate_initrd--makingloopbackfile(6189kB) 其中括号中的数值为实际所需大小。 8.运行LILO,设置BOOT扇区: #lilo 9.重启计算机,在LILO提示符处输入"lvm"启动计算机,此时系统的根文件系统是新建立的逻辑卷。此后可在LILO配置文件/etc/lilo.conf中加入以下一行: default=lvm 并运行lilo设置缺省启动项为lvm。 如果系统未能正常启动,可能的原因是内核不支持LVM、initrdimage不正确等等。 10.在正常启动后,就可把硬盘其它分区:/dev/hda3加入LVM。 "首先设置分区类型为8e(LVM) #fdisk/dev/hda Command(mforhelp):t Partitionnumber(1-4):3 Hexcode(typeLtolistcodes):8e Changedsystemtypeofpartition3to8e(Unknown) Command(mforhelp):w "把它初始化为PV,并加入卷组中: #pvcreate/dev/hda3 #vgextendvg/dev/hda3 11共享LVM卷 LVM不支持物理共享访问,这会导致数据的丢失。 在使用fibre-channel或shared-SCSI的环境中,多台计算机以物理方式直接访问一组硬盘,于是可以使用LVM把这些硬盘分为不同的逻辑卷。如果需要共享数据,则应使用GFS。 12参考文献 AJLewis,LVMHOWTO,(http://tldp.org/HOWTO/LVM-HOWTO/),SistinaSoftware,Inc。

相关信息

· 改进大型数据库的管理:管理分区表

· 各个击破Linux病毒 保护Linux安全

·  Sun发布正式版NetBeans IDE 6.5

· Web安装程序不能选择安装目录问题(2)








....

92709 81211