Enterprise Linux 实战讲座 Logical Volume Manager

646阅读 0评论2008-03-19 sdccf
分类:LINUX

从 RedHat Linux 8.0 开始便可以使用Logical Volume Mamager ( LVM , 逻辑扇区管理员 ) 来做硬盘空间的分配。什么是 LVM 呢? LVM ( Logical Volume Manager ) 原先运用于IBM AIX Unix 系统,是一种分配 硬盘空间到逻辑扇区的方法,这种方式比传统Partition 分配容易做容量的调整,它让众多硬盘机结合、彷佛融为一体,可动态放大档案系统的机制,是让 Linux 迈向高阶服务器的一大利器。

 

概念:
使用 LVM,硬盘中的Partition 必须加入『 Logical Volume Group 逻辑扇区群组 ( 简称VG ) 』,这种Partition 在LVM 中称为『 Physical Volume实体扇区 (简称PV) 』,各位可以把Logical Volume Group 想成是一个大硬碟,然后再从其中切出一块空间『 Logical Volume 逻辑扇区 ( 简称LV ) 』对应至系统的档案系统。
除了 /boot 分割区,其余的档案系统皆可在Volume Group 在这颗虚拟的大硬盘中。 /boot 分割区不可以在VG 中,因为开机管理程序将无法读取到它。假如您想要根目录 / 分割区在VG 中,您必须另外建立一个 /boot 分割区,使其不属于VG 的一员。(图 1)VG 可以分割为几个 『Logical Volume 逻辑扇区』,将会指定它们的挂载点,例如 /home 与 /,以及档案系统类型,如 ext3。 当某个档案系统的容量全满时,VG 中的剩余空间可以增加到此档案系统所对映的逻辑扇区以增大此档案系统大小。

LVM 运作机制:

接下来我们进一步介绍建立LVM 的机制,首先,我们得先认识几个名词。LVM 机制原先为IBM AIX 特有的硬盘管理机制,它的最主要的目的是为了克服Unix 操作系统规划给某个档案系统 特定的空间后就无法再改变。例如:各位可能当初在安装系统时,认为 /home 只要500MB 就足够,后来因为使用者愈来愈多,原先规划的空间可能就不敷使用。

传统的解法就是将原 /home 的资料备份出来,重新切割一块新的Partition 格式化成新的档案系统,再将原有的资料还原回去。即使现有的硬盘还有剩余的空间,你也无法马上利用这些空间,还是得重新切个新的Partition。但LVM 利用在实体的硬盘和档案系统 加一层Logical 的对映机制来达到动态放大档案系统的功能进而解决传统Unix 所面临的问题。

LVM 的重要名词 ( VG、PV、LV ):

我们先谈VG 及PV 这两个名词。在原先IBM AIX 的红皮书中的定义中,VG 是LVM 机制最重要的东西,就是一堆PV 的组合,一个VG 可能包含一个PV 或数个PV。这样解释,各位一定听不懂,笔者当年接触AIX 时也是搞得一个头两个大,觉得有点像用另一个不懂的名词 ( PV ) 来解释不懂的名词 (VG)。

换个角度来看,其实各位可以把VG 想成原先Linux 实体观念中的一颗硬碟。而在实体世界中硬盘是由一个或多个Partition 组成,在LVM 中VG 是由一个或一个以上的PV 组成。所以在Linux LVM 机制中的PV 其实是硬盘中的Partition 所转换变成的。

那什么是LV,可不是那个服饰名牌LV,当然搞懂了LV 也不见得会帮你/妳赚到LV 的包包,不过倒是可以帮你的Linux 档案系统 加上一件华丽的衣裳。好了言归正传,LV 是VG 中的一块空间,就像原来Linux 中的partition/dev/hda#,是用来对应到 ( mount )系统中的某个目录 ( mount-point )。

  • Physical Vloume(PV):在AIX 原有的定义将实体的硬盘称为PV,在Linux 上各位可想成原先的一个partition 就是一个PV。
  • Volume Group(VG):就是一堆PV 的组合,也就是说一个VG 可能包含一个PV 或数个PV。
  • Physical Extent(PE):当数个PV 组合成一个VG 时,LVM 会在所有的PV 做类似格式化的工作,将每个PV 切成一块一块的空间,这一块一块的空间就称为PE, 通常是4MB。
  • Logical Vloume(LV):由一群LE 组成,在LVM 的机制下一个档案系统 (假设是 /home filesytem) 实际对应的不是hda#,而是一个LV。
  • Logical extent (LE):LV 的组成单位,它的大小为PE 的倍数,通常为1:1的关系。

