Linux下分区详细介绍

1 简介1.1 什么是LVM?LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.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可以在不停服务的情况下。把用户数据从旧硬盘转移到新硬盘空间中去。2 LVM构成LVM的结构简图如下:hda1 hdc1 sdc (PV:s 物理卷,一般为分区或整个硬盘)\ | /\ | /diskvg (VG 卷组由物理卷组成)/ | \/ | \usrlv rootlv varlv (LV:s 逻辑卷在卷组上创建)| | |ext2 reiserfs xfs (建立在逻辑卷上的文件系统)2.1 卷组volume group (VG)卷组是LVM中最高抽象层,是由一个或多个物理卷所组成的存储器池。2.2 物理卷physical volume (PV)典型的物理卷是硬盘分区,但也可以是整个硬盘或已创建的Software RAID 卷。2.3 逻辑卷logical volume (LV)逻辑卷相当于非LVM系统中的分区,它在卷组上建立,是一个标准的块设备,可以在其上建立文件系统。2.4 物理块physical extent (PE)物理卷按大小相等的“块”为单位存储,块的大小与卷组中逻辑卷块的大小相同。2.5 逻辑块logical extent (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的LE 1 ? 99映射到PV1,LE 100 ? 347映射到PV2。2.交错模式-将把逻辑块交错映射到不同的物理卷中,如 LV的LE 1映射为PV1的PE1,LE 2映射为PV2的PE1,LE 3映射为PV1的PE2…。这种方式可以提高逻辑卷的性能,但是采用这种方式建立的逻辑卷将不能在它们所在的物理卷中扩展。2.8 Snapshots (快照)LVM提供了一个非常好的特性:snapshots。它允许管理员建立一个块设备:该设备是一逻辑卷在某一时刻冻结的精确拷贝。这个特性通常用于批处理过程(如备份)需要处理逻辑卷,但又不能停止系统。当操作完成时,snapshot设备可以被移除。这个特性要求在建立snapshot设备时逻辑卷处于相容状态。3 LVM的一般操作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的一般用法为:pvcreate PV1 [ PV2 … ]它的参数可以是整个磁盘、分区,也可以是一loop设备。3.2 建立VG在使用pvcreate 建立了PV后,可以用vgcreate 建立卷组,如有PV1、PV2分别是/dev/hda1与/dev/hdb1,使用# vgcreate testvg /dev/hda1 /dev/hdb1将建立一个名为testvg的卷组,它由两个PV:/dev/hda1与/dev/hdb1组成。vgcreate的一般用法为:# vgcreate [options] VG_name PV1 [PV2 …]其中的可选项包括设置VG最大支持的LV数、PE大小(缺省为4MB)等。注意:当使用devfs系统时,应使用设备的全名而不能是Symbol Link,如对上例应为:# vgcreate testvg /dev/ide/host0/bus0/target0/lun0/part1\/dev/ide/host0/bus0/target1/lun0/part13.3 激活VG在被激活之前,VG与LV是无法访问的,这时可用命令:# vgchange -a y testvg激活所要使用的卷组。当不再使用VG时,可用# vgchange -a n testvg使之不再可用。vgchange可用来设置VG的一些参数,如是否可用( -a [y|n]选项)、支持最大逻辑卷数等。3.4 移除VG在移除一卷组前应确认卷组中不再有逻辑卷,首先休眠卷组:# vgchange -a n testvg然后可用vgremove移除该卷组:# vgremove testvg3.5 为VG增加新PV当卷组空间不足时,可以加入新的物理卷来扩大容量,这时可用命令vgextend,如# vgextend testvg /dev/hdc1其中/dev/hdc1是新的PV,当然在这之前,它应使用pvcreate初始化。3.6 从VG移除PV在移除PV之前,应确认该PV没用被LV使用,这可用命令pvdisplay查看,如:# pvdisplay /dev/hda1— Physical volume —PV Name /dev/hda1VG Name testvgPV Size 1.95 GB / NOT usable 4 MB [LVM: 122 KB]PV# 1PV Status availableAllocatable yes (but full)Cur LV 1PE Size (KByte) 4096Total PE 499Free PE 0Allocated PE 499PV UUID Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7如这个PV仍在被使用,则应把数据传移到其它PV上。在确认它未被使用后,可用命令vgreduce把它从VG中删除,如:# vgreduce testvg /dev/hda13.7 创建LV在创建逻辑卷前,应决定LV使用哪些PV,这可用命令vgdisplay与pvdisplay查看当前卷组与PV的使用情况。在已有的卷组上创建逻辑卷使用命令lvcreate,如:# lvcreate -L1500 -ntestlv testvg将在卷组testvg上建立一个1500MB的线性LV,其命名为testlv,对应的块设备为/dev/testvg/testlv。# lvcreate -i2 -I4 -l100 -nanothertestlv testvg将在卷组testvg上建立名为anothertestlv的LV,其大小为100LE,采用交错方式存放,交错值为2,块大小为4KB。如果需要LV使用整个VG,可首先用vgdisplay 查找 Total PE 值,然后在运行lvcreate时指定,如:# vgdisplay testvg | grep “Total PE”Total PE 10230# lvcreate -l 10230 testvg -n mylv将使用卷组testvg的全部空间创建逻辑卷mylv。在创建逻辑卷后,就可在其上创建文件系统并使用它。命令lvcreate的常用方法:lvcreate [options] -n 逻辑卷名 卷组名 [PV1 … ]其中的常用可选项有:”-i Stripes :采用交错(striped)方式创建LV,其中Stripes指卷组中PV的数量。”-I Stripe_size :采用交错方式时采用的块大小(单位为KB),Stripe_size必须为2的指数:2N ,N=2,3…9。”-l LEs :指定LV的逻辑块数。”-L size :指定LV的大小,其后可以用K、M、G表示KB、MB、GB。”-s :创建一已存在LV的snapshot卷。”-n name :为LV指定名称。3.8 删除LV为删除一个逻辑卷,必须首先从系统卸载其上的文件系统,然后可用lvremove删除,如:# umount /dev/testvg/testlv# lvremove /dev/testvg/testlvlvremove — do you really want to remove “/dev/testvg/testlv”? [y/n]: ylvremove — doing automatic backup of volume group “testvg”lvremove — logical volume “/dev/testvg/testlv” successfully removed3.9 扩展LV为逻辑卷增加容量可用使用lvextend,即可以指定要增加的尺寸也可以指定扩容后的尺寸,如# lvextend -L12G /dev/testvg/testlvlvextend — extending logical volume “/dev/testvg/testlv” to 12 GBlvextend — doing automatic backup of volume group “testvg”lvextend — logical volume “/dev/testvg/testlv” successfully extended将扩大逻辑卷testlv的容量为12GB。# lvextend -L+1G /dev/testvg/testlvlvextend — extending logical volume “/dev/testvg/testlv” to 13 GBlvextend — doing automatic backup of volume group “testvg”lvextend — logical volume “/dev/testvg/testlv” successfully extended将为LV testlv再增大容量1GB至13GB。为LV扩容的一个前提是:LV所在的VG有足够的空闲存储空间可用。在为LV扩容之后,应同时为LV之上的文件系统扩容,使二者相匹配。对不同的文件系统有相对应的扩容方法。3.9.1 ext2/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.2 reiserfs与ext2不同,Reiserfs不必卸载文件系统,如:# resize_reiserfs -f /dev/testvg/testvl3.9.3 xfsSGI XFS文件系统必须在安装的情况下才可改变大小,并且要使用安装点而不是块设备,如:# xfs_growfs /home3.10 缩小LV逻辑卷可扩展同样也可缩小,但应在缩小LV之前首先减小文件系统,否则将可能导致数据丢失。3.10.1 ext2/ext3可以使用LVM的工具e2fsadm操作,如:# umount /home# e2fsadm -L-1G /dev/testvg/testvl# mount /home如果采用resize2fs,就必须知道缩少后卷的块数:# umount /home# resize2fs /dev/testvg/testvl 524288# lvreduce -L-1G /dev/testvg/testvl# mount /home3.10.2 reiserfs在缩小reiserfs时,应首先卸载它,如:# umount /home# resize_reiserfs -s-1G /dev/testvg/testvl# lvreduce -L-1G /dev/testvg/testvl# mount -treiserfs /dev/testvg/testvl /home3.10.3 xfs无法实现。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 -a y这些行将浏览所有可用的卷组并激活它们。要注意的是,它们应在安装卷组上的文件系统操作之前被执行,否则将无法正常安装文件系统。”在系统关机时,要关闭LVM,这可将以下这行添加到关机 rc 脚本中,并确保它在卸装了所有文件系统后执行:/sbin/vgchange -a n4 磁盘分区问题4.1 一个磁盘上的多个分区LVM允许PV建立在几乎所有块设备上,如整个硬盘、硬盘分区、Soft RAID:# 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.2 Sun disk labels仅在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/sdcpvcreate在每个硬盘的起始端建立卷组描述区( volume group descriptor area, VGDA)。5.2 创建卷组利用上面三个PV建立卷组:# vgcreate test_vg /dev/sda /dev/sdb /dev/sdc/然后可用vgdisplay 查看/验证卷组的信息:# vgdisplay— Volume Group —VG Name test_vgVG Access read/writeVG Status available/resizableVG # 1MAX LV 256Cur LV 0Open LV 0MAX LV Size 255.99 GBMax PV 256Cur PV 3Act PV 3VG Size 1.45 GBPE Size 4 MBTotal PE 372Alloc PE / Size 0 / 0Free PE / Size 372/ 1.45 GBVG UUID nP2PY5-5TOS-hLx0-FDu0-2a6N-f37x-0BME0Y其中最重要的前三条要正确,且VS size是以上三个硬盘容量之和。5.3 建立LV在确定卷组test_vg正确后,就可在其上创建LV。LV的大小可在VG大小范围内任意选择,如同在硬盘上分区。5.3.1 建立线性方式LV在test_vg上建立一个大小为1GB的线性方式LV:# lvcreate -L1G -ntest_lv test_vglvcreate — doing automatic backup of “test_vg”lvcreate — logical volume “/dev/test_vg/test_lv” successfully created5.3.2 建立交错方式LV在test_vg上建立一个大小为1GB的交错方式LV,交错参数为4KB:# lvcreate -i3 -I4 -L1G -ntest_lv test_vglvcreate — rounding 1048576 KB to stripe boundary size 1056768 KB / 258 PElvcreate — doing automatic backup of “test_vg”lvcreate — logical volume “/dev/test_vg/test_lv” successfully created注意:如果使用 -i2参数,则LV将仅使用test_vg中的两块硬盘。5.4 建立文件系统在LV test_lv创建后,就可在其上建立文件系统,如,ext2/ext3系统:# mke2fs /dev/test_vg/test_lv如,reiserfs:# mkreiserfs /dev/test_vg/test_lv5.5 测试文件系统安装LV:# mount /dev/test_vg/test_lv /mnt# dfFilesystem 1k-blocks Used Available Use% Mounted on/dev/hda1 1311552 628824 616104 51% //dev/test_vg/test_lv 1040132 20 987276 0% /mnt则可以通过/mnt访问LV。6 使用snapshot 做备份例如我们要对卷组”test_vg”每晚进行数据库备份,就要采用snapshot类型的卷组。这种卷组是其它卷组的一个只读拷贝,它含有在创建snapshot卷组时原卷组的所有数据,这意味你可以备份这个卷组而不用担心在备份过程中数据会改变,也不需要暂时关闭数据库卷以备份。6.1 建立snapshot卷一个snapshot卷可大可小,但必须有足够的空间存放所有在本snapshot卷生存期间改变的数据,一般最大要求是原卷组的1.1倍。如空间不够,snapshot卷将不能使用。# lvcreate -L592M -s -n dbbackup /dev/test_vg/databaseslvcreate — WARNING: the snapshot must be disabled if it gets fulllvcreate — INFO: using default snapshot chunk size of 64 KB for “/dev/test_vg/dbbackup”lvcreate — doing automatic backup of “test_vg”lvcreate — logical volume “/dev/test_vg/dbbackup” successfully created6.2 安装snapshot卷现在可以安装该卷:# mkdir /mnt/test_vg/dbbackup# mount /dev/test_vg/dbbackup /mnt/test_vg/dbbackupmount: block device /dev/test_vg/dbbackup is write-protected, mounting read-only从上面可以看出,snapshot卷是只读的。当使用XFS文件系统时,mount命令要使用nouuid与norecovery选项:# mount /dev/test_vg/dbbackup /mnt/test_vg/dbbackup -o nouuid,norecovery,ro6.3 备份数据如采用tar向磁带备份:# tar -cf /dev/rmt0 /mnt/test_vg/dbbackup6.4 删除snapshot 卷在完成备份后,就可卸载并删除snapshot卷。# umount /mnt/test_vg/dbbackup# lvremove /dev/test_vg/dbbackuplvremove — do you really want to remove “/dev/test_vg/dbbackup”? [y/n]: ylvremove — doing automatic backup of volume group “test_vg”lvremove — logical volume “/dev/test_vg/dbbackup” successfully removed7 更换卷组硬盘由于某种原因,需要用新的硬盘替代卷组中的旧硬盘,如用一SCSI硬盘替换IDE硬盘,其步骤为:7.1 准备/初始化新硬盘首先用pvcreate命令初始化新的硬盘,如使用整个硬盘:# pvcreate /dev/sdfpvcreate — physical volume “/dev/sdf” successfully created7.2 加入卷组把新硬盘加入卷组:# vgextend test_vg /dev/sdfvgextend — INFO: maximum logical volume size is 255.99 Gigabytevgextend — doing automatic backup of volume group “test_vg”vgextend — volume group “test_vg” successfully extended7.3 数据搬家在移除旧硬盘前,要把其上的数据转移到新硬盘上。在转移数据时,不要求卸载文件系统,但建议在数据转移前进行备份,以防转移进程中意外导致数据丢失。pvmove用来实现数据转移,根据数据量的多少,它可能要使用大量的时间,并可降低逻辑卷的性能,因此要在系统不太忙时操作。# pvmove /dev/hdb /dev/sdfpvmove — moving physical extents in active volume group “test_vg”pvmove — WARNING: moving of active logical volumes may cause data loss!pvmove — do you want to continue? [y/n] ypvmove — 249 extents of physical volume “/dev/hdb” successfully moved7.4 移除未用硬盘当数据被转移到其它硬盘后,就可以从卷组中删除这块不再使用的硬盘:# vgreduce dev /dev/hdbvgreduce — doing automatic backup of volume group “test_vg”vgreduce — volume group “test_vg” successfully reduced by physical volume:vgreduce — /dev/hdb从此,卷组test_vg不再使用IDE硬盘/dev/hdb,这块硬盘可以从机器中拆下或用作它途。8 迁移卷组到其它系统把一个卷组转移到其它系统是很容易的(如更换服务器),这要用命令vgexport与vgimport。8.1 卸载文件系统为整体搬迁卷组,应首先把它从文件系统中卸载,如:# unmount /mnt/design/users8.2 设置卷组为非活动状态把卷组从内核中卸载,以避免任何对它可能的操作:# vgchange -an test_vgvgchange — volume group “test_vg” successfully deactivated8.3 Export 卷组这个操作不是必须的,便它可以防止系统对卷组的访问:# vgexport test_vgvgexport — volume group “test_vg” sucessfully exported当机器关机后,构成卷组的硬盘就可被转移到新的服务器上。8.4 Import 卷组在新的服务器上,可用pvscan查看卷组情况,如在这台计算机上,硬盘新的设备为/dev/sdb,使用pvscan可有:# pvscanpvscan — reading all physical volumes (this may take a while…)pvscan — inactive PV “/dev/sdb1” is in EXPORTED VG “test_vg” [996 MB / 996 MB free]pvscan — inactive PV “/dev/sdb2” is in EXPORTED VG “test_vg” [996 MB / 244 MB free]pvscan — total: 2 [1.95 GB] / in use: 2 [1.95 GB] / in no VG: 0 [0]现可以import卷组test_vg (同时也激活它)以安装其上的文件系统# vgimport test_vg /dev/sdb1 /dev/sdb2vgimport — doing automatic backup of volume group “test_vg”vgimport — volume group “test_vg” successfully imported and activated8.5 安装文件系统# mkdir -p /mnt/design/users# mount /dev/test_vg/users /mnt/design/users在完成以上操作后,原卷组在新的服务器上就可使用了。9 分割卷组这种情况是:需要在系统中加入新的卷组,但没有其它可用新硬盘,而已有的卷组中还有大量空间可用。如向系统加入一个”design”卷组。9.1 检查可用空间# pvscanpvscan — reading all physical volumes (this may take a while…)pvscan — ACTIVE PV “/dev/sda” of VG “dev” [1.95 GB / 0 free]pvscan — ACTIVE PV “/dev/sdb” of VG “sales” [1.95 GB / 1.27 GB free]pvscan — ACTIVE PV “/dev/sdc” of VG “ops” [1.95 GB / 564 MB free]pvscan — ACTIVE PV “/dev/sdd” of VG “dev” [1.95 GB / 0 free]pvscan — ACTIVE PV “/dev/sde” of VG “ops” [1.95 GB / 1.9 GB free]pvscan — ACTIVE PV “/dev/sdf” of VG “dev” [1.95 GB / 1.33 GB free]pvscan — ACTIVE PV “/dev/sdg1” of VG “ops” [996 MB / 432 MB free]pvscan — ACTIVE PV “/dev/sdg2” of VG “dev” [996 MB / 632 MB free]pvscan — total: 8 [13.67 GB] / in use: 8 [13.67 GB] / in no VG: 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/sdepvmove — moving physical extents in active volume group “ops”pvmove — WARNING: moving of active logical volumes may cause data loss!pvmove — do you want to continue? [y/n] ypvmove — doing automatic backup of volume group “ops”pvmove — 141 extents of physical volume “/dev/sdg1” successfully moved# pvmove /dev/sdg2 /dev/sdfpvmove — moving physical extents in active volume group “dev”pvmove — WARNING: moving of active logical volumes may cause data loss!pvmove — do you want to continue? [y/n] ypvmove — doing automatic backup of volume group “dev”pvmove — 91 extents of physical volume “/dev/sdg2” successfully moved9.3 创建新卷组现在把/dev/sdg2从卷组dev从分割出并加入到新卷组design中。我们可用vgreduce与vgcreate完成工作,但vgsplit此时更方便:# vgsplit dev design /dev/sdg2vgsplit — doing automatic backup of volume group “dev”vgsplit — doing automatic backup of volume group “design”vgsplit — volume group “dev” successfully split into “dev” and “design”9.4 移除剩余的卷接下来的工作 把/dev/sdg1从卷组ops中分出并加入卷组design:# vgreduce ops /dev/sdg1vgreduce — doing automatic backup of volume group “ops”vgreduce — volume group “ops” successfully reduced by physical volume:vgreduce — /dev/sdg1# vgextend design /dev/sdg1vgextend — INFO: maximum logical volume size is 255.99 Gigabytevgextend — doing automatic backup of volume group “design”vgextend — volume group “design” successfully extended9.5 建立新逻辑卷及文件系统在卷组design上建立逻辑卷,为今后的方便,现只使用一部分空间:# lvcreate -L750M -n users designlvcreate — rounding up size to physical extent boundary “752 MB”lvcreate — doing automatic backup of “design”lvcreate — logical volume “/dev/design/users” successfully created# mke2fs /dev/design/usersmke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)96384 inodes, 192512 blocks9625 blocks (5.00<!– ) reserved for the super userFirst data block=06 block groups32768 blocks per group, 32768 fragments per group16064 inodes per groupSuperblock backups stored on blocks:32768, 98304, 163840Writing inode tables: doneWriting superblocks and filesystem accounting information: done# mkdir -p /mnt/design/users# mount /dev/design/users /mnt/design/users/现在就可使用卷组design。为方便使用,可把下面一行加入文件/etc/fstab中:/dev/design/user /mnt/design/users ext2 defaults 1 210 转变根文件系统为LVM注意:强烈要求在进行下面的操作前对系统进行备份,并且把/文件系统建立在LVM上会导致系统升级很复杂。在下面的例子中,系统除了/boot外都安装在同一个分区中,文件系统的情况为:/dev/hda1 /boot/dev/hda2 swap/dev/hda3 /进行转换的一个必要条件是硬盘上还有足够的空间给分区/dev/hda4创立LVM并把/分区的内容都复制到LVM上,否则:1./分区还有至少一半空间空闲,可以缩减/分区,并把分出的空间划分到分区/dev/hda4;为方便可用GNU parted工具:ftp://ftp.gnu.org/pub/gnu/parted;?..k完成这个操作;硬盘上已无足够空间,必须使用第二块硬盘,如/dev/hdb。在完成以上准备及备份系统后,可继续以下步骤:1.确认使用的Linux内核支持LVM,并且在编译时设置了 CONFIG BLK DEV RAM 与 CONFIG BLK DEV INITRD 。2.设置/dev/hda4分区类型为LVM(8e):# fdisk /dev/hdaCommand (m for help): tPartition number (1-4): 4Hex code (type L to list codes): 8eChanged system type of partition 4 to 8e (Unknown)Command (m for help): w3.设置LVM:”初始化LVM (vgscan)# vgscan”转变分区为PV:# pvcreate /dev/hda4″建立卷组:# vgcreate vg /dev/hda4″建立逻辑卷用以存放根系统:(这里假设空间为250MB)# lvcreate -L250M root vg4.在逻辑卷上建立文件系统并把系统复制到其上:# mke2fs /dev/vg/root# mount /dev/vg/root /mnt/# find / -xdev | cpio -pvmd /mnt5.修改新系统的fstab文件/mnt/etc/fstab,使/安装到/dev/vg/root:/dev/hda3 / ext2 defaults 1 1改变为:/dev/vg/root / ext2 defaults 1 16.创建LVM初始化RAM盘:# lvmcreate_initrd此处要确认为lvmcreate_init给出正确的initrd image文件名,它应在/boot/ 目录下。7. 在/etc/lilo.conf 中为LVM加入新入口项,其形式如下:image = /boot/KERNEL_IMAGE_NAMElabel = lvmroot = /dev/vg/rootinitrd = /boot/INITRD_IMAGE_NAMEramdisk = 8192此处 KERNEL IMAGE NAME是支持LVM的内核,INITRD IMAGE NAME 指由lvmcreate_initrd建立的initrd image。如果LVM的配置很多,可以把ramdisk设置的大一些:此处为8192,缺省为4096。在lvmcrate_initrd的输出中有如下一行:lvmcreate_initrd — making loopback file (6189 kB)其中括号中的数值为实际所需大小。8.运行LILO,设置BOOT扇区:# lilo9.重启计算机,在LILO提示符处输入”lvm” 启动计算机,此时系统的根文件系统是新建立的逻辑卷。此后可在LILO配置文件/etc/lilo.conf中加入以下一行:default=lvm并运行lilo设置缺省启动项为lvm。如果系统未能正常启动,可能的原因是内核不支持LVM、initrd image不正确等等。10.在正常启动后,就可把硬盘其它分区:/dev/hda3加入LVM。”首先设置分区类型为 8e(LVM)# fdisk /dev/hdaCommand (m for help): tPartition number (1-4): 3Hex code (type L to list codes): 8eChanged system type of partition 3 to 8e (Unknown)Command (m for help): w”把它初始化为PV,并加入卷组中:# pvcreate /dev/hda3# vgextend vg /dev/hda311 共享LVM卷LVM不支持物理共享访问,这会导致数据的丢失。在使用fibre-channel 或shared-SCSI 的环境中,多台计算机以物理方式直接访问一组硬盘,于是可以使用LVM把这些硬盘分为不同的逻辑卷。如果需要共享数据,则应使用GFS。12 参考文献AJ Lewis,LVM HOWTO,(http://tldp.org/HOWTO/LVM-HOWTO/),Sistina。 Software, Inc 只要有信心,人永远不会挫败

Linux下分区详细介绍

相关文章:

你感兴趣的文章:

标签云: