跳转到主要内容

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

所有提交的信息确保安全。

  • 关闭 [x]

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

所有提交的信息确保安全。

  • 关闭 [x]

通用线程: 高级文件系统实现者指南,第 13 部分

EVMS 详情

Daniel Robbins (drobbins@gentoo.org), 总裁/CEO, Gentoo Technologies,Inc.
Daniel Robbins
Daniel Robbins 住在新墨西哥的 Albuquerque,是 Gentoo Linux的首席架构师,Gentoo Linux 是一个基于端口的高级 Linux 系统,用在 x86、PowerPC、Sparc 和 Sparc64 系统上。他还为多本书撰稿,包括 Samba UnleashedSuSE Linux Unleashed。Daniel 和他的妻子 Mary 和女儿 Hadassah 在一起的时间过得很开心。您可以通过 drobbins@gentoo.org与 Daniel 联络。

简介: 在高级文件系统实现者指南中,Daniel Robbins 向您展示了如何在 Linux 2.4 中使用最新的文件系统技术。在 AFIG 系列文章的这一结束篇中,Daniel 继续讨论用于 Linux 的企业卷管理系统(Enterprise Volume Management System,简称 EVMS)。他向您显示了如何使用来利用新硬盘,对它分区并在其上创建 LVM 卷。接着,他向您介绍了重要的 EVMS 概念,当您继续研究此功能强大的技术时,您会发现这些概念是必不可少的。

发布日期: 2002 年 9 月 16 日
级别: 初级
访问情况 : 2065 次浏览
评论: 


欢迎阅读高级文件系统实现者指南的最后一篇专栏文章。在本文中,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 应用程序。但首先,在讨论其它话题之前,先结束“高级文件系统实现者指南”。希望您喜欢这次旅行:)


参考资料

关于作者

Daniel Robbins

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

关于报告滥用的帮助

报告滥用

谢谢! 此内容已经标识给管理员注意。


关于报告滥用的帮助

报告滥用

报告滥用提交失败。 请稍后重试。


developerWorks:登录


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 使用条款

 


当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

请选择您的昵称:

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

(长度在 3 至 31 个字符之间)


单击提交则表示您同意developerWorks 的条款和条件。 使用条款.

 


为本文评分

评论

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Linux
ArticleID=20739
ArticleTitle=通用线程: 高级文件系统实现者指南,第 13 部分
publish-date=09162002
author1-email=drobbins@gentoo.org
author1-email-cc=

标签

Help
使用 搜索 文本框在 My developerWorks 中查找包含该标签的所有内容。

使用 滑动条 调节标签的数量。

热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。

我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。

使用搜索文本框在 My developerWorks 中查找包含该标签的所有内容。热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。