Centos 5.1 Linux LVM逻辑卷标管理指南

Centos 5.1 Linux LVM逻辑卷标管理指南
一、前言

每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值。因为如果估计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。

虽然现在有很多动态调整磁盘的工具可以使用,例如PartationMagic等等,但是它并不能完全解决问题,因为某个分区可能会再次被耗尽;另外一个方面这需要重新引导系统才能实现,对于很多关键的服务器,停机是不可接受的,而且对于添加新硬盘,希望一个能跨越多个硬盘驱动器的文件系统时,分区调整程序就不能解决问题。

因此完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。幸运的是Linux提供的逻辑盘卷管理(LVM,LogicalVolumeManager)机制就是一个完美的解决方案。

LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。

二、LVM基本术语

前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。首先我们讨论以下几个LVM术语:

*物理存储介质(Thephysicalmedia)
这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。

*物理卷(physicalvolume)
物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

*卷组(VolumeGroup)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

*逻辑卷(logicalvolume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。

*PE(physicalextent)
每一个物理卷被划分为称为PE(PhysicalExtents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。

*LE(logicalextent)
逻辑卷也被划分为被称为LE(LogicalExtents)的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
介绍了LVM接下来我们来做个实验,虚拟机上添加3块8g的硬盘,启动centos 5.1
[root@myadcls ~]# fdisk -l//查看全部添加的硬盘
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14         268     2048287+  82  Linux swap / Solaris
/dev/sda3             269        2610    18812115   83  Linux
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/sdc: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdc doesn't contain a valid partition table
Disk /dev/sdd: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdd doesn't contain a valid partition table
[root@myadcls ~]# pvcreate /dev/sdb /dev/sdc /dev/sdd //创建pv物理卷
  Physical volume "/dev/sdb" successfully created
  Physical volume "/dev/sdc" successfully created
  Physical volume "/dev/sdd" successfully created
[root@myadcls ~]# 
[root@myadcls ~]# pvcreate /dev/sdb /dev/sdc /dev/sdd
  Physical volume "/dev/sdb" successfully created
  Physical volume "/dev/sdc" successfully created
  Physical volume "/dev/sdd" successfully created
[root@myadcls ~]# vgcreate vgtest /sdb /dev/sdc /dev/sdd //创建vgtest名字的卷组
  Volume group "vgtest" successfully created
[root@myadcls ~
[root@myadcls ~]# lvcreate -i 3 -I 4 -L 1000M -n lvtest1 vgtest
Rounding size (250 extents) up to stripe boundary size (252 extents)
  Logical volume "lvtest1" created

//创建lv, -i参数为采用条带模式的映射方式创建逻辑卷,该参数的值用于指定所创建的逻辑卷将映射在几个PV上。
-I参数使用条带模式时采用的快大小,单位为KB,其值必须是:2N(N>=2),
-L参数指定创建逻辑卷的大小,单位为K,M,G,T表示KB,MB.GB TB等。
-n参数用来指定所创建的逻辑卷的名称,该名称可以根据需要随便定义。
在使用-i的时候,一定要确认所指定的pv是没有完全被分配给任何逻辑卷的,否则将创建失败,其次若这些PV的大小不等,那么创建的逻辑卷只能取最小值。
下面用剩余的空间来创建第二个逻辑卷,通过vgdisplay命令可以查看到卷组的剩余空间如下:
[root@myadcls ~]# vgdisplay
  --- Volume group ---
  VG Name               vgtest
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               23.99 GB
  PE Size               4.00 MB
  Total PE              6141
  Alloc PE / Size       252 / 1008.00 MB
  Free  PE / Size       5889 / 23.00 GB
  VG UUID               0GGQBE-kBOl-QD22-6eWx-J3eW-fGB1-a9ME8F
   
可以判处free为5889 PE
把空余的pe空间划分给另一个逻辑卷。
[root@myadcls ~]# lvcreate -l 5889 -n lvtest2 vgtest
  Logical volume "lvtest2" created
// -l参数指定逻辑卷的LE的数量,默认为4MB, 所以大小为4m x 5889=23556MB
 
接下来创建文件系统:
在逻辑卷上创建文件系统和在分区上创建文件系统方法是一样的,例如,在逻辑卷上创建ext3日志文件系统,命令如下
[root@myadcls ~]# lvcreate -l 5889 -n lvtest2 vgtest
  Logical volume "lvtest2" created
[root@myadcls ~]# mkfs.ext3 /dev/vgtest/lvtest1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
129024 inodes, 258048 blocks
12902 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=264241152
8 block groups
32768 blocks per group, 32768 fragments per group
16128 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
以上就是Linux下创建逻辑卷的整个步骤
LVM的维护
在LVM日常维护当中,通常要给逻辑卷扩容,添加新的物理卷等操作等。
1.激活卷组,如果不激活不能被访问的,不过默认是激活的,手动激活如下命令:
[root@myadcls ~]# vgchange -a y vgtest//参数解释 -a 用于设置指定的卷组是否可用,参数y表示激活卷组,若设置成n则表示暂停卷组使用。
  2 logical volume(s) in volume group "vgtest" now active

2.为卷组增加新的物理卷,当卷组空间不足时候,可以加入新的物理卷来扩大卷组的容量,这时候可以用去vgextend命令来实现,如下:
[root@myadcls ~] vgextend vgtest /dev/sde
Volume
group "vgtest" successfully extended
其中“/dev/sde”是增加的物理卷,前提要pvcreate来初始化
3.从卷组中移除物理卷
要从一个卷组中移除一个物理卷,首先要确认移除的物理卷中没有被任何逻辑卷正在使用,通过pvdisplay命令来查看.
[root@myadcls ~]# pvdisplay /dev/sde
  --- Physical volume ---
  PV Name               /dev/sde
  VG Name               vgtest
  PV Size               8.00 GB / not usable 0
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              2047
  Free PE               0
  Allocated PE          2047
  PV UUID               NrrGyd-y0j1-06cD-ZA5l-ipxV-LvvP-YeIB9q
4.如果某个物理卷正在被逻辑卷在使用,就需要将物理卷的数据移动到其它地方,然后移除。移除物理卷的命令为vgreduce vgtest /dev/sde
5.在物理卷间的转移数据
当发现逻辑卷下的某个磁盘有问题,或者其它需求转移其中的物理卷的数据时候(如更换大硬盘或更快的物理设备),那么可通过pvmove来实现物理卷之间转移数据,例如,将物理卷/dev/sdd上的数据移动到/dev/sde具体步骤如下:
pvmove /dev/sdd /dev/sde
其中/dev/sde的大小移动要大于或等于/dev/sdd,其次在使用pvmove前需要modprobe dm-mirror 命令来加载dm-mirror模块,因为pvmove在转移数据时候需要用到这个模块,而默认系统部加载这个模块的。
6.扩展逻辑卷
在前面提到过,lvm提供了方便的调整逻辑卷大小的功能,扩展逻辑卷的大小事lvextend命令,例如将lvtest2的空间调整为1600m
lvextend -L 1600M /dev/vgtest/lvtest2
也可以在原来的基础增加相应的大小,如下:
lvextend -L +40M /dev/vgtest/lvtest2
逻辑卷扩展之后并不会马上生效,需要使用resize2fs命令重新加载逻辑卷的大小,该命令只针对ext2/ext3的文件系统(若是reiserfs的文件系统,则用resize_reiserfs命令),如果该逻辑卷正在使用中,就应该先将该逻辑卷卸载后在执行,resize2fs命令操作如下:
umount /dev/vgtest/lvtest2
resize2fs /dev/vgtest/lvtest2
mount /dev/vgtest/lvtest2 /mnt/lvtest2/
以上这些操作可以通过ext2online命令来直接实现,这样就不用做卸载逻辑卷等操作了,如下:
ext2online /dev/vgtest/lvtest2
7.删除逻辑卷
删除逻辑卷前首先需要将其卸载,其命令为lvremove如下:
lvremove /dev/vgtest/lvtest2
y即可卸载成功
8.移除卷组
在移除卷组之前首先要确认该卷组中已经没有任何逻辑卷了,或者可以用vgchange手动将卷组停止工作,移除卷组操作如下:
vgremove vgtest
9.删除物理卷
在删除物理卷前,必须确认该物理卷中已经在卷组中移除了,删除物理卷的命令如下:
pvremove /dev/sde
LVM还可以提供snapshot快照功能,其中快照能够快速的备份当前逻辑卷中的数据,从而大大减轻了备份数据的负担,只是目前来说技术还是不成熟。


本文转自zh888 51CTO博客,原文链接:http://blog.51cto.com/zh888/357151,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值