笔者将LVM 中最重要的三个名词及其意义整理简列如下表:
表1 PV、VG、LV 比较表

名词 意义 操作系统相对应装置
PV 实体分割区(Partition) /dev/hda#
VG 虚拟硬盘(扇区群组) /dev// 目录
LV 虚拟分割区(逻辑群组) /dev//

下图是笔者用Linux 的角度来看LVM 所重画的Linux LVM 的架构图。

实战演练:

有两种方式可以建立LVM 的机制,一是藉由Disk Druid(只有安装时才提供),另法是利用LVM 指令来建立管理。下面为各位示范是利用Disk Druid 来实作LVM,最后示范如何动态放大 /home 档案系统。

测试环境:
操作系统:RedHat Enterprise Linux AS 3.0 ( 亦适用于RedHat 8.0、9.0、Fedora )

硬盘:10GB IDE 硬盘
1./boot 256 MB -> Linux Partition(图3~6)( /boot 分割区不可以在VG 中,因为开机管理程序将无法读取到它 )

2.然后切出三个大小3000MB Partition ,hda2、hda3、hda4,档案系统类型为LVM,此步骤相当于建立三个Physical Vloume(图7,8),最后这个硬盘还剩下988 MB。

3. 将这三个Physical Vloume (PV) 组合成一个VG,将此VG 命名为rootvg。各位可以把此时的rootvg 想成是一个虚拟硬盘,地位就如同hda。所以接下来我们的工作便是指定每个档案系统的空间。

4.在LVM 机制,当你要建立一个档案系统时,必须先新增一个LV ( 很像以前的partition hda# )。新增LV 时,LVM 会从VG 中找出未使用的空间组合成你所需要的大小,这些空间实际可能对应到任一个硬盘;但使用者不用去在意真正存放在那一个硬盘。也正因这种Logical 的方式,我们才可将档案系统的容量放大,因为每个档案系统 对应的巳不是从前实体硬盘的Partition ( 从第几个磁柱到第几个磁柱 ),而是Logical 概念的LV。只要VG 还有未用的空间,LVM就可将其对应到某个LV,所以LV 的大小就可增加,藉此达到档案系统容量可动态放大的功能。

如图11~15,笔者指定:
rootlv =6000MB -> / 档案系统
homelv=500MB -> /home 档案系统
swaplv=500MB -> SWAP

图11、新增逻辑扇区 ( LV )

图12、新增逻辑扇区名称rootlv、其挂载点设定为 /

5.安装套件为预设选项 (图16)

安装完毕开机时各位会看到下列信息,便代表LVM 设定成功。

Scanning logical volumes
vgscan – reading all physical volumes (this may take a while…)
vgscan – found inactive volume group "rootvg"
vgscan – "/etc/lvmtab" and "/etc/lvmtab.d" successfully created
…………..
Activating logical volumes
vgchange – volume group "rootvg" successfully actived

6.开机后利用 df –h 检查硬盘、LVM、档案系统的状况。

7.利用lvscan 检查原来LV 分配情形

8.动态将 /home 档案系统 放大100MB

#umount /home
#e2fsadm –L+100 /dev/rootvg/homelv
注: –L+100 代表增加100MB
#mount /home

#lvscan ->检查变更后LV 分配情形
#df –H 检查档案系统使用情形

读者此时可以检查原来在 /home 目录的资料并不会因此而不见。在AIX 上甚至可以不用做umount 就将档案系统放大,笔者认为未来Linux 也可达到此功能。不过只需简单umount -> e2fsdam -> umoun 就可将档案系统放大,不用似传统的解决方法需要冗长的停机时间,让Linux 更有资格担任企业关键性的服务器。

后记
IBM AIX 上为人称道的LVM 机制,如今顺利地移植到Linux,让Linux 向企业级的应用再迈向一步。在本期文章,我们先介绍如何利用Disk Druid 来实作LVM,不过Disk Druid 这个工具只有在安装系统时才能使用。如果一开始安装时未利用Disk Druid 设定LVM 就得利用指令的方式来设定LVM,这部份笔者将会在LVM(二)讲解。

作者:IBM 林彥明(Alex Lin)

上一篇:rpm包的安装、删除、效验、查询
下一篇:Linux 磁盘配额( Quota )