做任务的网站,购物网站APP,wordpress评论通知,上海头条新闻最新消息是否遇到过这样的问题#xff0c;划分了?xml:namespace prefix st1 ns urn:schemas-microsoft-com:office:smarttags /10G的一个分区#xff0c;挂接到/home 下#xff0c;可是随着时间的流逝#xff0c;10G的空间开始不够用了#xff0c;需要把它… 是否遇到过这样的问题划分了 ?xml:namespace prefix st1 ns urn:schemas-microsoft-com:office:smarttags /10G 的一个分区挂接到 /home 下可是随着时间的流逝10G 的空间开始不够用了需要把它扩充。假设要扩充到 12G那么唯一的方法就是建立一个 12G 的新分区然后将原来的 10G 分区中的数据全部移动到新分区中再修改挂接配置。这样不仅麻烦而且浪费时间。?xml:namespace prefix o ns urn:schemas-microsoft-com:office:office / Linux 2.4 开始支持 LVMLogical Volume Manager逻辑卷管理器通过 LVM可以动态地改变“分区”准确地说应当称之为卷的大小而不必担心数据移动的问题。LVM 的原理是首先在硬盘上创建 PVPhysical Volume: 物理卷。PV 可以创建在一个分区上也可以创建在整个硬盘上它由许多的 PEPhysical Extent组成每个 PE 的默认值为 4MB。之后将数个 PV 合在一起组成一个 VGVolume Group: 卷组。最后在 VG 中创建 LVLogical Volume: 逻辑卷它也由许多的 LELogical Extent组成LE 的大小与 PE 相同并与 PE 一一对应。LV 就可以像普通的分区一样挂接在任何地方了。 下面我们总结一下这里出现的词汇LVM (Logical Volume Manager逻辑卷管理器Linux 中用于管理逻辑卷的功能。PVPhysical Volume物理卷数据实际保存的位置由许多 PE 组成。VGVolume Group卷组多个 PV 组合在一起。LVLogical Volume逻辑卷LVM 创建的虚拟卷由许多 LE 组成可以像普通分区一样进行挂接可以动态修改大小。PEPhysical ExtentLVM 管理的最小单位默认为 4MB。LELogical Extent大小与 PE 相同并与 PE 一一对应。制作 LVM 下面我们尝试在 Linux 下使用 LVM 来管理分区。以下操作使用的系统为 Fedora Core 3。 1. 首先用 fdisk 创建两个分区 /dev/hda7 和 /dev/hda8选择分区大小为 1G。结果如下 Device Boot Start End Blocks Id System /dev/hdb1 1 2117 1000251 83 Linux /dev/hdb2 2118 4234 1000282 83 Linux 2. 使用 pvcreate 命令将分区建立为 PV。 # pvcreate /dev/hdb1 Physical volume /dev/hdb1 successfully created # pvcreate /dev/hdb2 Physical volume /dev/hdb2 successfully created 3. 使用 vgcreate 命令将新建的两个 PV 组合成 VG。 # vgcreate newvg /dev/hdb1 /dev/hdb2 Volume group newvg successfully created 之后我们可以发现在 /dev 目录下多了一个名为 newvg 的目录这就是我们建立的 VG。 4. 使用 lvcreate 命令在 newvg 中建立一个 LV名为 lv01大小为 256M。 # lvcreate -L 256M -n lv01 newvg Logical volume lv01 created 可以发现在 /dev/newvg 下多了一个名为 lv01 的符号链接这就是 LV。 5. 在 lv01 上建立文件系统。 # mke2fs /dev/newvg/lv01 6. 挂接该文件系统。 # mount -t ext2 /dev/newvg/lv01 /root/lv 至此一个 LV 已经建立完毕。我们可以试着增大该 LV 的容量。使用 lvextend 命令将刚刚建立的 LV 增大 128M。扩大容量之后需要使用 resize2fs 命令来扩大原有的文件系统到新的容量。 # lvextend -L128M /dev/newvg/lv01 Extending logical volume lv01 to 384.00 MB Logical volume lv01 successfully resized # umount /dev/newvg/lv01 # e2fsck -f /dev/newvg/lv01 e2fsck 1.36 (05-Feb-2005) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/newvg/lv01: 12/65536 files (8.3% non-contiguous), 10336/262144 blocks # resize2fs /dev/newvg/lv01 resize2fs 1.36 (05-Feb-2005) Resizing the filesystem on /dev/newvg/lv01 to 393216 (1k) blocks. The filesystem on /dev/newvg/lv01 is now 393216 blocks long. # mount -t ext2 /dev/newvg/lv01 /root/lv 之后马上就可以利用 df -h 命令看到文件系统的容量改变了。 我们也可以利用 vgdisplay 命令来查看 VG 的信息。 # vgdisplay newvg --- Volume group --- VG Name newvg System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 2 Act PV 2 VG Size 1.91 GB PE Size 4.00 MB Total PE 488 Alloc PE / Size 96 / 384.00 MB Free PE / Size 392 / 1.53 GB VG UUID YAlPwY-Vlfa-ZBa7-4jPQ-60Gk-Fzwi-jUW8BM LVM使用手册 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(99248)块之间。当建立逻辑卷时会建立逻辑块与物理块的一一映射关系。 2.7 映射模式 (linear/striped) 在建立逻辑卷时可以选择逻辑块与物理块映射的策略 1.线性映射将把一定范围的物理块按顺序分配给逻辑卷如 LV的LE 1 – 99映射到PV1LE 100 – 347映射到PV2。 2.交错模式将把逻辑块交错映射到不同的物理卷中如 LV的LE 1映射为PV1的PE1LE 2映射为PV2的PE1LE 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/part1 3.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 testvg 3.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/hda1 VG Name testvg PV Size 1.95 GB / NOT usable 4 MB [LVM: 122 KB] PV# 1 PV Status available Allocatable yes (but full) Cur LV 1 PE Size (KByte) 4096 Total PE 499 Free PE 0 Allocated PE 499 PV UUID Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7 如这个PV仍在被使用则应把数据传移到其它PV上。在确认它未被使用后可用命令vgreduce把它从VG中删除如 # vgreduce testvg /dev/hda1 3.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 N2,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/testlv lvremove -- do you really want to remove /dev/testvg/testlv? [y/n]: y lvremove -- doing automatic backup of volume group testvg lvremove -- logical volume /dev/testvg/testlv successfully removed 3.9 扩展LV 为逻辑卷增加容量可用使用lvextend即可以指定要增加的尺寸也可以指定扩容后的尺寸如 # lvextend -L12G /dev/testvg/testlv lvextend -- extending logical volume /dev/testvg/testlv to 12 GB lvextend -- doing automatic backup of volume group testvg lvextend -- logical volume /dev/testvg/testlv successfully extended 将扩大逻辑卷testlv的容量为12GB。 # lvextend -L1G /dev/testvg/testlv lvextend -- extending logical volume /dev/testvg/testlv to 13 GB lvextend -- 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 -L1G /dev/testvg/testlv 等价于下面两条命令 # lvextend -L1G /dev/testvg/testlv # resize2fs /dev/testvg/testlv 但用户仍需首先卸载文件系统。 3.9.2 reiserfs 与ext2不同Reiserfs不必卸载文件系统如 # resize_reiserfs -f /dev/testvg/testvl 3.9.3 xfs SGI XFS文件系统必须在安装的情况下才可改变大小并且要使用安装点而不是块设备如 # xfs_growfs /home 3.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 /home 3.10.2 reiserfs 在缩小reiserfs时应首先卸载它如 # umount /home # resize_reiserfs -s-1G /dev/testvg/testvl # lvreduce -L-1G /dev/testvg/testvl # mount -treiserfs /dev/testvg/testvl /home 3.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 n 4 磁盘分区问题 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/sdc pvcreate在每个硬盘的起始端建立卷组描述区( volume group descriptor area, VGDA)。 5.2 创建卷组 利用上面三个PV建立卷组 # vgcreate test_vg /dev/sda /dev/sdb /dev/sdc/ 然后可用vgdisplay 查看验证卷组的信息 # vgdisplay --- Volume Group --- VG Name test_vg VG Access read/write VG Status available/resizable VG # 1 MAX LV 256 Cur LV 0 Open LV 0 MAX LV Size 255.99 GB Max PV 256 Cur PV 3 Act PV 3 VG Size 1.45 GB PE Size 4 MB Total PE 372 Alloc PE / Size 0 / 0 Free PE / Size 372/ 1.45 GB VG 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_vg lvcreate -- doing automatic backup of test_vg lvcreate -- logical volume /dev/test_vg/test_lv successfully created 5.3.2 建立交错方式LV 在test_vg上建立一个大小为1GB的交错方式LV交错参数为4KB # lvcreate -i3 -I4 -L1G -ntest_lv test_vg lvcreate -- rounding 1048576 KB to stripe boundary size 1056768 KB / 258 PE lvcreate -- 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_lv 5.5 测试文件系统 安装LV # mount /dev/test_vg/test_lv /mnt # df Filesystem 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/databases lvcreate -- WARNING: the snapshot must be disabled if it gets full lvcreate -- 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 created 6.2 安装snapshot卷 现在可以安装该卷 # mkdir /mnt/test_vg/dbbackup # mount /dev/test_vg/dbbackup /mnt/test_vg/dbbackup mount: 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,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 -- do you really want to remove /dev/test_vg/dbbackup? [y/n]: y lvremove -- doing automatic backup of volume group test_vg lvremove -- logical volume /dev/test_vg/dbbackup successfully removed 一、在RHEL 4 中建有名为rhcevg的VG名为rhcelv的LV输出如下------------------------------------------------------------------[rootrhce tmp]# pvscan |grep rhcevg;lvdisplay rhcevg/rhcelv/dev/cdrom: open failed: No medium foundPV /dev/hdb1 VG rhcevg lvm2 [92.00 MB / 0 free]PV /dev/hdb2 VG rhcevg lvm2 [132.00 MB / 124.00 MB free]PV /dev/hdb3 VG rhcevg lvm2 [100.00 MB / 100.00 MB free]PV /dev/hdb5 VG rhcevg lvm2 [3.16 GB / 3.16 GB free]--- Logical volume ---LV Name /dev/rhcevg/rhcelvVG Name rhcevgLV UUID QIuXvv-32p1-prEZ-F4jn-CBxM-gp7r-6vrb0MLV Write Access read/writeLV Status available# open 0LV Size 100.00 MBCurrent LE 25Segments 2Allocation inheritRead ahead sectors 0Block device 253:0---------------------------------------------------------------------可以看出rhcelv的大小为100M,VG还有很多未分配空间;二、增加rhcelv大小至3.26G,即增加3.16G[rootrhce tmp]# lvresize -L 3.16G rhcevg/rhcelvRounding up size to full physical extent 3.16 GBExtending logical volume rhcelv to 3.26 GBLogical volume rhcelv successfully resized[rootrhce tmp]# lvdisplay rhcevg/rhcelv--- Logical volume ---LV Name /dev/rhcevg/rhcelvVG Name rhcevgLV UUID QIuXvv-32p1-prEZ-F4jn-CBxM-gp7r-6vrb0MLV Write Access read/writeLV Status available# open 0LV Size 3.26 GBCurrent LE 834Segments 4Allocation inheritRead ahead sectors 0Block device 253:0[rootrhce tmp]# mount /dev/rhcevg/rhcelv /mnt/rhcelv/;df -h |grep rhcelv/dev/mapper/rhcevg-rhcelv97M 5.6M 87M 7% /mnt/rhcelv# 增加后大小容量未更变执行ext2online命令[rootrhce tmp]# ext2online /dev/rhcevg/rhcelvext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b[rootrhce tmp]# df -h |grep rhcelv/dev/mapper/rhcevg-rhcelv3.2G 7.2M 3.0G 1% /mnt/rhcelv[rootrhce tmp]# lvdisplay rhcevg/rhcelv--- Logical volume ---LV Name /dev/rhcevg/rhcelvVG Name rhcevgLV UUID QIuXvv-32p1-prEZ-F4jn-CBxM-gp7r-6vrb0MLV Write Access read/writeLV Status available# open 1LV Size 3.26 GBCurrent LE 834Segments 4Allocation inheritRead ahead sectors 0Block device 253:0# 可以看到容量已增加三、在减小LV大小如下[rootrhce tmp]# umount /mnt/rhcelv/;lvresize -L -2G rhcevg/rhcelvWARNING: Reducing active logical volume to 1.26 GBTHIS MAY DESTROY YOUR DATA (filesystem etc.)Do you really want to reduce rhcelv? [y/n]: yReducing logical volume rhcelv to 1.26 GBLogical volume rhcelv successfully resized# 可以看到大小已减小2G,rhcelv现大小为1.26G,查看[rootrhce tmp]# pvscan |grep rhcevg;lvdisplay rhcevg/rhcelv/dev/cdrom: open failed: No medium foundPV /dev/hdb1 VG rhcevg lvm2 [92.00 MB / 0 free]PV /dev/hdb2 VG rhcevg lvm2 [132.00 MB / 0 free]PV /dev/hdb3 VG rhcevg lvm2 [100.00 MB / 0 free]PV /dev/hdb5 VG rhcevg lvm2 [3.16 GB / 2.22 GB free]--- Logical volume ---LV Name /dev/rhcevg/rhcelvVG Name rhcevgLV UUID QIuXvv-32p1-prEZ-F4jn-CBxM-gp7r-6vrb0MLV Write Access read/writeLV Status available# open 0LV Size 1.26 GBCurrent LE 322Segments 4Allocation inheritRead ahead sectors 0Block device 253:0# 可以看出大小在pvdisplay中已显示为1.26G,[rootrhce tmp]# mount /dev/rhcevg/rhcelv /mnt/rhcelv/[rootrhce tmp]# df -h|grep rhcelv/dev/mapper/rhcevg-rhcelv3.2G 7.2M 3.0G 1% /mnt/rhcelv# 可以看出容量未改[rootrhce tmp]# umount /mnt/rhcelv/[rootrhce tmp]# fsck.ext3 /dev/rhcevg/rhcelve2fsck 1.35 (28-Feb-2004)The filesystem size (according to the superblock) is 3416064 blocksThe physical size of the device is 1318912 blocksEither the superblock or the partition table is likely to be corrupt!Aborty?# 卸载后fsck发现报错重新格式化[rootrhce tmp]# mkfs.ext3 /dev/rhcevg/rhcelvmke2fs 1.35 (28-Feb-2004)max_blocks 337641472, rsv_groups 10304, rsv_gdb 80Filesystem labelOS type: LinuxBlock size4096 (log2)Fragment size4096 (log2)165088 inodes, 329728 blocks16486 blocks (5.00%) reserved for the super userFirst data block0Maximum filesystem blocks33973862411 block groups32768 blocks per group, 32768 fragments per group15008 inodes per groupSuperblock backups stored on blocks:32768, 98304, 163840, 229376, 294912Writing inode tables: doneinode.i_blocks 3848, i_size 4243456Creating journal (8192 blocks): doneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 25 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override.[rootrhce tmp]# fsck.ext3 /dev/rhcevg/rhcelve2fsck 1.35 (28-Feb-2004)/dev/rhcevg/rhcelv: clean, 11/165088 files, 13881/329728 blocks-----------------------------------------------------------------重新格式化后fsck无误挂载[rootrhce tmp]# mount /dev/rhcevg/rhcelv /mnt/rhcelv/;df -h |grep rhcelv/dev/mapper/rhcevg-rhcelv1.3G 34M 1.2G 3% /mnt/rhcelv# 容量改变#BTW,说实在的搞了很多次再明白# 增加容量只需挂载的状态下ext2online ,(man ext2online发现这一句话It is only possible to enlarge a mounted filesystem.)# 减小容量却需重建文件系统不知可否有其它操作方式 一 LVM配置步骤 1.准备一个分区 fdisk /dev/hda (或/dev/sda) 本案例中创建的分区为/dev/hda15 2.创建PV pvcreate /dev/hda15 如果有多少分区/dev/hda15,/dev/hda16/dev/hda17,则可以 pvcreae /dev/hda1[5-7] 3.创建VG(vg_name是VG的名称) vgcreate vg_name /dev/hda15 如果有多少分区/dev/hda15,/dev/hda16/dev/hda17创建一个VG则可以 vgcreate vg_name /dev/hda1[5-7] 4.创建LV(lv_name是LV的名称) lvcreate -n lv_name -L 10M vg_name 5.格式化LV mkfs.ext3 /dev/vg_name/lv_name 6.挂载文件系统 mount /dev/vg_name/lv_name /lvm 二 LVM管理 1.扩大LV 在扩大LV时,必须增大文件系统 1.1扩大LV lvextend -L 20M /dev/vg_name/lv_name (扩大LV到20M空间) lvextend -L 20M /dev/vg_name/lv_name (增加LV20M空间LV现空间是30M) 1.2增大文件系统(这一步容易疏忽) 假设原来文件系统大小为100M,那又新增20M,故新的文件系统为120M ext2online /dev/vg_name/lv_name 120M 2.缩小LV [假设文件系统是10M,LV是30M,准备把LV缩小到20M] 在缩小LV空间时务必考虑真实的文件系统大小可能导致文件不可用。 2.1缩小文件系统(必先卸载文件系统) umount /lvm fsck.ext3 /dev/vg_name/lv_name resize2fs /dev/vg_name/lv_name 20M 2.2缩小文件系统(在线操作不用卸载)--在配置过程中好像不好使 ext2online /dev/vg_name/lv_name 20M 2.3缩小LV lvreduce -L 20M /dev/vg_name/lv_name 3.扩大VG vgextend /dev/hda1[8-9] (后面的分区务必先进行pvcreate方可使用) 4.删除VG 删除VG前必须先删除LV在删除LV前请先备份数据 4.1删除LV lvremove /dev/vg_name/lv_name 4.2删除VG vgremove 案例:在RAID5上建LVM 1.准备三个容量相同的分区 /dev/hda7 509 744 1895638 fd Linux raid autodetect /dev/hda8 745 980 1895638 fd Linux raid autodetect /dev/hda9 981 1216 1895638 fd Linux raid autodetect 2.建RAID5 mdadm --create /dev/md0 --level 5 --raid-devices3 /dev/hda[7-9] 3.创建PV pvcreate /dev/md0 4.创建VG vgcreate vg0 /dev/md0 5.创建LV lvcreate -L 1024M -n opt vg0 (1G空间) lvcreate -L 500M -n train vg0 (500M空间) 6.格式化LV mkfs.ext3 /dev/vg0/opt mkfs.ext3 /dev/vg0/train 7.新建挂载点cd /mkdir opt train8.修改fstab文件,加其中加入如下两行 ... ... ... ... ... .../dev/vg0/opt /opt ext3 defaults 1 2/dev/vg0/train /train ext3 defaults 1 2 测试成功使用lfs livecdredhat的rescue模式也是会提示lv在mount状态用livecd引导使用vgscan搜索到硬盘的vg然后用vgchange -a y激活vg我是要缩小分区所以执行下面的命令e2fsck -f /dev/VolGroup00/LogVol00 redhat默认的vg名字好难打?xml:namespace prefix v ns urn:schemas-microsoft-com:vml /resize2fs /dev/VolGroup00/LogVol00 3000M 这个数值不能小于lv中的数据所占空间lvreduce -L3000M /dev/VolGroup00/LogVol00如果要增大lvlvextend -L5000M /dev/VolGroup00/LogVol00 注意先查看vg的剩余空间e2fsck -f /dev/VolGroup00/LogVol00resize2fs /dev/VolGroup00/LogVol00 5000M 如果是rhel4增大lv的时候可以使用ext2online可以在线增大不需要关机的 转载于:https://blog.51cto.com/442911/89223