`
jelly_bitores
  • 浏览: 46339 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

通用线程: 学习 Linux LVM,第 1 部分

阅读更多

简介: 在本文中,Daniel 向您介绍了 Linux LVM(逻辑卷管理)背后的概念,并告诉您如何将最新的内核补丁和工具安装到您的系统上。LVM 可以让您在除机器上的物理存储资源以外创建逻辑卷。不过,与物理卷不同,逻辑卷可以在系统仍处于运行状态时扩充和缩减,这样就为 Linux 系统管理员提供了他们梦寐以求的存储器灵活性。

在这一系列中,我要向您介绍如何安装和使用新的内置在 Linux 2.4 内核中的“逻辑卷管理”支持。如果您以前从未使用过任何形式的 LVM ,那么您得好好学一学;它是一种非常棒的技术。 在我们真正设置和运行 LVM 之前,我要解释一下它究竟是什么以及它是如何工作的。然后,我们准备对 LVM 做一些测试来充分了解它。

LVM 介绍

如果您象我一样,那么您对 UNIX 和 Linux 的体验是从 PC 平台,而不是从大型的商业 UNIX 服务器和工作站上开始的。在基本 PC 上,我们总是不得不对硬盘驱动器执行分区。使用 PC 的人通常相当了解 fdisk 这样的在硬盘上创建和删除主要分区和扩展分区的工具。硬盘分区是一种令人厌烦,但公认是使操作系统设置和运行进程不可或缺的一部分。

因为要做好工作,确实需要精确地估计每个分区需要多少空间,所以硬盘驱动器分区可能是非常烦人的事。如果估计得不准确,Linux 系统很可能会顾此失彼 -- 为解决这个问题,您甚至可能需要执行整个系统备份、将硬盘清除干净,然后将所有数据恢复到新的(可能比原来好一些)分区布局中。讨厌!这些就是系统管理员在一开始就尽力避免的情况。

虽然分区曾一度是静态存储器的天下,但值得庆幸的是,我们现在有许多 PC 重新分区工具(PowerQuest 的 Partition Magic 产品就是最流行的一种)。这些工具可以让您用一个特殊磁盘来引导系统,并可以动态地重新调整分区和文件系统的大小。重新引导后,您就拥有了重新调整过大小的新分区,这样就有望将您从存储器危境中解脱出来。这些重新调整分区大小的工具很有效,并从某种程度上解决了一些存储器管理问题。但它们是不是就完美了呢?不一定。

象 Partition Magic 这样的工具对于工作站来说非常有效,但对服务器来说就不合适了。首先,它们需要重新引导系统。 而这正是大多数系统管理员尽量避免的。如果在每次需要调整存储器(例如,如果每周存储器调整都需要做很大调整)时不能重新引导机器怎么办?如果需要扩充文件系统使它能跨越多个硬盘驱动器会发生什么,或者如果在允许 Apache 继续提供 Web 页面的同时需要动态扩充或缩减卷的存储容量,您该怎么做?在一个高度可用的动态环境中,基本的分区大小调整器无法满足这些要求。对于这样一些和其它一些情况,“逻辑卷管理”是一种非常出色(如果不是最完美)的解决方案。

 

进入 LVM

现在,让我们看看 LVM 是如何解决这些问题的。我们执行下面的三步骤过程来创建 LVM 逻辑卷。首先,我们需要选择用于 LVM 的物理存储器资源。这些通常是标准分区,但也可以是我们已创建的 Linux Software RAID 卷。如果使用 LVM 术语,这些存储器资源称为“物理卷”。设置 LVM 的第一步是正确初始化这些分区以使它们可以被 LVM 系统识别。如果添加物理分区,它还包括设置正确的分区类型,以及运行 pvcreate 命令。

在初始化 LVM 使用的一个或多个物理卷后,可以继续进行第二步 -- 创建卷组。您可以把卷组看作是由一个或多个物理卷所组成的存储器池。 在 LVM 运行时,我们可以向卷组添加物理卷,甚至从中除去它们。不过,我们不能直接在卷组上安装或创建文件系统。而是告诉 LVM 使用我们的卷组存储器池创建一个或多个“逻辑卷”:


在物理卷上创建卷组
 

创建 LVM 逻辑卷非常容易,而且一旦创建它以后,我们就可以把文件系统放在它上面、安装它,然后开始使用卷来存储文件。使用 "lvcreate" 命令来创建逻辑卷,指定新卷的名称、所希望的卷的大小,以及希望这个特定逻辑卷所属的卷组。 然后,LVM 系统从我们指定的卷组中分配存储量来创建准备使用的新卷。创建新卷后,可以将 ext2 或 ReiserFS 文件系统放在上面、安装它,然后照我们喜欢的方式使用它。


从现有卷组创建两个逻辑卷
 

 

范围

在幕后,LVM 系统以大小相等的“块”(称为“范围”)为单位分配存储量。我们可以指定在创建卷组时使用的特定的范围大小。范围的大小缺省为 4Mb,这对于大多数情况来说相当理想。LVM 的一个好处是在已经安装了逻辑卷并在使用逻辑卷的情况下,可以动态地改变逻辑卷使用的范围的物理存储位置(换句话说,就是存储它们所在的磁盘)。LVM 系统确保逻辑卷在管理员物理地改变存储位置的同时能够继续正常操作。

当然,因为所有事物都是在大小相等的范围之上创建的,所以要为已存在的逻辑卷分配一些额外的范围实际上很容易 -- 换句话说,动态“增长”卷:


从卷组添加额外的范围,扩展逻辑卷的大小
 

一旦扩充了逻辑卷,接下来就可以扩充 ext2 或 ReiserFS 文件系统来利用这一新的磁盘空间。如果使用例如 resize_reiserfs 这样的程序,也可以 在已安装和正使用卷时扩充文件系统!真正令人称奇的是 -- 使用 LVM 和联机文件系统扩充实用程序,可以在改变存储器配置时不再需要重新引导系统,甚至不需要降低到运行级别 1。

唯一需要关闭系统的情况是在需要添加新的物理磁盘时。添加了新磁盘后,可以将这些新的物理卷添加到卷组中来创建新的范围补给。

 

设置 LVM

好,让我们开始安装 LVM。LVM 由两部分组成:内核部分和一套用户空间工具。为了开始,先跳到主要 LVM 页面(请参阅本文稍后部分的 参考资料)并下载可以找到的最新版本的 LVM tar 文件(当前是 lvm_0.9.1_beta3.tar.gz)。LVM tar 文件包含了所有用户空间工具以及一组内核补丁程序。这正是令人感兴趣的地方。

如果已经安装了 2.4 系列内核,则系统上已有 LVM 支持,如果没有,很简单,只需要重新编译内核来启用 LVM 支持即可。不过,您可能不希望使用自带的(或发行版提供的)2.4 内核所包括的 LVM 支持。如果希望使用最新的 LVM 版本,要将 LVM tar 文件中的补丁程序应用到当前的 2.4 内核源码树。以下是执行方法。

为了开始,进入内核源码目录 (/usr/src/linux) 并创建一个称为 "extras" 的目录。然后进入该目录并抽取 LVM tar 文件:

# cd /usr/src/linux
# mkdir extras
# cd extras
# tar xzvf /path/to/location/of/lvm_0.9.1_beta3.tar.gz

 

执行完这一步后,您会注意到在 extras 中有一个称之为 "LVM" 的目录,它包含了另一个根据您刚刚解包的 LVM 版本命名的目录。进入这两个目录找到 LVM 源码:

清单 1:找到 LVM 源码

您将看到几个文本文件、脚本和源目录。您会在 "INSTALL" 文件中找到安装指令;我将指导您完成这一过程。首先,我们希望运行配置脚本,如下:

# ./configure --prefix=/ --mandir=/usr/man

 

 

修补

执行完这条命令后,将创建并配置 Makefile,以在 /sbin 中安装所有 LVM 工具,在 /usr/man 中安装帮助页面。如果您的帮助页面位于 /usr/share/man 中(按照 FHS 2.1),则对上述路径作相应的调整。如果内核源码不在 /usr/src/linux 中,还需要将 "--with-kernel_dir=/path/to/usr/src/linux" 选项添加到一行中。配置脚本完成后,我们就可以准备安装这些工具并生成当前内核的补丁了。让我们首先对内核加以修补。进入 PATCHES 目录:

# cd PATCHES

 

现在输入 "make"。makefile 将生成专用于特定 2.4 系列内核源码的补丁:

# make

 

补丁名为 lvm-[lvmversion]-[kernelversion].patch。例如,因为我使用的是版本 0.9.1_beta3 的 LVM 和内核 2.4.0-ac11,所以补丁名为 lvm-0.9.1_beta3-2.4.0-ac11.patch。您可以在当前目录中找到它。现在该应用补丁了。要应用补丁,需要将目录切换到内核源码所在的位置,然后使用 patch 命令,如清单 2 所示:

清单 2:patch 命令

虽然 LVM INSTALL 文档并没有提到,但我通常将 "-l" 选项传递给 patch。该选项让补丁程序补偿空白中的任何变化(例如细微的缩排变化),这些变化一般会造成补丁的某些部分失败。如果上述命令完成时没有任何带有 "FAILED" 的行,那么就可以准备安装用户磁盘空间工具了。如果不是这样,您需要审视 /usr/src/linux 目录来查找 ..rej 文件,然后使用文本编辑器手工将被拒绝的部分插入到源码中 -- 真麻烦!不过,在大多数情况下,应用补丁都很顺利,您可以迅速使用它。

 

配置、编译和安装

好,现在有了一个经过修补的内核,因此它具有最新可用的 LVM 代码。现在需要配置内核来启用 LVM 支持。我建议您直接将 LVM 支持编译到内核中而不是将它配置成作为一个模块编译。启动您喜爱的 Linux 内核配置方法:

# cd /usr/src/linux
# make menuconfig

 

您在 "Multi-device support (RAID and LVM)" 部分中可以找到 LVM 选项。一旦启用了第一个选项:

[*] Multiple devices driver support (RAID and LVM) 

 

....您将看到以下选项,您也应该启用它们:

<*>   Logical volume manager (LVM) support

 

根据您使用的 LVM 版本,可能还有其它一些希望启用的与 LVM 相关的选项。完成后,保存内核配置,并执行标准内核编译例程,然后重新引导。 恭喜 -- 您现已启用了内核 LVM 支持;现在,我们需要编译和安装用户磁盘空间工具。这一步很简单:

# cd /usr/src/linux/extras/LVM/0.9.1_beta3
# make
# make install

 

另外还有一步,它是可选的。如果您要做的不仅是测试 LVM,还需要将以下几行添加到启动 rc 脚本中:

/sbin/vgscan
/sbin/vgchange -a y

 

这些行将浏览所有可用的卷组并激活它们。然后,将以下这行添加到关机 rc 脚本中,并确保它在卸装了所有文件系统后执行:

/sbin/vgchange -a n

 

如果只是测试 LVM,可以跳过这些步骤。只是要记住,在每次重新引导后,在逻辑卷可以使用前,需要以 root 输入 "vgscan" 和 "vgchange -a y"。

以上就是这篇文章的内容。在下一篇文章中,我将介绍如何创建您自己的逻辑卷,以及如何发挥 LVM 的威力。到时候再见!

 

参考资料

  • 您可以参阅本文在 developerWorks 全球站点上的 英文原文

  • 从 Sistina Software 下载 LVM tar 文件。 

  • 请务必仔细查看 Linux LVM FAQ。 

  • 等不及的读者可以查看 Heinz Mauelshagen 的 LVM HOWTO,它介绍了如何设置物理卷、卷组和逻辑卷。这是我将在下一篇文章中涉及的内容。 

  • 另外还有一个有意思的 HOWTO,告诉您 如何在逻辑卷上设置根文件系统。 

  • Andreas Dilger 参与了 Linux LVM 项目,他有一个看上去不错的 联机ext2 文件系统大小调整器 。 

  • ReiserFS 是一种非常好的文件系统(特别在与 LVM 结合使用时)。如果使用的是 ReiserFS,需要获取 reiserfs-utils tar 文件,它包含了一个称为 "reiserfs_resize" 的程序 -- 允许对 ReiserFS 文件系统联机调整大小。 

  • 有关设置 Linux Software RAID 卷的详细信息,请参阅 Daniel 在 developerWorks上有关 Software RAID 系列的 第 1 部分第 2 部分。 

  • 如果想进行回顾,请参阅 developerWorks 上的 Linux 内核编译教程。 
分享到:
评论

相关推荐

    linux常用命令 lvm

    Linux LVM,全称为Logical Volume Manager,是Linux操作系统下的一种磁盘管理工具,它提供了一种灵活、可扩展的方式来管理磁盘存储空间。LVM允许系统管理员创建和管理逻辑卷,这些逻辑卷可以跨越多个物理硬盘,从而...

    linux LVM管理整合打包

    Linux LVM(Logical Volume ...文档中的"Linux的lvm管理.docx"、"Linux_LVM管理.doc"、"LVM管理(全面总结).doc"和"Linux手动创建RAID和LVM分区.docx"提供了丰富的学习资源,建议仔细研读以深入理解LVM的各个方面。

    linux——lvm

    ### Linux LVM (Logical Volume Manager)详解 #### 一、引言 Logical Volume Manager (LVM) 是一种灵活且强大的磁盘空间管理技术,最初在 IBM 的 AIX Unix 系统中得到广泛应用,并逐渐被引入到 Linux 系统中。LVM ...

    LINUX LVM

    Linux LVM,全称为Logical Volume Manager(逻辑卷管理器),是Linux系统中一种高级的存储管理技术,它允许管理员在物理硬盘之上创建虚拟磁盘,这些虚拟磁盘被称为逻辑卷。LVM的主要目标是提高存储的灵活性、可扩展...

    linux LVM

    Linux LVM,全称为Logical Volume Manager(逻辑卷管理器),是Linux操作系统中一种高级的存储管理技术。...通过学习这些资料,你可以深入了解如何在Linux环境中有效地管理和利用LVM,提升系统的存储管理能力。

    存储技术原理分析:基于Linux 2.6内核源代码

    VFS处理文件操作的通用部分,如打开、关闭、读取和写入,而具体的操作由底层的文件系统实现。 3. **块设备驱动**:块设备驱动程序负责与硬件进行交互,如硬盘、SSD等。它们处理I/O请求,缓存数据,执行错误恢复等。...

    linux as5.0 的lvm视频录像

    通过学习和实践这个Linux AS5.0的LVM录像,你将能够熟练地运用LVM来管理和优化你的Linux服务器的存储资源,提高系统的稳定性和效率。同时,LVM的知识也能帮助你在面对复杂的存储需求时做出更灵活和高效的设计。

    Linux LVM硬盘管理

    Linux LVM 硬盘管理 Linux LVM 硬盘管理是指通过 Logical Volume Manager(逻辑卷管理)来管理硬盘的存储空间。LVM 将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用。当硬盘的空间不够使用的时候,...

    Linux LVM硬盘管理及LVM扩容

    "Linux LVM硬盘管理及LVM扩容" 根据提供的文件信息,以下是相关的知识点: 一、LVM简介 LVM(Logical Volume Manager)是一种逻辑卷管理系统,由Heinz Mauelshagen在Linux 2.4内核上实现。LVM可以将一个或多个...

    离线安装LVM2-CentOS分区工具.zip

    LVM2是Linux系统中广泛使用的磁盘管理工具,能够帮助管理员高效地管理和调整磁盘分区,支持动态扩展或缩减卷的大小,以及创建复杂的存储布局。 LVM2的主要功能包括: 1. **物理卷(Physical Volumes)**:这是LVM...

    将Linux系统转至LVM卷的方法

    "将 Linux 系统转至 LVM 卷的方法" Linux 系统转移到 LVM 卷是一种复杂的操作,需要细心和耐心。下面是该过程的详细知识点: 一、预备知识 * dd 命令:用于复制一个设备/分区,原样输出到另外一个文件/设备/分区...

    存储技术原理分析:基于Linux_2.6内核源代码

    ### 存储技术原理分析:基于Linux_2.6内核源代码 #### 一、存储技术概述 存储技术是计算机系统中一个重要的组成部分,它主要用于数据的持久化保存。随着信息技术的发展,存储技术也在不断地演进和发展。本文将重点...

    Linux LVM.ppt

    Linux虚拟机平台下,不停机、不关机的状态下实现热扩容。

    Linux下LVM硬盘管理及LVM扩容.pdf

    Linux下的LVM(Logical Volume Manager)是一种先进的磁盘管理技术,由Heinz Mauelshagen在Linux 2.4内核版本中实现。LVM的主要目标是提供一种灵活、可扩展的磁盘管理方式,使得系统管理员可以更加便捷地管理和调整...

    LINUX下LVM技术文档教程

    LINUX下的LVM(Logical Volume Manager)是一种先进的磁盘管理技术,它允许系统管理员在Linux环境中灵活地管理和调整磁盘分区。LVM的核心优势在于它提供了动态调整存储空间的能力,无需停机,使得扩展文件系统变得...

    Linux,LVM管理

    Linux系统LVM管理培训。

Global site tag (gtag.js) - Google Analytics