高级文件系统实现者指南,第 13 部分

高级文件系统实现者指南,第 13 部分

EVMS 详情
developerWorks
文档选项
将此页作为电子邮件发送
将此页作为电子邮件发送


级别: 初级
Daniel Robbins ( [email protected]), 总裁/CEO, Gentoo Technologies,Inc.
2002 年 9 月 16 日
在高级文件系统实现者指南中,Daniel Robbins 向您展示了如何在 Linux 2.4 中使用最新的文件系统技术。在 AFIG 系列文章的这一结束篇中,Daniel 继续讨论用于 Linux 的企业卷管理系统(Enterprise Volume Management System,简称 EVMS)。他向您显示了如何使用来利用新硬盘,对它分区并在其上创建 LVM 卷。接着,他向您介绍了重要的 EVMS 概念,当您继续研究此功能强大的技术时,您会发现这些概念是必不可少的。
欢迎阅读高级文件系统实现者指南的最后一篇专栏文章。在本文中,Daniel 继续探讨他在 EVMS 简介中所遗留下来的内容,并一步一步地指导您使用 evmsn (EVMS 的基于 ncurses 的管理工具)的过程。他向您展示了如何使用 evmsn 来利用新硬盘、对它分区并在其上创建 LVM 卷。接着,他向您介绍了重要的 EVMS 概念,当您继续研究此功能强大的技术时,您会发现这些概念是必不可少的。
新磁盘
开始使用 EVMS 的最佳方法是找一个空闲的硬盘,并将其安装到系统上。然后,就可以为您重要的内容在这个空闲硬盘上创建和删除分区和卷,而不必担心您的数据会遭到破坏。下面,通过引导 Gentoo Linux Game CD(请参阅本文后面的 参考资料),我遵循了这个方法,这张 CD 实际上正好包含了 EVMS 1.0.1 支持。我使用 vmware(请查阅 参考资料,获取链接)来引导这张 CD,并将我的虚拟 PC 配置成包含一个 SCSI 磁盘,sda。当出现带有“login:”提示符的欢迎界面时,输入 root,并在密码提示符下按一下 Enter 键,这样我就以 root 用户登录到这个生动的基于 Gentoo Linux CD 的系统。然后输入 evmsn 启动 ncurses 版本的 EVMS 管理界面。当然,也可以选择仅仅将一个新硬盘挂装在已有的支持 EVMS 的系统上。另外,如果您有 X,那么可以考虑使用 evmsgui ,这是一个基于 GTK+ 的 EVMS 管理界面。尽管 evmsn 运行在使用 ncurses 的控制台上,而 evmsgui 使用更现代的、基于 GTK+ 的界面,但这两个程序的界面非常相似。了解了其中一个,则很容易转到另外一个。
现在,让我们开始使用 EVMS。由于我正在用这个控制台,所以我输入 evmsn ,出现以下屏幕:

图 1. EVMS 管理工具
EVMS
在这个屏幕上,可以看到 /dev/evms/sda ,它是我系统上唯一的卷。如果您在自己的机器上运行 EVMS,那么肯定会看到至少列出了两个额外的 /dev/evms/---- 项。通过使用上下方向键,可以在每个设备节点间移动。
您可能对这些 /dev/evms/--? 设备节点是什么正感到疑惑。乍一看,似乎它们可能仅仅是 /dev 中各个设备节点的副本;例如, /dev/evms/sda 仅仅与更传统的 /dev/sda 设备节点一样,表示同一个磁盘。那么,在 /dev/evms/ 目录中创建重复的设备节点有什么意义呢?回答是:EVMS 的工作之一是为系统上所有的卷创建统一的名称空间,而且它将这个名称空间创建在 /dev/evms 之下。所以,EVMS 检测到 sda 并识别出它应该属于 EVMS 名称空间,因此 EVMS 在 /dev/evms 中创建了相应的设备节点。现在正是一个最佳时间来指出:如果您没有在用 devfs,那么您可能需要运行 evms_devnode_fixup 程序来更新 /dev/evms 名称空间。
以下是另一段巧妙却又很重要的事实。尽管 EVMS 可以看到系统上所有的存储资源,但它可能不会为它找到的所有资源都创建 /dev/evms/ 设备节点项。例如,在我的开发系统中有两个硬盘 /dev/hde/dev/hdg 。但是,没有对应的 /dev/evms/hde/dev/evms/hdg 设备节点。当我查看 /dev/evms/ 时,发现的唯一设备节点是 /dev/evms/hde1 ,它表示第一个硬盘上的引导分区。现在,为什么是 /dev/evms/hde1 而不是 /dev/evms/hde 呢?唔,看来 EVMS 十分智能,它已识别出 hde 和 hdg 没有将其自身加入到卷中;相反,EVMS 可以看到我已经对 hde 和 hdg 进行了分区。它还可以看到我已用这些分区创建了 LVM 逻辑卷。/dev/evms/hde2 分区上的空间正用于更高级的存储对象,所以 EVMS 没有创建“ /dev/evms/hde2 ”设备节点。相反,它识别出我已创建的 LVM 卷,并在 /dev/evms/lvm 下为这些卷创建了设备节点:

清单 1. /dev/evms/lvm 下的设备节点
$ ls /dev/evms/lvm/*/* -l
brw-rw-rw-    1 root     root     117,   2 Dec 31  1969 /dev/evms/lvm/mainvg/root
brw-rw-rw-    1 root     root     117,   3 Dec 31  1969 /dev/evms/lvm/raid0vg/swap
brw-rw-rw-    1 root     root     117,   4 Dec 31  1969 /dev/evms/lvm/raid0vg/tmplv

这说明了 EVMS 遵循的一个重要原则:它只为它在系统上找到的 最终(而不是临时)存储对象创建设备节点。EVMS 将这些最终存储对象统称为“逻辑卷”,而不管它们实际上正好是磁盘、分区,还是 LVM 逻辑卷。正如稍后将看到的,当我们使用 evmsnevmsgui 管理工具时,在能看到 /dev/evms/ 中 EVMS 卷相对应的设备节点之前,需要显式地从存储对象上创建 EVMS 卷。假如我们不打算直接使用存储对象,而是计划用它来创建更高级的存储对象,在将存储对象转换成卷之前,EVMS 将不会为它创建设备节点。EVMS 主张在创建 /dev/evms 设备节点之前先创建卷,这样可以为我们提供保护,以免在输入 mke2fs /dev/evms/foo 时,会在不应该使用的设备节点上创建文件系统。由于存在这个行为,所以我们可以获得保证,即 /dev/evms/ 下的每个设备节点都包含或打算包含文件系统或交换空间。
尽管这个行为非常巧妙、有用而且还减少了混乱,但确实需要花些功夫才能领会它。为了真正理解这一点,以下是在我的开发工作站上运行的 evmsgui 的抓屏。正如您可以看到的,在我的存储资源中,只有四项被配置为卷,而且它们都被用于文件系统或交换空间。

图 2. evmsgui 实用程序
evmsgui
现在,回到 vmware EVMS 配置示例。如果您看了本文的第一个抓屏,那么会注意到,尽管 /dev/evms/sda 为空,但该磁盘还是显示为卷。这只是“细心的” EVMS 的另一个示例;尽管它不能检测到磁盘上任何有效的存储资源类型,但它还是将整个磁盘标记为卷,以便在开始使用该磁盘上的存储空间之前必须先 删除这个卷。这是一个极好的行为,因为理论上磁盘 可能包含一些 EVMS 完全不能识别的重要数据。通过采用这个方法,EVMS 就不会让人认为磁盘为空,也就不可能愚弄管理员(例如使他覆盖原始的 FreeBSD 卷),从而可以避免有风险的行为。这再一次说明了 EVMS 很巧妙,但乍一看它的行为稍微有点费解。
当然,在我这个特定情况下, /dev/emvs/sda 空,而且我需要对它进行分区。为此,我需要按如下那样先破坏 /dev/evms/sda 卷。首先,选中 /dev/evms/sda 之后,按一下 Enter 键:

图 3. 破坏卷
破坏卷
正如您可以看到的,这一操作产生了一个子菜单,其中有查看有关卷的细节、删除存储对象上的卷或破坏卷等选项。“破坏卷”和“删除存储对象上的卷”之间有一个很重要的区别;如果选择了前者,那么卷(以及该卷下的任何子对象)将被分解成它们的基本组件。但是,如果选择只删除卷,那么该卷将被破坏,但其子对象(如果存在的话)将完好无损地保留下来。“删除”和“破坏”之间的区别类似于剥去一层洋葱皮和将整只洋葱放到食品加工机中。
但是,在这个特定的例子中,我的洋葱只有一层,所以这两个选项将完成相同的事情。我决定选择“Destroy the volume”;在确认了我的选择并按任意键以返回到卷列表之后,现在您会看到这个操作的结果:“No logical volumes found”。
这个特定的视图突然变得非常令人讨厌,所以我将更改它。按一下“4”将弹出一个选择视图的子窗口。刚才,我在“Logical volumes”视图;现在转到“Available topmost storage objects”。完成选择后,现在我们能看到“sda”又在我们的列表中了!但与前面的操作不同,我们不查看卷,而是查看存储对象。如果接着做下去,对这个存储对象按一下 Enter 键,那么您将看到可以在“sda”上创建几个事物,其中包括一个 EVMS 或兼容性卷。
但是,我们真的不想这样做 ― 如果我们想在 sda 上创建卷,应该回到本文开始的地方,即首次装入 evmsn 时,一个卷包括了整个磁盘。相反,我想创建分区, 然后将分区转换成卷。为此,我按一下“4”(来选择视图),然后选择“Logical disks”。这里我看到了逻辑磁盘“sda”。是的,在“sda”存储对象和“sda”逻辑磁盘之间 存在一个重要的区别。把“sda”作为存储对象来处理,我们可以将它转换成卷,或使用它来构建更高级的存储对象。但把“sda”作为磁盘来处理允许我把磁盘分割成多个分区(在 EVMS 的行话中称为“段(segment)”),这些分区反过来可以用作存储对象。为此,我按一下 Enter 键,弹出一个菜单,其中提供对磁盘分配段管理器的选项:

图 4. 分配段管理器
分配段管理器
现在,如果 与分区是一回事,则您可能想知道 段管理器是什么。可以将段管理器比作“分区方法”或方案。一旦我们选择了段管理器,EVMS 会在磁盘上存放一些元数据,同时创建主引导记录并将磁盘上的剩余空间标记为“freespace”,使之用于新段。要划分新段,可以从屏幕的菜单上选择“DefaultSegMgr”,再按一下 Enter 键,然后按下空格键。选择“sda”作为接收段管理器的对象。然后,再按一下 Enter 键,选择磁盘的类型为“Linux”(选项中还有“OS/2”),并按一下 Enter 键继续。按下一个键后,现在我按一下“4”(选择视图),然后选择“Disk Segments”以查看我已创建的新段:

图 5. 创建新段
创建新段
现在我的磁盘有一个主引导记录,然后准备创建新的分区,即 EVMS 行话中的“段”。当我创建新段时,“sda_freespace1”段的大小将减少;如果我将磁盘上所有可用空间都用于创建分区,则 sda_freespace1 段将完全消失。如果硬盘上的可用存储空间确实完全映射到我选择的分区大小,则也可能继续保留剩余的很小的 sda_freespace1。
现在,为了创建那些段,当鼠标停留在“sda_freespace1”上时按一下 Enter 键,随后选择“Create a New Segment”。接着,选择 DefaultSegMgr 插件,并通过按一下空格键来接受使用 sda_freespace1 对象,随后按一下 Enter 键。接着,在磁盘的开始部分,创建一个很小的引导分区,用来保存内核。为此,我将按两次空格键,然后输入“100”以将分区大小设置为 100 MB,接着在 Bootable 选项上按两次空格键来将“Bootable”设置为真。最后,按一下 Enter 键以创建新的分区。重复这些步骤,然后可以创建用于文件系统的其它分区和交换分区。一些注意事项:如果需要创建的分区多于四个,那么请记住在创建引导卷之后切换掉“Primary Partition”选项。还要记住在创建交换分区时,将“Partition Type”设置为“Linux Swap”。
最后一步是在“sda1”、“sda2”和“sda3”上按一下 Enter 键。会出现一个菜单,其中会显示“Create Compatibility Volume from the Segment”的选项。在选择这个选项之后,段将被配置成包含一个可以使用的逻辑卷,这意味着它现在在 /dev/evms/ 下有一个设备节点。另外,因为我选择创建 兼容性卷,所以即使刚好用非 EVMS 内核重新引导了系统,也可以使用新卷。如果选择了“Create EVMS Volume”,那么这就是另外的情况了。请注意 EVMS 版本 1.1.0 及其更高级版本允许您将兼容性卷转换成 EVMS 卷,反之亦然。




回页首


结束语
至此,您应该掌握 EVMS 了吧,通过使用 EVMS,我已经对一个系统磁盘进行了分区。尽管这不是一个惊天动地的成就,但在您尝试如创建存储容器、LVM 逻辑卷、RAID 卷、快照以及其它吸引人的事物之前,这样一次经历将有助于向您提供所需的 EVMS 基础知识。当然,本文中我没有留出篇幅涉及这些主题,但我希望在明年能陆续讨论其中某些 EVMS 应用程序。但首先,在讨论其它话题之前,先结束“高级文件系统实现者指南”。希望您喜欢这次旅行:)


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

  • Daniel 在高级文件系统实现者指南的第 12 部分“ EVMS 简介”( developerWorks,2002年 10 月)中介绍了 EVMS。



  • 在 SourceForge 上访问 EVMS 项目的正式开发主页,您可以从那里订阅 邮件列表并阅读 EVMS 文档以及其它内容。



  • 访问 freenode 上的 #evms 频道(原先的 Open Projects Net)IRC 网络。几个 EVMS 开发人员会定期光顾 #evms。



  • VMware是一个虚拟机软件包。



  • 了解有关 Gentoo Linux的更多信息。



  • 开始研究 EVMS 的捷径是下载 Gentoo Linux Game/Install 迷你 CD ― 从 Gentoo 1.4 x86 下载目录获取 livecd-ut2003-i586-1.4.1.iso



  • 在 Daniel 的系列文章中查找有关 Linux 软件 RAID 的信息:
    • 第 1 部分:简介和安装( developerWorks,2001 年 2 月)
    • 第 2 部分:在生产环境中的安装( developerWorks,2001 年 2 月)


  • Daniel 在下列文章中研究了 Linux 逻辑卷管理:
    • 第 1 部分:了解 LVM( developerWorks,2001年 3 月)
    • 第 2 部分:cvs.gentoo.org 升级( developerWorks,2001 年 4 月)


  • developerWorksLinux 专区查找 更多 Linux 文章。


关于作者
Daniel
Daniel Robbins 住在新墨西哥的 Albuquerque,是 Gentoo Linux的首席架构师,Gentoo Linux 是一个基于端口的高级 Linux 系统,用在 x86、PowerPC、Sparc 和 Sparc64 系统上。他还为多本书撰稿,包括 Samba UnleashedSuSE Linux Unleashed。Daniel 和他的妻子 Mary 和女儿 Hadassah 在一起的时间过得很开心。您可以通过 [email protected]与 Daniel 联络。

你可能感兴趣的:(实现,文件系统,指南,高级,部分)