Copyright © 2004 IBM
2004 年 9 月 16 日
特别声明
以下术语是国际商业机器公司在美国和/或其他国家的注册商标:AIX、OS/2、System/390。有关 IBM 拥有的美国商标的完整列表,请访问 http://www.ibm.com/legal/copytrade.shtml。
Intel 是英特尔公司在美国、其他国家或两者的商标或注册商标。
Windows 是微软公司在美国、其他国家或两者的商标。
Linux 是 Linus Torvalds 的商标。
UNIX 是开放组织在美国和其他国家的注册商标。
其他公司、产品和服务的名称可能是其他公司的商标或服务标志。
本文档按“现状”提供,不提供任何明示或暗示的担保。使用本文档中的信息风险自负。
本指南介绍了如何配置和管理企业卷管理系统 (EVMS)。EVMS 是一种存储管理程序,它为管理和管理系统的存储提供了一个单一框架。
本指南适用于负责设置和维护 EVMS 的 Linux 系统管理员和用户。
有关 EVMS 的更多信息或询问特定于您的发行版的问题,请参阅 EVMS 邮件列表。您可以从 EVMS 项目网站查看列表存档或订阅列表。
下表显示了本指南的组织结构
表 1. EVMS 用户指南的组织结构
章节或附录标题 | 内容 |
---|---|
1. 什么是 EVMS? | 讨论了 EVMS 的一般概念和术语。 |
2. 使用 EVMS 界面 | 描述了三个 EVMS 用户界面以及如何使用它们。 |
3. EVMS 日志文件和错误数据收集 | 讨论了 EVMS 信息和错误日志文件,并解释了如何更改日志记录级别。 |
4. 迁移后查看兼容性卷 | 介绍了如何查看已迁移到 EVMS 的现有文件。 |
5. 获取界面显示详细信息 | 介绍了如何查看有关 EVMS 对象的详细信息。 |
6. 添加和删除段管理器 | 讨论了段,并解释了如何添加和删除段管理器。 |
7. 创建段 | 解释了何时以及如何创建段。 |
8. 创建容器 | 讨论了容器,并解释了何时以及如何创建容器。 |
9. 创建区域 | 讨论了区域,并解释了何时以及如何创建区域。 |
10. 创建驱动器链接 | 讨论了驱动器链接功能,并介绍了如何创建驱动器链接。 |
11. 创建快照 | 讨论了快照,并介绍了如何创建快照。 |
12. 创建卷 | 解释了何时以及如何创建卷。 |
13. FSIM 和文件系统操作 | 讨论了 EVMS 附带的标准 FSIM,并提供了添加文件系统以及使用 FSIM 协调文件检查的示例。 |
14. 集群操作 | 描述了 EVMS 集群以及如何创建私有和共享容器。 |
15. 转换卷 | 解释了如何将 EVMS 原生卷转换为兼容性卷,以及将兼容性卷转换为 EVMS 原生卷。 |
16. 扩展和收缩卷 | 介绍了如何使用各种 EVMS 用户界面扩展和收缩 EVMS 卷。 |
17. 向现有卷添加功能 | 介绍了如何向现有卷添加其他功能,例如驱动器链接。 |
18. 选择性激活卷和对象 | 解释了如何选择性地激活和停用卷和选项。 |
19. 从 EVMS 内部挂载和卸载卷。 | 介绍了如何让 EVMS 挂载和卸载卷,这样您就不必打开单独的终端会话。 |
20. 插件操作任务 | 讨论了在特定插件上下文中可用的插件任务。 |
21. 删除对象 | 介绍了如何安全地删除 EVMS 对象。 |
22. 替换对象 | 介绍了如何更改卷或存储对象的配置。 |
23. 移动段存储对象 | 讨论了如何使用移动功能来移动段。 |
A. DOS 插件 | 提供了有关 DOS 插件的详细信息,DOS 插件是一个段管理器插件。 |
B. MD 区域管理器 | 解释了 Linux 中作为 RAID 软件实现的多个磁盘 (MD) 支持。 |
C. LVM 插件 | 介绍了 LVM 插件的实现方式以及如何执行容器操作。 |
D. LVM2 插件 | 介绍了 LVM2 插件的实现方式以及如何在 LVM2 容器上执行容器操作。 |
E. CSM 插件 | 解释了集群段管理器 (CSM) 插件的实现方式以及如何执行 CSM 操作。 |
F. JFS 文件系统接口模块 | 提供了有关 JFS FSIM 的信息。 |
G. XFS 文件系统接口模块 | 提供了有关 XFS FSIM 的信息。 |
H. ReiserFS 文件系统接口模块 | 提供了有关 ReiserFS FSIM 的信息。 |
I. Ext-2/3 文件系统接口模块 | 提供了有关 Ext-2/3 FSIM 的信息。 |
J. OpenGFS 文件系统接口模块 | 提供了有关 OpenGFS FSIM 的信息。 |
K. NTFS 文件系统接口模块 | 提供了有关 NTFS FSIM 的信息。 |
EVMS 为 Linux® 带来了新的卷管理模型。EVMS 集成了卷管理的所有方面,例如磁盘分区、Linux 逻辑卷管理器 (LVM) 和多磁盘 (MD) 管理以及文件系统操作,集成到一个统一的软件包中。借助 EVMS,可以通过一个界面访问各种卷管理技术,并且可以在开发新技术时以插件形式添加新技术。
EVMS 使您能够以比许多其他 Linux 卷管理系统更直观和灵活的方式管理存储空间。使用 EVMS,迁移磁盘或向 Linux 系统添加新磁盘等实际任务变得更易于管理,因为 EVMS 可以识别和读取不同的卷类型和文件系统。EVMS 通过不允许不安全的命令来提供额外的安全控制。这些控制有助于维护存储在系统上的数据的完整性。
您可以使用 EVMS 创建和管理数据存储。借助 EVMS,您可以在一个框架下使用多种卷管理技术,同时确保您的系统仍然与存储的数据正确交互。借助 EVMS,您可以驱动器链接、收缩和扩展卷、创建卷的快照,以及为您的系统设置 RAID(独立磁盘冗余阵列)功能。您还可以使用多种类型的文件系统,并以最满足您的特定工作环境需求的方式操作这些存储片段。
EVMS 还提供了管理集群中节点物理共享的存储上的数据的能力。这种共享存储允许数据从集群中的不同节点高度可用。
目前有三种用户界面可用于 EVMS:图形界面 (GUI)、文本模式界面 (Ncurses) 和命令行解释器 (CLI)。此外,您可以使用 EVMS 应用程序编程接口来实现您自己的自定义用户界面。
表 1-1 详细介绍了每个 EVMS 用户界面。
为了避免与其他描述通用卷管理的术语混淆,EVMS 使用了一组特定的术语。这些术语从最基本到最全面地列出,如下所示
EVMS 可以作为物理磁盘访问的任何事物的表示形式。在 EVMS 中,物理磁盘是逻辑磁盘。
块设备上可寻址的最低级别。此定义与其他管理系统中发现的标准含义保持一致。
驻留在同一存储对象上的一组有序的物理连续扇区。段的一般类比是传统的磁盘分区,例如 DOS 或 OS/2 ®
一组有序的逻辑连续扇区,这些扇区不一定是物理连续的。
EVMS 中任何持久性内存结构,可用于构建对象或创建卷。存储对象是磁盘、段、区域和功能对象的通用术语。
存储对象的集合。存储容器消耗一组存储对象并生成新的存储对象。存储容器的一个常见子集是卷组,例如 AIX® 或 LVM。
存储容器可以是私有类型或集群类型。
专门的存储容器,仅消耗集群所有节点都可以物理访问的磁盘对象。
一组集群所有节点都可以物理访问的磁盘,作为一个单一的存储池进行管理,并在任何给定时间由集群的单个节点拥有和访问。
一组集群所有节点都可以物理访问的磁盘,作为一个单一的存储池进行管理,并由集群的所有节点同时拥有和访问。
不属于集群任何节点的共享集群容器。
包含 EVMS 原生功能的存储对象。
EVMS 原生功能 是由 EVMS 设计和实现的卷管理功能。这些功能并非旨在向后兼容其他卷管理技术。
消耗存储对象并导出可挂载内容的卷。逻辑卷有两种类型:EVMS 卷 和 兼容性卷。
EVMS 卷 包含 EVMS 原生元数据,可以支持所有 EVMS 功能。/dev/evms/my_volume将是 EVMS 卷的示例。
兼容性卷 不包含任何 EVMS 原生元数据。兼容性卷与其特定方案向后兼容,但它们不能支持 EVMS 功能。/dev/evms/md/md0将是兼容性卷的示例。
Linux 内核中有许多驱动程序,例如设备映射器和 MD(软件 RAID),它们实现了卷管理方案。EVMS 构建在这些驱动程序之上,以提供一个框架来组合和访问这些功能。
EVMS 引擎处理卷、段和磁盘的创建、配置和管理。EVMS 引擎是 EVMS 系统的编程接口。使用 EVMS 的用户界面和程序必须通过引擎。
EVMS 提供了引擎的插件模块的功能,这些模块允许 EVMS 执行专门的任务,而无需更改核心代码。这些插件模块使 EVMS 比其他卷管理系统更具可扩展性和可定制性。
EVMS 定义了一个分层架构,其中每一层中的插件都创建了下层或多层的抽象。EVMS 还允许大多数插件创建同一层中对象的抽象。以下列表从底层到顶层定义了这些层。
第一层(底层)由设备管理器组成。这些插件与硬件设备驱动程序通信以创建第一个 EVMS 对象。目前,所有设备都由单个插件处理。未来版本的 EVMS 可能需要额外的设备管理器用于网络设备管理(例如,管理存储区域网络 (SAN) 上的磁盘)。
第二层由段管理器组成。这些插件处理磁盘驱动器的分段或分区。引擎组件可以替换分区程序,例如 fdisk 和 Disk Druid,并且 EVMS 使用设备映射器来替换内核中的磁盘分区代码。段管理器也可以“堆叠”,这意味着一个段管理器可以将另一个段管理器的输出作为输入。
EVMS 提供以下段管理器:DOS、GPT、System/390® (S/390)、Cluster、BSD、Mac 和 BBR。可以添加其他段管理器插件以支持其他分区方案。
第三层由区域管理器组成。此层为插件提供了一个位置,以确保与 Linux 和其他操作系统中现有的卷管理方案兼容。区域管理器旨在对在磁盘或分区之上提供逻辑抽象的系统进行建模。
与段管理器一样,区域管理器也可以堆叠。因此,区域管理器的输入对象可以是磁盘、段或其他区域。
目前 EVMS 中有三个区域管理器插件:Linux LVM、LVM2 和多磁盘 (MD)。
Linux LVM 插件提供与 Linux LVM 的兼容性,并允许创建卷组(在 EVMS 中称为容器)和逻辑卷(在 EVMS 中称为区域)。
LVM2 插件提供与 Red Hat 的 LVM2 工具引入的新卷格式的兼容性。此插件在功能上与 LVM 插件非常相似。主要区别在于新的、改进的元数据格式。
用于 RAID 的多磁盘 (MD) 插件在软件中提供 RAID 级别 linear、0、1、4 和 5。MD 是一个插件,显示为四个区域管理器,您可以从中选择。
下一层由 EVMS 功能组成。此层是实现新的 EVMS 原生功能的地方。EVMS 功能可以构建在系统中的任何对象上,包括磁盘、段、区域或其他功能对象。所有 EVMS 功能共享一种通用类型的元数据,这使得功能对象的发现效率更高,并且损坏的功能对象的恢复更可靠。EVMS 目前提供三种功能:驱动器链接、坏块重定位和快照。
驱动器链接允许将任意数量的对象线性连接成单个对象。驱动器链接卷可以通过在末尾添加另一个存储对象来扩展,或者通过删除最后一个对象来收缩。
坏块重定位 (BBR) 监视其 I/O 路径并检测写入失败(这可能是由磁盘损坏引起的)。如果发生此类故障,则来自该请求的数据将存储在新位置。BBR 跟踪此重映射。到该位置的其他 I/O 将重定向到新位置。
快照功能提供了一种在单个时间点创建卷的“冻结”副本的机制,而无需使该卷脱机。这对于在实时系统上执行备份非常有用。快照可与任何卷(EVMS 或兼容性)一起使用,并且可以使用任何其他可用对象作为后备存储。创建快照并将其制成 EVMS 卷后,对“原始”卷的写入会导致该位置的原始内容被复制到快照的存储对象。对快照卷的读取看起来像是来自创建快照时的原始卷。
文件系统接口模块 (FSIM) 在某些卷管理操作期间提供与文件系统的协调。例如,在扩展或收缩卷时,文件系统也必须扩展或收缩到适当的大小。此示例中的顺序也很重要;文件系统不能在卷之前扩展,卷也不能在文件系统之前收缩。FSIM 允许 EVMS 确保这种协调和排序。
FSIM 还从 EVMS 用户界面之一执行文件系统操作。例如,用户可以通过与 FSIM 交互来创建新的文件系统和检查现有的文件系统。
集群管理器接口模块,也称为 EVMS 集群引擎 (ECE),与系统上安装的本地集群管理器接口。ECE 向引擎提供标准化的 ECE API,同时向引擎隐藏集群管理器详细信息。
本章介绍了如何使用 EVMS GUI、Ncurses 和 CLI 界面。本章还包括有关基本导航和通过 CLI 可用的命令的信息。
EVMS GUI 是一个灵活且易于使用的界面,用于管理卷和存储对象。许多用户发现 EVMS GUI 易于使用,因为它显示了哪些存储对象、操作和插件对于特定任务是可接受的。
EVMS GUI 允许您通过两种方式完成大多数任务:上下文敏感菜单或
菜单。上下文敏感菜单在任何主“视图”中都可用。每个视图对应于 EVMS GUI 主窗口上的笔记本小部件中的一个页面。这些视图由不同的树或列表组成,它们以可视方式表示不同对象类型的组织结构,包括卷、特征对象、区域、容器、段或磁盘。
您可以通过右键单击对象来查看该对象的上下文敏感菜单。屏幕上会显示可用于该对象的操作。GUI 将仅显示在该过程的该点上可接受的所选对象的操作。这些操作并不总是完整的集合。
要使用
菜单,请选择 -> -> 。 菜单提供了比上下文敏感菜单更具引导性的任务完成路径。 选项类似于许多 GUI 应用程序使用的向导或引导程序方法。您作为管理员需要执行的所有操作都可以通过
菜单获得。您在 EVMS GUI 中进行的所有更改都仅在内存中,直到您保存更改为止。为了使您的更改永久生效,您必须在退出之前保存所有更改。如果您忘记保存更改并决定退出或关闭 EVMS GUI,系统会提醒您保存任何待处理的更改。
要显式保存您所做的所有更改,请选择
-> ,然后单击 按钮。在 GUI 中面板视图的左侧,每个项目旁边都有一个“+”。当您单击“+”时,会显示包含在该项目中的对象。如果任何显示的对象旁边也有“+”,您可以通过单击每个对象名称旁边的“+”来进一步展开它们。
您可以使用一系列按键或“快捷键”来代替鼠标导航 EVMS GUI。以下部分介绍了如何在 EVMS 主窗口、选择窗口和配置选项窗口中使用快捷键。
在主窗口视图中,使用以下按键进行导航
在视图中时,使用以下按键进行导航
要访问操作栏菜单,请按 Alt 键,然后按菜单选项的带下划线的快捷键(例如,“A”表示
下拉菜单)。在下拉菜单中,您可以使用向上和向下箭头进行导航。您也可以直接键入菜单项的快捷键,即带有下划线的字符。例如,要启动删除容器的命令,请键入 Alt + “A” + “D” + “C”。
Ctrl-S 是启动保存更改的快捷方式。Ctrl-Q 是启动退出 EVMS GUI 的快捷方式。
EVMS Ncurses (evmsn) 用户界面是一个菜单驱动的界面,其特性与 EVMS GUI 的特性相似。与 EVMS GUI 一样,evmsn 可以容纳新的插件和功能,而无需任何代码更改。
EVMS Ncurses 用户界面允许您在没有 EVMS GUI 所需的 X 和 GTK+ 库的系统上管理卷。
EVMS Ncurses 用户界面最初显示一个逻辑卷列表,类似于 EVMS GUI 中的逻辑卷视图。Ncurses 还提供一个菜单栏,类似于 EVMS GUI 中的菜单栏。
下面列出了在 Ncurses 窗口布局中导航的一般指南
Tab 键在可用视图之间循环。
状态消息和提示显示在屏幕的最后一行。
键入任何菜单项的快捷字符(红色突出显示的字母)将激活该项目。例如,在任何视图中键入 A 将下拉
菜单。在视图中键入 A + Q 将退出应用程序。
在视图中键入 A + S 将保存在 evmsn 会话期间所做的更改。
使用 向上 和 向下 箭头突出显示视图中的对象。当视图中的对象被突出显示时,按下 回车 键将显示上下文弹出菜单。
通过按下 Esc 键或使用 向上 和 向下 箭头选择菜单项并按下 回车 键激活菜单项来关闭上下文弹出菜单。
对话窗口在设计上与 EVMS GUI 对话框类似,它允许用户使用
和 在一系列对话框中向前和向后导航。下面列出了对话窗口的一般指南Tab 键在可用按钮之间循环。请注意,在进行有效选择之前,某些按钮可能不可用。
也可以使用 向左 和 向右 箭头移动到可用的按钮。
使用 向上 和 向下 箭头导航选择列表。
使用 空格键 切换列表中项目的选择。
使用 回车 键激活当前具有焦点的按钮。如果按钮具有快捷字符(红色突出显示),您也可以通过键入快捷字符来激活按钮,而无需考虑该按钮是否具有当前焦点。
与 EVMS GUI 一样,EVMS Ncurses 用户界面为仅对视图中所选对象可用的操作提供上下文菜单。Ncurses 还为
菜单中可用的项目提供上下文菜单。这些上下文菜单显示可用于特定对象的命令列表。EVMS 命令行解释器 (EVMS CLI) 为 EVMS 提供了一个命令驱动的用户界面。EVMS CLI 帮助自动化卷管理任务,并在 EVMS GUI 不可用的情况下提供交互模式。
由于 EVMS CLI 是一个解释器,因此它的操作方式与操作系统的命令行实用程序不同。您在 EVMS CLI 命令行上指定的选项用于调用 EVMS CLI 控制 EVMS CLI 的操作方式。例如,命令行选项告诉 CLI 从哪里获取要解释的命令以及 EVMS CLI 必须多久将更改保存到磁盘。调用时,EVMS CLI 会提示输入命令。
EVMS CLI 理解的卷管理命令在/usr/src/evms-2.2.0/engine2/ui/cli/grammar.ps文件中指定,该文件随 EVMS 软件包一起提供。这些命令在 EVMS 手册页中详细描述,并且可以从 EVMS CLI 中获得有关这些命令的帮助。
使用 evms 命令启动 EVMS CLI。如果您没有使用 evms 输入选项,EVMS CLI 将以交互模式启动。在交互模式下,EVMS CLI 会提示您输入命令。每个命令的结果都会立即保存到磁盘。当您键入exit时,EVMS CLI 退出。您可以使用以下 evms 选项修改此行为
此选项表示您正在批量模式下运行,并且任何时候提示用户输入时,都会自动接受默认值。这是 -f 选项的默认行为。
此选项仅在 EVMS CLI 退出时将更改保存到磁盘,而不是在每个命令之后保存。
此选项告诉 EVMS CLI 使用filename作为命令的源。当 EVMS CLI 到达filename.
此选项仅解析命令;它不执行它们。与 -f 选项结合使用时,-p 选项检测命令文件中的语法错误。
此选项显示与 evms 命令一起使用的选项的帮助信息。
此选项告诉 CLI 命令行上的所有剩余项目都是用于 EVMS 命令的替换参数。
![]() | 注意 | |
---|---|---|
替换参数使用$(x)表示法在 EVMS 命令中访问,其中x是标识要使用的替换参数的编号。替换参数在命令行上遇到时被分配编号(从 1 开始)。替换不会在注释或带引号的字符串中进行。 一个例子是
sda是parameter1的替换,以及sdb是parameter2 |
![]() | 注意 |
---|---|
有关不太常用的选项的信息,请参见 EVMS 手册页。 |
EVMS CLI 允许在命令行上显示多个命令。当您在单个命令行上指定多个命令时,请使用冒号 ( : ) 分隔命令。这对于命令文件很重要,因为 EVMS CLI 将命令文件视为单个长命令行。EVMS CLI 没有文件行的概念,并且忽略空格。这些功能允许命令文件中的命令跨越多行,并使用任何方便的缩进或边距。唯一的要求是命令分隔符(冒号)必须存在于命令之间。
除非空格出现在引号内,否则 EVMS CLI 会忽略空格。将包含空格或其他非打印或控制字符的名称放在引号中。如果名称包含作为名称一部分的引号,则引号必须“加倍”,如以下示例所示
"This is a name containing ""embedded"" quote marks." |
EVMS CLI 关键字不区分大小写,但 EVMS 名称区分大小写。大小可以使用任何单位输入,并带有单位标签,例如 KB、MB、GB 或 TB。
最后,EVMS CLI 支持 C 编程语言风格的注释。注释可以在任何位置开始和结束,但不能在带引号的字符串中,如以下示例所示
/* This is a comment */ Create:Vo/*This is a silly place for a comment, but it is allowed.*/lume,"lvm/Sample Container/My LVM Volume",compatibility |
本章讨论 EVMS 信息和错误日志文件以及各种日志级别。它还解释了如何更改日志级别。
每次打开 Engine 时,EVMS Engine 都会创建一个名为/var/log/evmsEngine.log的日志文件。Engine 还将最多九个以前的 Engine 会话的副本保存在文件/var/log/evmsEngine.n.log中,其中n是 1 到 9 之间的会话编号。
您可以选择在/var/log/evmsEngine.log中收集几种可能的日志级别。“最低”日志级别,critical仅收集有关严重系统问题的消息,而“最高”级别,everything收集所有与日志相关的消息。当您指定特定的日志级别时,Engine 会收集该级别及其以下所有级别的消息。
下表列出了允许的日志级别及其提供的信息
默认情况下,当打开任何 EVMS 界面时,Engine 会将Default级别的消息记录到/var/log/evmsEngine.log文件中。但是,如果您的系统遇到问题并且您想查看更多正在发生的事情,您可以将日志级别更改为更高;如果您想要更少的日志消息,您可以将日志级别更改为更低。要更改日志级别,请在界面打开调用中指定 -d 参数和日志级别。以下示例显示了如何使用最高日志级别 (everything):
GUI: evmsgui -d everything |
Ncurses: evmsn -d everything |
CLI: evms -d everything |
![]() | 注意 |
---|---|
如果您使用 EVMS 邮件列表寻求问题帮助,请向我们提供在您打开其中一个界面时创建的日志文件(如之前的命令所示),这将使我们更容易帮助您。 |
EVMS GUI 允许您在 Engine 会话期间更改日志级别。要这样做,请按照以下步骤操作
选择
-> -> 。单击您想要的
。CLI 命令 probe 打开和关闭 Engine,这将导致新的日志开始。在发出 probe 命令之前存在的日志被重命名为/var/log/evmsEngine.1.log,新的日志被命名为/var/log/evmsEngine.log.
如果您经常使用与默认日志级别不同的日志级别,您可以在/etc/evms.conf中指定默认日志级别,而不是在启动用户界面时必须使用 -d 选项。“engine”部分中的“debug_level”选项设置 Engine 打开时的默认日志级别。在命令调用期间使用 -d 选项会覆盖/etc/evms.conf.
迁移到 EVMS 使您能够在不丢失现有数据完整性的情况下拥有 EVMS 的灵活性。EVMS 将现有的卷管理卷发现为兼容性卷。安装 EVMS 后,您可以使用您选择的界面查看现有卷。
EVMS 界面允许您查看比 EVMS 用户界面的主视图中更容易获得的有关 EVMS 对象的更详细信息。可用附加信息的类型和范围取决于您使用的界面。例如,EVMS GUI 比 CLI 提供更深入的信息。
以下部分显示了如何查找有关区域lvm/Sample Container/Sample Region的详细信息,该区域是卷/dev/evms/Sample Volume(在第 10.2 节中创建)的一部分。
使用 EVMS GUI,只能通过上下文敏感菜单显示对象的其他详细信息,如下列步骤所示
查看
,单击卷旁边的“+”/dev/evms/Sample Volume。或者,查看 视图。右键单击lvm/Sample Container/Sample Region.
指向
并单击。将打开一个新窗口,其中包含有关所选区域的更多信息。单击
旁边的 。将打开另一个窗口,其中显示逻辑盘区到物理盘区的映射。按照以下步骤使用 Ncurses 显示对象的其他详细信息
按 Tab 键到达存储区域视图。
使用 向下 箭头向下滚动,直到lvm/Sample Container/Sample Region被突出显示。
按 回车 键。
在上下文菜单中,使用 向下 箭头向下滚动以突出显示“显示详情...”
按 回车 键激活菜单项。
在“详细信息”对话框中,使用 向下 箭头突出显示“逻辑盘区”项目,然后使用 空格键 打开另一个窗口,其中显示逻辑盘区到物理盘区的映射。
使用 query 命令(缩写为 q)和过滤器来显示有关 EVMS 对象的详细信息。有两个过滤器对于在命令行中导航特别有帮助:list options(缩写为 lo)和 extended info(缩写为 ei)。
list options 命令告诉您当前可以执行的操作以及可以指定的选项。要使用此命令,请首先构建一个传统的查询命令,以命令名称 query 开头,后跟冒号 (:),然后是要查询的对象类型(例如,卷、对象、插件)。然后,您可以使用过滤器将搜索范围缩小到您感兴趣的区域。例如,要确定当前时间对lvm/Sample Container/Sample Region可接受的操作,请输入以下命令
query: regions, region="lvm/Sample Container/Sample Region", list options |
extended info 过滤器等效于 EVMS GUI 和 Ncurses 界面中的“显示详情”。该命令采用以下形式:query,后跟冒号 (:),过滤器 (extended info),逗号 (,),以及您想要更多信息的对象。该命令返回一个列表,其中包含为对象定义的每个字段的字段名称、标题、描述和值。例如,要获取有关lvm/Sample Container/Sample Region可接受的操作,请输入以下命令
query: extended info, "lvm/Sample Container/Sample Region" |
的详细信息,extended info 过滤器返回的许多字段名称可以通过在命令末尾指定字段名称或名称(以逗号分隔)来进一步扩展。例如,如果您想要有关逻辑盘区的其他信息,则查询将如下所示
query: extended info, "lvm/Sample Container/Sample Region", Extents |
本章讨论何时使用分段管理器、不同类型的分段管理器是什么、如何将分段管理器添加到磁盘以及如何删除分段管理器。
将分段管理器添加到磁盘允许将磁盘细分为更小的存储对象,称为磁盘分段。add 命令使分段管理器创建适当的元数据并公开分段管理器在磁盘上找到的空闲空间。当您有新磁盘或从一种分区方案切换到另一种分区方案时,您需要添加分段管理器。
EVMS 将磁盘分段显示为以下类型
数据:一组从磁盘分配的连续扇区,可用于构建卷或对象。
空闲空间:一组未分配或未使用的连续扇区。空闲空间可用于创建分段。
元数据:一组包含分段管理器所需信息的连续扇区。
EVMS 中有七种类型的分段管理器:DOS、GPT、S/390、Cluster、BSD、MAC 和 BBR。
最常用的分段管理器是 DOS 分段管理器。此插件提供对传统 DOS 磁盘分区的支持。DOS 分段管理器还识别并支持 DOS 分区方案的以下变体
OS/2:OS/2 磁盘具有额外的元数据扇区,其中包含重建磁盘分段所需的信息。
嵌入式分区:对 BSD、SolarisX86 和 UnixWare 的支持有时会嵌入在主 DOS 分区中。DOS 分段管理器识别并支持这些切片作为磁盘分段。
GUID 分区表 (GPT) 分段管理器处理 IA-64 机器上的新 GPT 分区方案。英特尔 可扩展固件接口规范 要求固件能够发现分区并生成与磁盘分区对应的逻辑设备。规范中描述的分区方案称为 GPT,因为它广泛使用全局唯一标识符 (GUID) 标记。GUID 是一个 128 位长的标识符,也称为通用唯一标识符 (UUID)。正如英特尔 有线管理基线规范 中所述,GUID 是时间和空间字段的组合,可生成在整个 UUID 空间中唯一的标识符。这些标识符广泛用于 GPT 分区磁盘上,用于标记整个磁盘和各个分区。GPT 分区磁盘具有多种功能,例如
保留元数据的主副本和备份副本
通过允许多个分区来替换 msdos 分区嵌套
使用 64 位逻辑块寻址
使用 GUID 描述符标记分区和磁盘
GPT 分段管理器可以更好地扩展到大型磁盘。它通过增加的可靠性提供更多的冗余,并使用唯一的名称。但是,GPT 分段管理器与 DOS、OS/2 或 Windows® 不兼容。
S/390 分段管理器专门用于 System/390 大型机。S/390 分段管理器能够识别 S/390 机器上发现的各种磁盘布局,并为此架构提供磁盘分段支持。两种最常见的磁盘布局是 Linux 磁盘布局 (LDL) 和通用磁盘布局 (CDL)。
LDL 和 CDL 之间的主要区别在于 LDL 磁盘不能进一步细分。LDL 磁盘将生成单个元数据磁盘分段和单个数据磁盘分段。LDL 磁盘上没有空闲空间,您无法删除或调整数据分段的大小。CDL 磁盘可以细分为多个数据磁盘分段,因为它包含 LDL 磁盘中缺少的元数据,特别是卷目录 (vtoc) 信息。
S/390 分段管理器是唯一能够理解独特 S/390 磁盘布局的分段管理器插件。S/390 分段管理器不能添加到磁盘或从磁盘中删除。
集群分段管理器 (CSM) 支持高可用性集群。当 CSM 添加到共享存储磁盘时,它会在磁盘上写入元数据,该元数据
提供唯一的磁盘 ID (guid)
命名磁盘将驻留的 EVMS 容器
指定拥有磁盘的集群节点 (nodeid)
指定集群 (clusterid)
此元数据允许 CSM 构建容器以支持故障转移情况。它通过构建一个 EVMS 容器对象来实现,该对象消耗 CSM 发现的并且属于同一容器的所有共享磁盘。这些共享存储磁盘被容器消耗,并且容器为每个消耗的磁盘生成一个数据分段。EVMS 资源的故障转移是通过简单地将 CSM 容器重新分配给备用集群节点并让该节点重新运行其发现过程来完成的。
向 CSM 容器添加磁盘意味着只有磁盘存储对象才能被 CSM 接受。这是 CSM 的一个重要方面。其他段管理器可以嵌入到存储对象中,并用于进一步细分它们。然而,CSM 不能向 CSM 容器添加任何其他类型的存储对象,因为容器旨在成为一个磁盘组,并且整个磁盘组在故障转移期间会被重新分配。因此,CSM 在构建容器时只接受磁盘。当向磁盘添加 CSM 时,记住这一点很重要。如果您选择添加,并且当您知道您有一个磁盘时,CSM 没有出现在可选择的插件列表中,您应该查看卷列表,看看该磁盘是否已被列为兼容性卷。如果您只是删除该卷,该磁盘将成为一个可用的对象,然后 CSM 将出现在插件列表中,因为它现在有一个可用的磁盘可以添加到容器中。
BSD 指的是伯克利软件发布 UNIX� 操作系统。EVMS BSD 段管理器负责识别和生成映射 BSD 分区的 EVMS 段存储对象。BSD 磁盘可能在磁盘的第一个扇区中有一个切片表,以便与其他操作系统兼容。例如,可以在通常的 MBR 扇区中找到 DOS 切片表。然后,将在使用兼容性切片表定位的磁盘切片中找到 BSD 磁盘。然而,BSD 不需要切片表,并且可以通过将磁盘标签放在第一个扇区来完全专用于自身。这被称为“完全专用磁盘”,因为 BSD 使用整个磁盘,并且不提供兼容性切片表。BSD 段管理器识别这种“完全专用磁盘”,并为 BSD 分区提供映射。
坏块替换 (BBR) 段管理器通过重新映射坏的存储块来增强磁盘的可靠性。当 BBR 添加到磁盘时,它会在磁盘上写入元数据,该元数据
保留替换块
将坏块映射到保留块
当检测到写入操作的 I/O 错误时,会发生坏块。当这种情况发生时,I/O 通常会失败,并且失败代码会返回到调用程序代码。BBR 检测到失败的写入操作,并将 I/O 重新映射到磁盘上的保留块。之后,BBR 使用保留块重新启动 I/O。
每个存储块都有一个地址,称为逻辑块地址或 LBA。当 BBR 添加到磁盘时,它提供两个关键功能:重新映射和恢复。当 I/O 操作发送到磁盘时,BBR 检查 I/O 命令中的 LBA,以查看 LBA 是否由于之前的 I/O 错误而被重新映射到保留块。如果 BBR 找到 LBA 和保留块之间的映射,它会在将 I/O 命令发送到磁盘之前,使用保留块的 LBA 更新 I/O 命令。当 BBR 检测到 I/O 错误并将坏块重新映射到保留块时,就会发生恢复。新的 LBA 映射保存在 BBR 元数据中,以便随后对 LBA 的 I/O 可以被重新映射。
当您向磁盘添加段管理器时,段管理器需要更改磁盘的基本布局。这种更改意味着某些扇区被保留用于元数据,而剩余的扇区可用于创建数据磁盘段。元数据扇区被写入磁盘以保存段管理器所需的信息;磁盘上以前找到的信息会丢失。在向现有磁盘添加段管理器之前,您必须删除任何现有的卷管理结构,包括任何以前的段管理器。
当新磁盘添加到系统时,该磁盘通常不包含数据并且尚未分区。如果是这种情况,该磁盘在 EVMS 中显示为兼容性卷,因为 EVMS 无法判断该磁盘是否正在用作卷。要向磁盘添加段管理器,以便可以将其细分为更小的磁盘段对象,请通过删除卷信息来告知 EVMS 该磁盘不是兼容性卷。
如果新磁盘是从另一个系统移动过来的,则该磁盘很可能已经包含元数据。如果磁盘确实包含元数据,则该磁盘在 EVMS 中显示为从现有元数据生成的存储对象。删除这些对象将允许您向磁盘添加不同的段管理器,并且您将丢失任何旧数据。
本节介绍如何使用 EVMS 添加段管理器。
EVMS 最初将其看到的物理磁盘显示为卷。假设您已向系统添加了一个新磁盘,EVMS 将其视为sde。此磁盘不包含数据,并且尚未细分(无分区)。EVMS 假设此磁盘是一个称为/dev/evms/sde.
![]() | 注意 |
---|---|
向磁盘添加 DOS 段管理器在以下示例中,DOS 段管理器在磁盘上创建两个段:一个称为sde_mbr的元数据段,以及一个表示驱动器上可用空间的段,sde_freespace1的元数据段,以及一个表示驱动器上可用空间的段,。这个可用空间段 ( |
要向sde添加 DOS 段管理器,首先删除卷,/dev/evms/sde:
选择
-> -> 。选择/dev/evms/sde.
单击
。或者,您可以通过 GUI 上下文敏感菜单删除卷
从
中,右键单击/dev/evms/sde.单击
。删除卷后,添加 DOS 段管理器
选择
-> -> 。选择DOS 段管理器。
单击
。选择sde
单击
当从磁盘中删除段管理器时,该磁盘可以被其他插件重用。remove 命令使段管理器从磁盘中删除其分区或切片表,留下原始磁盘存储对象,然后该对象成为可用的 EVMS 存储对象。作为可用的存储对象,当创建或扩展存储对象时,任何插件都可以自由使用该磁盘。您还可以将任何段管理器添加到可用的磁盘存储对象,以将磁盘细分为段。
大多数段管理器插件都会检查以确定是否有任何段仍在被其他插件使用,或者是否仍然是卷的一部分。如果段管理器确定没有磁盘可以安全地从中删除自身,则当您使用 remove 命令时,它将不会被列出。在这种情况下,您应该删除正在消耗您要重用的磁盘中的段的卷或存储对象。
本章讨论何时使用段以及如何使用不同的 EVMS 界面创建段。
磁盘可以细分为更小的存储对象,称为磁盘段。段管理器插件提供此功能。创建磁盘段的另一个原因是维护双启动系统上的兼容性,其中另一个操作系统需要磁盘分区。在创建磁盘段之前,您必须选择一个段管理器插件来管理磁盘,并将该段管理器分配给磁盘。有关何时以及如何分配段管理器的说明,请参见第 6 章。
本节通过提供指导您完成以下任务的说明,详细解释如何使用 EVMS 创建段
要使用 GUI 创建段,请按照以下步骤操作
选择
-> -> 以查看段管理器插件列表。选择
。单击 。下一个对话窗口列出了适用于创建新段的可用空间存储对象。
选择的元数据段,以及一个表示驱动器上可用空间的段,。单击
。最后一个对话窗口显示了您选择的可用空间对象以及该对象的可用配置选项。
输入 100 MB。必填字段在其字段描述前面用“*”表示。DOS 段管理器提供默认值,但您可能想要更改其中一些值。
在您填写完所有必填字段的信息后,
按钮变为可用。单击
。将打开一个窗口以显示结果。或者,您可以从 GUI 上下文敏感菜单执行一些创建段的步骤
从
选项卡中,右键单击的元数据段,以及一个表示驱动器上可用空间的段,.单击
从 GUI 说明的步骤 4 开始继续。
本章讨论何时以及如何创建容器。
段和磁盘可以组合形成容器。容器允许您组合存储对象,然后将这些组合的存储对象细分为新的存储对象。您可以组合存储对象以实现卷组概念,如 AIX 和 Linux 逻辑卷管理器中所示。
容器是更灵活的卷管理的开始。您可能需要创建容器,以便考虑未来存储需求的灵活性。例如,当您的应用程序或用户需要更多存储空间时,您可能需要添加额外的磁盘。
本节通过提供指导您完成以下任务的说明,详细解释如何使用 EVMS 创建容器。
要使用 EVMS GUI 创建容器,请按照以下步骤操作
选择
-> -> 以查看支持容器创建的插件列表。选择
。单击 。下一个对话窗口包含 LVM 区域管理器可用于创建容器的存储对象列表。
从列表中选择sdc、sdd 和 hdc。单击 。
输入名称示例容器作为容器的名称,并在16MB中输入 PE 大小 字段。
单击
。将打开一个窗口以显示结果。区域可以从容器创建,但也可以从其他区域、段或磁盘创建。大多数支持容器的区域管理器都会创建一个或多个可用空间区域,以表示容器内的可用空间。此功能类似于段管理器创建可用空间段以表示未使用的磁盘空间的方式。
您可以创建区域,因为您想要某个区域管理器提供的功能,或者因为您想要该区域管理器提供的功能。您还可以创建区域以与其他卷管理技术(如 MD 或 LVM)兼容。例如,如果您想创建一个与 Linux LVM 兼容的卷,您将从 Linux LVM 容器中创建一个区域,然后从该区域创建一个兼容性卷。
本节介绍如何使用 EVMS 创建区域,方法是提供指导您完成以下任务的说明。
要创建区域,请按照以下步骤操作
选择
-> ->选择
。单击 。![]() | 注意 |
---|---|
您可能会看到其他区域管理器,这些管理器在您创建存储容器时不在选择列表中,因为并非所有区域管理器都必须支持容器。 |
从您在第 8 章中创建的容器中选择可用空间区域。验证区域是否命名为lvm/示例容器/可用空间。单击 。
下一个窗口中的字段是 LVM 区域管理器插件的选项,标有 “*” 的选项是必需的。
填写名称,示例区域.
输入1000MB在 大小 字段中。
单击
按钮以完成操作。将打开一个窗口以显示结果。或者,您可以从 GUI 上下文敏感菜单执行一些创建区域的步骤
从
选项卡中,右键单击lvm/示例容器/可用空间.单击
。从 GUI 说明的步骤 4 开始继续。
要创建区域,请按照以下步骤操作
选择
-> -> 。选择
。激活 下一步。从您在第 8 章中较早创建的容器中选择可用空间区域。验证区域是否命名为lvm/示例容器/可用空间.
滚动到 名称 字段,然后按 空格键。
键入示例区域在 “::” 提示符下。按 Enter 键。
滚动到 大小 字段,然后按 空格键。
键入1000MB在 “::” 提示符下。按 Enter 键。
激活
。或者,您可以从上下文敏感菜单执行一些创建区域的步骤
从存储区域视图中,按 Enter 键在lvm/示例容器/可用空间.
上激活
菜单项。从 Ncurses 说明的步骤 4 开始继续。
本章讨论 EVMS 驱动器链接功能,该功能由驱动器链接插件实现,并介绍如何创建、扩展、缩小和删除驱动器链接。
驱动器链接线性连接对象,允许您从较小的单独部分创建更大的存储对象和卷。例如,假设您需要一个 1 GB 的卷,但没有那么长的连续空间可用。驱动器链接允许您将两个或多个对象链接在一起以形成 1 GB 的卷。
可以进行驱动器链接的对象类型包括磁盘、段、区域和其他功能对象。
对现有驱动器链接的任何大小调整(无论是增大还是缩小)都必须与适当的文件系统操作协调。EVMS 会自动处理这些文件系统操作。
由于驱动器链接是包含 EVMS 元数据的 EVMS 特定功能,因此它与其他卷管理方案不向后兼容。
驱动器链接插件消耗存储对象(称为链接对象),这些对象生成更大的驱动器链接对象,其地址空间跨越链接对象。驱动器链接插件知道如何组装链接对象,以便每次都创建完全相同的地址空间。执行此操作所需的信息保存在每个链接子对象上,作为持久驱动器链接元数据。在发现期间,驱动器链接插件检查每个已知的存储对象以查找此元数据。此元数据的存在将存储对象标识为链接对象。元数据中包含的信息足以
标识链接对象本身。
标识链接对象所属的驱动器链接存储对象。
标识属于驱动器链接存储的所有链接对象。对象
建立组合子链接对象的顺序。
如果在发现过程结束时缺少任何链接对象,则驱动器链接存储对象包含缺少链接对象的位置的间隙。在这种情况下,驱动器链接插件会尝试用替代链接对象填充间隙,并以只读模式构造驱动器链接存储对象,这允许进行恢复操作。丢失的对象可能位于已移除的可移动存储上,或者可能是较低层插件未能生成丢失的对象。无论原因如何,只读驱动器链接存储对象以及日志记录错误都有助于您采取适当的操作来恢复驱动器链接。
驱动器链接插件提供一个可接受的对象列表,它可以从中创建驱动器链接对象。当您创建 EVMS 存储对象然后选择驱动器链接插件时,将提供一个可接受的对象列表,您可以从中选择。驱动器链接的顺序由您从提供的列表中选择对象的顺序隐含。在您为新的驱动器链接对象提供名称后,标识的链接对象将被消耗,并且将生成新的驱动器链接对象。新对象的名称是创建驱动器链接时的唯一选项。
驱动器链接中只有最后一个对象可以扩展、缩小或删除。此外,只有在文件系统(如果存在)允许的情况下,才能将新对象添加到现有驱动器链接的末尾。对驱动器链接的任何大小调整(无论是增大还是缩小)都必须与适当的文件系统操作协调。EVMS 会自动处理这些文件系统操作。
本节介绍如何使用 EVMS 创建驱动器链接
要使用 GUI 创建驱动器链接,请按照以下步骤操作
选择
-> -> 以查看 EVMS 功能列表。选择
。单击
。单击要组成驱动器链接的对象:sde4 和 hdc2。
单击
。键入dl在 “名称” 字段中
单击
。最后一个对话窗口显示了您选择的可用空间对象以及该对象的可用配置选项。
或者,您可以从 GUI 上下文敏感菜单执行一些创建驱动器链接的步骤
从
选项卡中,右键单击sde4.单击
从 GUI 说明的步骤 2 开始继续创建驱动器链接。在步骤 4 中,sde4为您选中。您也可以选择hdc2.
驱动器链接是一种聚合存储对象,它通过将多个存储对象组合成一个更大的结果对象来构建。驱动器链接消耗链接对象以生成更大的存储对象。驱动器链接元数据描述了链接对象的顺序以及它们各自贡献的扇区数。元数据允许驱动器链接插件以一致的方式重新创建跨越链接对象的驱动器链接。允许扩展任何这些链接对象都会破坏链接对象的大小和顺序;链接对象的顺序对于驱动器链接的正确操作至关重要。但是,扩展驱动器链接可以通过仅允许在驱动器链接存储对象的末尾添加扇区来控制。这不会以任何方式干扰链接对象的顺序,并且由于扇区仅在驱动器链接的末尾添加,因此现有扇区具有与扩展前相同的地址(逻辑扇区号)。因此,可以通过两种不同的方式扩展驱动器链接
通过向驱动器链接的末尾添加额外的存储对象。
通过扩展驱动器链接中的最后一个存储对象。
如果扩展点是驱动器链接存储对象,则可以通过向驱动器链接添加额外的存储对象来执行扩展。这是通过在扩展操作期间从可接受的对象列表中选择来完成的。可以选择多个对象并将其添加到驱动器链接。
如果扩展点是驱动器链接中的最后一个存储对象,则通过与生成该对象的插件交互来扩展驱动器链接。例如,如果链接是一个段,则生成存储对象的段管理器插件会扩展链接对象。之后,驱动器链接插件会注意到大小差异,并更新驱动器链接元数据以反映子对象的大小调整。
没有扩展选项。
本章讨论快照,并介绍如何创建快照。
快照代表卷的冻结映像。快照的来源称为“原始卷”。创建快照时,它看起来与当时时间点的原始卷完全相同。当对原始卷进行更改时,快照保持不变,并且看起来与创建快照时原始卷完全相同。
快照允许您在创建备份时保持卷联机。这种方法比数据备份方便得多,数据备份必须使卷脱机才能执行一致的备份。使用快照时,将创建卷的快照,并从快照中获取备份,而原始卷保持活动使用状态。
您可以从 EVMS 中任何未使用的存储对象(磁盘、段、区域或功能对象)创建快照对象。此已消耗对象的大小是快照对象可使用的大小。快照对象可以小于或大于原始卷。如果对象较小,则快照卷可能会因数据从原始卷复制到快照而填满,前提是原始卷上有足够的活动。在这种情况下,快照将被停用,并且对快照的额外 I/O 将失败。
快照对象的大小应基于快照生命周期内原始卷上可能发生的活动量。原始卷上发生的更改越多,快照预计保持活动状态的时间越长,快照对象应该越大。显然,确定此计算并不简单,需要反复试验才能确定特定情况下要使用的正确快照对象大小。目标是创建一个足够大的快照对象,以防止快照在填满时被停用,但又足够小以避免浪费磁盘空间。如果快照对象的大小与原始卷相同,或者稍大一些以容纳快照映射表,则快照永远不会被停用。
创建快照对象并保存更改后,快照将被激活(只要快照子对象已处于活动状态)。这与 EVMS 2.3.x 及更早版本中的快照有所不同,在 EVMS 2.3.x 及更早版本中,快照在对象被制成 EVMS 卷之前不会被激活。如果您希望拥有非活动快照,请将快照对象的名称添加到 EVMS 配置文件中的 “activate.exclude” 行中(有关更多详细信息,请参阅有关选择性激活的部分)。如果在任何时候您决定在原始卷仍处于活动状态时停用快照对象,则快照将被重置。下次激活快照对象时,它将反映创建快照时原始卷的状态,就像刚创建快照一样。
为了挂载快照,快照对象仍然必须被制成 EVMS 卷。此卷的名称可以与快照对象的名称相同或不同。
本节介绍如何使用 EVMS 创建快照
要使用 GUI 创建快照,请按照以下步骤操作
选择
-> -> 以查看 EVMS 功能对象列表。选择
。单击
。选择
。单击
。从 “要进行快照的卷(Volume to be Snapshotted)” 字段的列表中选择
。键入snap在 “快照对象名称(Snapshot Object Name)” 字段中。
单击
。或者,您可以使用 GUI 上下文相关菜单执行创建快照的某些步骤
从
选项卡中,右键单击 。单击
从 GUI 指令的步骤 2 开始,继续创建快照。您可以跳过 GUI 指令的步骤 4 和 5。
要创建快照,请按照以下步骤操作
选择
-> -> 以查看 EVMS 功能对象列表。选择
。激活
。选择lvm/Sample Container/Sample Region。
激活
。按 空格键(spacebar) 编辑 “要进行快照的卷(Volume to be Snapshotted)” 字段。
高亮显示/dev/evms/vol并按 空格键(spacebar) 选择。
激活
。高亮显示 “快照对象名称(Snapshot Object Name)” 并按 空格键(spacebar) 编辑。
键入snap在 “::” 提示符下。按 Enter 键。
激活
。或者,您可以使用上下文相关菜单执行创建快照的某些步骤
从可用对象视图中,按 Enter 键在lvm/Sample Container/Sample Region.
上激活
菜单项。从 Ncurses 指令的步骤 6 开始,继续创建快照。
快照可以重新初始化。重新初始化会导致所有已保存的数据被擦除,并从当前时间点开始快照。重新初始化的快照具有与原始快照相同的原始卷、块大小和可写标志。
要重新初始化快照,请在快照对象(而不是快照卷)上使用 Reset 命令。此命令重新初始化快照,而无需您手动停用和重新激活卷。快照必须处于活动状态但未挂载才能进行重新初始化。
本节继续上一节的示例,其中创建了快照对象和卷。快照对象名为 “snap”,卷名为 “/dev/evms/snap”。
如 第 11.2 节 中所述,当数据从原始卷复制到快照时,快照的可用空间可能会填满,从而导致快照失效。这种情况可能会导致您的数据备份过早结束,因为快照卷在失效后开始返回 I/O 错误。
为了解决这个问题,EVMS 现在能够在快照卷处于活动状态和挂载状态时扩展快照对象的存储空间。此功能允许您最初创建一个小的快照对象,并在空间开始填满时根据需要扩展对象。
为了扩展快照对象,底层对象必须是可扩展的。继续前面的章节中的示例,对象 “snap” 构建在 LVM 区域之上lvm/Sample Container/Sample Region。当我们提到扩展 “snap” 对象时,区域lvm/Sample Container/Sample Region是实际被扩展的对象,“snap” 对象只是利用该区域上的新空间。因此,为了拥有可扩展的快照,您通常需要将快照对象构建在 LVM 区域之上,这些区域在其 LVM 容器中具有额外的可用空间。DriveLink 对象和某些磁盘段在某些情况下也有效。
关于扩展快照的一个值得注意的怪癖是,快照对象和卷在操作完成后实际上并没有显示扩展。由于快照卷应该是一个原始卷的冻结映像,因此即使快照已扩展,快照卷的大小始终与原始卷相同。但是,您可以通过显示快照对象的详细信息并比较扩展操作前后的 percent-full 字段来验证快照对象是否正在使用额外的空间。
当不再需要快照时,您可以通过从快照对象中删除 EVMS 卷,然后删除快照对象来删除它。由于快照保存了原始卷的初始状态(而不是更改后的状态),因此原始卷始终是最新的,并且在删除快照时不需要进行任何修改。
没有可用于删除快照的选项。
在某些情况下,用户希望将原始卷恢复到快照的保存状态。此操作称为回滚。一种情况是原始卷上的数据丢失或损坏。快照回滚充当快速备份和恢复机制,并允许用户避免从磁带或其他存档进行更长时间的恢复操作。
回滚可能特别有用的另一种情况是当您测试新软件时。在安装新的软件包之前,创建目标卷的可写快照。然后,您可以将软件安装到快照卷,而不是安装到原始卷,然后在快照上测试和验证新软件。如果测试成功,您可以将快照回滚到原始卷,并有效地在常规系统上安装软件。如果在测试期间出现问题,您可以简单地删除快照,而不会损坏原始卷。
当满足以下条件时,您可以执行回滚
快照卷和原始卷都已卸载且未被使用。
原始卷只有一个快照。
如果原始卷有多个快照,则必须删除除所需快照之外的所有快照,然后才能进行回滚。
没有可用于回滚快照的选项。
本章讨论何时以及如何创建卷。
EVMS 将卷和存储对象分开处理。存储对象不会自动成为卷;它必须被制成卷。
卷是从存储对象创建的。卷可以是 EVMS 原生卷或兼容性卷。兼容性卷旨在与 EVMS 以外的卷管理器兼容,例如 Linux LVM、MD、OS/2 或 AIX。兼容性卷可能对 EVMS 可以对其执行的操作有限制。EVMS 原生卷没有此类限制,但它们只能由配备 EVMS 的系统使用。卷是可挂载的,可以包含文件系统。
EVMS 原生卷包含 EVMS 特定的信息以标识卷名称。应用此卷信息后,该卷将不再完全向后兼容现有的卷类型。
您可以告诉 EVMS 将对象直接作为卷提供,而不是向现有对象添加 EVMS 元数据。这种类型的卷称为兼容性卷。使用此方法,最终产品与所需系统完全向后兼容。
本节通过提供指导您完成以下任务的说明,详细解释了如何使用 EVMS 创建 EVMS 原生卷。
按照以下说明创建 EVMS 卷
选择
-> -> 。选择lvm/Sample Container/Sample Region.
键入Sample Volume在 名称(name) 字段中。
单击
。或者,您可以使用 GUI 上下文相关菜单执行创建 EVMS 卷的某些步骤
从
选项卡中,右键单击lvm/Sample Container/Sample Region.单击
从 GUI 指令的步骤 3 开始继续。
本节通过提供指导您完成以下任务的说明,详细解释了如何使用 EVMS 创建兼容性卷。
要创建兼容性卷,请按照以下步骤操作
选择
-> -> 。从列表中选择区域lvm/Sample Container/Sample Region。
单击
按钮。单击 GUI 中的 卷(Volume) 选项卡以查看名为/dev/evms/lvm/Sample Container/Sample Region的卷。此卷是您的兼容性卷。
或者,您可以使用 GUI 上下文相关菜单执行创建兼容性卷的某些步骤
从
选项卡中,右键单击lvm/Sample Container/Sample Region.单击
从 GUI 指令的步骤 3 开始继续。
本章讨论了 EVMS 附带的七个文件系统接口模块 (FSIM),然后提供了添加文件系统以及使用 FSIM 协调文件系统检查的示例。
EVMS 当前附带七个 FSIM。这些文件系统模块允许 EVMS 与文件系统实用程序(如 mkfs 和 fsck)进行交互。此外,FSIM 通过与文件系统协调这些操作,确保 EVMS 安全地执行操作,例如扩展和收缩文件系统。
您可以通过各种 EVMS 用户界面调用诸如 mkfs 和 fsck 之类的操作。您通过 FSIM 启动的任何操作都不会保存到磁盘,直到更改保存在用户界面中。在本章的后面,我们将提供通过 EVMS GUI、Ncurses 和命令行界面创建新文件系统以及协调文件系统检查的示例。
EVMS 支持的 FSIM 是
JFS
XFS
ReiserFS
Ext2/3
SWAPFS
OpenGFS
NTFS
JFS 模块支持 IBM 日志文件系统 (JFS)。当前支持包括 mkfs、unmkfs、fsck 和在线文件系统扩展。您的系统必须至少安装 1.0.9 版本的 JFS 实用程序才能与此 EVMS FSIM 一起使用。您可以从 JFS for Linux 站点下载最新的实用程序。
有关 JFS FSIM 的更多信息,请参阅 附录 F。
XFS FSIM 支持来自 SGI 的 XFS 文件系统。命令支持包括 mkfs、unmkfs、fsck 和在线扩展。使用 1.2 或更高版本,您可以从 SGI 开源 FTP 目录下载。
有关 XFS FSIM 的更多信息,请参阅 附录 G。
ReiserFS 模块支持 ReiserFS 日志文件系统。此模块支持 mkfs、unmkfs、fsck、在线和离线扩展以及离线收缩。您需要 3.x.1a 或更高版本的 ReiserFS 实用程序才能与 EVMS FSIM 模块一起使用。您可以从 The Naming System Venture (Namesys) 网站下载 ReiserFS 实用程序。
有关 ReiserFS FSIM 的更多信息,请参阅 附录 H。
EXT2/EXT3 FSIM 同时支持 ext2 和 ext3 文件系统格式。FSIM 支持 mkfs、unmkfs、fsck 以及离线收缩和扩展。
有关 Ext2/3 FSIM 的更多信息,请参阅 附录 I。
SWAPFS FSIM 支持 Linux 交换设备。FSIM 允许您创建和删除交换设备,并支持 mkfs、unmkfs、收缩和扩展。目前,您负责在启动脚本中或手动发出 swapon 和 swapoff 命令。只要设备未在使用中,您就可以使用 SWAPFS FSIM 调整交换设备的大小。
OpenGFS 模块支持 OpenGFS 集群日志文件系统。此模块支持 mkfs、unmkfs、fsck 和在线扩展。您需要 OpenGFS 实用程序才能与 EVMS FSIM 模块一起使用。您可以从 SourceForge 上的 OpenGFS 项目下载 OpenGFS 实用程序。
有关 OpenGFS FSIM 的更多信息,请参阅 附录 J。
NTFS FSIM 支持 NTFS 文件系统格式。FSIM 支持 mkfs、unmkfs 以及离线收缩和扩展。它还支持从 ntfsprogs 实用程序运行 ntfsfix 和 netfsclone。ntfsprogs 实用程序可以从 Linux NTFS 项目网站下载。
有关 NTFS FSIM 的更多信息,请参阅 附录 K。
在创建 EVMS 或兼容性卷后,在挂载卷之前,向卷添加文件系统。您可以通过您选择的 EVMS 界面向卷添加文件系统。
按照以下步骤使用 EVMS GUI 创建 JFS 文件系统
选择
-> -> 。单击
。选择
。单击
。键入jfs_vol在 “卷标(Volume Label)” 字段中。自定义您感兴趣的任何其他选项。
单击
。操作在您保存时完成。
或者,您可以使用 GUI 上下文相关菜单执行创建文件系统的某些步骤
从
选项卡中,右键单击/dev/evms/my_vol.单击
从 GUI 指令的步骤 2 开始,继续创建文件系统。您可以跳过 GUI 指令的步骤 4 和 5。
按照以下步骤使用 Ncurses 创建 JFS 文件系统
按照以下步骤使用 EVMS GUI 创建 JFS 文件系统
选择 JFS 文件系统接口模块(JFS File System Interface Module)。
激活
。选择/dev/evms/my_vol.
激活
。使用 向下(down) 箭头向下滚动,直到
高亮显示。按 空格键(Spacebar)。
在“::”提示符下输入jfs_vol.
按 回车 键。
激活
。或者,您可以使用上下文相关菜单执行创建文件系统的某些步骤
从卷视图中,在/dev/evms/my_vol.
激活
菜单项。从 Ncurses 指令的步骤 2 开始继续创建文件系统。
您还可以从 EVMS 用户界面协调文件系统检查。
按照以下步骤使用 EVMS GUI 检查 JFS 文件系统
选择
-> -> 。选择
。单击
。单击
旁边的 是(Yes) 按钮。自定义您感兴趣的任何其他选项。单击
。操作在您保存时完成。
或者,您可以使用 GUI 上下文相关菜单执行检查文件系统的某些步骤
从
选项卡中,右键单击/dev/evms/my_vol.单击检查/修复文件系统...(Check/Repair File System...)
从 GUI 指令的步骤 3 开始继续检查文件系统。
本章讨论如何配置集群存储容器(在本章中通称为 “集群容器”),这是 EVMS 集群段管理器 (CSM) 提供的一项功能。
可以将在集群的所有节点上物理可访问的磁盘分组在一起,作为一个可管理的实体。然后可以使用来自这些容器的存储创建 EVMS 存储对象。
所有权被分配给容器,以使容器成为私有或共享的。由集群中任何一个节点拥有的容器称为私有容器。使用私有容器空间创建的 EVMS 存储对象和存储卷只能从拥有节点访问。
由集群中所有节点拥有的容器称为共享容器。使用共享容器空间创建的 EVMS 存储对象和存储卷可以从集群的所有节点同时访问。
EVMS 提供了将私有容器转换为共享容器以及将共享容器转换为私有容器的工具。EVMS 还提供了灵活性,可以将私有容器的所有权从一个集群节点更改为另一个集群节点。
请注意以下创建集群容器的规则和限制
不要将非共享磁盘分配给集群容器。
在集群容器上创建的存储对象和卷不得跨越多个集群容器。EVMS 引擎通过禁止此类配置来强制执行此规则。
不要在共享集群容器上的存储对象上分配 RAID-1、RAID-5、BBR 或快照。这些插件可以在私有集群容器上使用。
本节介绍如何创建一个示例私有容器,并提供完成以下任务的说明
要使用 EVMS GUI 创建容器,请按照以下步骤操作
选择
-> -> 以查看支持容器创建的插件列表。选择
。单击
。下一个对话窗口包含 CSM 可以用来创建容器的存储对象列表。
选择sdd, sde, 和sdf。
单击
。在第一个下拉菜单中,选择拥有此容器的集群节点的“节点 ID”(
)。从第二个下拉菜单中选择“存储类型”为 。输入名称Priv1作为容器名称。
单击
。一个窗口打开,显示结果。
提交更改。
要使用 Ncurses 界面创建私有容器,请按照以下步骤操作
选择
-> -> 以查看支持容器创建的插件列表。使用向下箭头向下滚动,并通过按空格键选择集群段管理器。您选择的插件用“x”标记。
按 回车 键。
下一个子菜单包含集群段管理器认为可以用于创建容器的磁盘列表。
使用空格键选择sdd, sde, 和sdf从列表中。您选择的磁盘用“x”标记。
按 回车 键。
在“创建存储容器 - 配置选项”菜单上,按空格键选择“节点 ID”,这将提供一个节点列表供您选择。
按空格键选择节点node1,然后按Enter键。
使用向下箭头向下滚动,然后按空格键选择“存储类型”。将打开存储类型列表。
使用向下箭头向下滚动到
,然后按空格键。按 回车 键。
使用向下箭头向下滚动到
,然后按空格键。“更改选项值”菜单打开,并要求输入容器名称。键入容器名称为Priv1,然后按Enter键。
按Enter键完成操作。
本节介绍如何创建一个示例共享容器,并提供指导以帮助您完成以下任务
要使用 EVMS GUI 创建共享集群容器,请按照以下步骤操作
选择
-> -> 以查看支持容器创建的插件列表。选择
。单击
。下一个对话窗口包含 CSM 可以用来创建容器的存储对象列表。
选择sdd, sde, 和sdf。
单击
。您无需更改“节点 ID”字段。从第二个下拉菜单中选择“存储类型”为
。输入名称Shar1作为容器名称。
单击
。将打开一个窗口以显示结果。提交更改。
要使用 Ncurses 界面创建共享集群容器,请按照以下步骤操作
选择
-> -> 以查看支持容器创建的插件列表。使用向下箭头向下滚动,并通过按空格键选择集群段管理器。您选择的插件用“x”标记。
按 回车 键。
下一个子菜单包含集群段管理器认为可以用于创建容器的磁盘列表。
使用空格键选择sdd, sde, 和sdf从列表中。您选择的磁盘用“x”标记。
按 回车 键。
“创建存储容器 - 配置选项”菜单打开;忽略“节点 ID”菜单。
使用向下箭头向下滚动,然后按空格键选择“存储类型”。将打开存储类型列表。
使用向下箭头向下滚动到
,然后按空格键。按 回车 键。
使用向下箭头向下滚动到
,然后按空格键。“更改选项值”菜单打开,并要求输入容器名称。键入容器名称为Shar1,然后按Enter键。
按Enter键完成操作。
退出 Ncurses,并在每个集群节点上运行evms_activate。此过程将在 EVMS 的未来版本中自动化。
本节介绍如何将示例私有容器转换为共享容器,并提供完成以下任务的说明
![]() | 注意 |
---|---|
确保集群的任何节点上都没有应用程序正在使用容器上的卷。 |
按照以下步骤使用 EVMS GUI 将私有集群容器转换为共享集群容器
选择
-> -> 以查看容器列表。选择容器
,然后按下一步。将打开“修改属性”对话框。
将“类型”更改为“共享”,然后单击修改。
一个窗口打开,显示结果。
提交更改。
按照以下步骤使用 Ncurses 界面将私有集群容器转换为共享集群容器
选择
-> -> 以查看容器列表。“修改容器属性”对话框打开。选择容器Priv1通过按空格键。您选择的容器用“x”标记。
按 回车 键。
使用空格键选择sdd, sde, 和sdf从列表中。您选择的磁盘用“x”标记。
按 回车 键。
“修改容器属性 - 配置选项”对话框打开。使用向下箭头向下滚动,然后按空格键选择“类型”。
按空格键。
“更改选项值”对话框打开。键入共享,然后按Enter键。
更改后的值现在显示在“修改容器属性 - 配置选项”对话框中。
按 回车 键。
命令的结果显示在屏幕底部。
通过单击
下拉菜单中的保存来保存更改。本节介绍如何将示例共享容器转换为私有容器,并提供完成以下任务的说明
![]() | 注意 |
---|---|
确保集群中任何节点上都没有应用程序正在使用容器的卷。 |
按照以下步骤使用 EVMS GUI 将共享集群容器转换为私有集群容器
选择
-> -> 以查看容器列表。选择容器
,然后按下一步。将打开“修改属性”对话框。
将“类型”更改为“私有”,并将“节点”字段更改为node1。单击修改。
一个窗口打开,显示结果。
提交更改。
按照以下步骤使用 Ncurses 界面将共享集群容器转换为私有集群容器
选择
-> ->“修改容器属性”对话框打开。选择容器Shar1通过按空格键。您选择的容器用“x”标记。
按 回车 键。
“修改容器属性 - 配置选项”对话框打开。使用向下箭头向下滚动,然后按空格键选择“类型”字段。
按空格键。
“更改选项值”对话框打开。选择私有,然后按Enter键。
“修改容器属性 - 配置选项”对话框打开。使用向下箭头向下滚动列表到
,然后按空格键。“更改选项值”对话框打开。选择node1,然后按Enter键。
更改后的值现在显示在“修改容器属性 - 配置选项”对话框中。按Enter键。
命令的结果显示在屏幕底部。
通过单击
下拉菜单中的保存来保存更改。当容器被卸载时,节点将放弃容器的所有权,并删除内存中属于该容器的所有对象。集群中的任何节点都无法发现驻留在已卸载容器上的对象,也无法为已卸载容器创建对象。本节介绍如何卸载私有或共享容器。
要使用 EVMS GUI 卸载容器,请按照以下步骤操作
选择
-> -> 。选择容器c1,然后按下一步。
将打开“修改属性”对话框。
将“类型”更改为“已卸载”。单击修改。
一个窗口打开,显示结果。
提交更改。
EVMS V2.0 及更高版本中的 EVMS 支持 Linux-HA 集群管理器。EVMS V2.1 也开始支持 RSCT 集群管理器,但尚未经过广泛测试。
![]() | 注意 |
---|---|
确保在调用heartbeat启动脚本之前,在其中一个启动脚本中调用了evms_activate。如果未调用evms_activate,则故障转移可能无法正常工作。 |
按照以下步骤设置私有容器的故障转移和故障恢复
在/etc/ha.d/haresources中为每个要故障转移的私有容器添加一个条目。例如,如果container1的替换,以及container2要与node1一起故障转移到同一节点,并且/etc/ha.d/haresources:
node1 evms_failover::container1 evms_failover::container2 |
node1是拥有节点,请将以下条目添加到node1是拥有此资源的集群节点。当
失效时,资源将故障转移到另一个节点。同样,如果的替换,以及container3要与container4,且/etc/ha.d/haresources:
node2 evms_failover::container3 evms_failover::container4 |
是拥有节点,则将以下条目添加到
有关资源组语义的更多详细信息,请参阅http://www.linux-ha.org/download/GettingStarted.html。验证, /etc/ha.d的替换,以及/etc/ha.d/haresources/etc/ha.cf
文件在集群的所有节点上是否相同。/etc/ha.d/haresources在
/etc/init.d/heartbeat restart |
![]() | 注意 |
---|---|
文件更改后,必须重新启动 heartbeat 集群管理器,如下所示 |
14.9. 远程配置管理node1EVMS 支持集群中任何节点对集群节点的管理。例如,可以从集群节点container4管理远程集群节点
要指定container4作为要从 GUI 管理的节点,请按照以下步骤操作
选择
->选择container4.
单击管理以切换到新节点。
GUI 收集有关其他节点上的对象、容器和卷的信息。状态栏显示消息“正在管理节点 node2”,这表明 GUI 已切换到节点 node2。
如果满足以下条件,则私有容器及其对象将在节点上变为活动状态
私有容器由节点拥有
容器未卸载
节点位于当前具有仲裁的集群成员关系中
同样,如果节点位于当前具有仲裁的集群中,则共享容器及其对象将在节点上变为活动状态。但是,管理员可以强制激活私有容器和共享容器,从而覆盖这些规则。
![]() | 注意 |
---|---|
在执行此操作时,请务必格外小心,确保集群容器所在的节点是集群中唯一处于活动状态的节点。否则,节点上共享容器和私有容器上的卷中的数据可能会损坏。 |
在/etc/evms.conf文件中启用维护模式。在/etc/evms.conf文件中修改的选项如下
# cluster segment manager section csm { # admin_mode=yes # values are: yes or no # The default is no. Set this key to # yes when you wish to force the CSM # to discover objects from all cluster # containers, allowing you to perform # configuration and maintenance. Setting # admin_mode to yes will cause the CSM # to ignore container ownership, which # will allow you to configure storage # in a maintenance mode. |
在节点上运行evms_activate。
本章讨论将兼容性卷转换为 EVMS 卷以及将 EVMS 卷转换为兼容性卷。有关兼容性卷和 EVMS 卷之间差异的讨论,请参阅第 12 章。
有几种不同的情况可能会帮助您确定您需要的卷类型。例如,如果您想要持久名称或充分利用 EVMS 功能(例如驱动器链接或快照),您将把兼容性卷转换为 EVMS 卷。在另一种情况下,您可能会决定某个卷需要由了解底层卷管理方案的系统读取。在这种情况下,您会将 EVMS 卷转换为兼容性卷。
卷只能在脱机时转换。这意味着卷必须卸载并且不被使用。卷必须卸载,因为转换操作会更改卷的名称和设备号。卷转换后,您可以使用其新名称重新挂载它。
在以下情况下,可以将兼容性卷转换为 EVMS 卷
兼容性卷上没有文件系统 (FSIM)。
兼容性卷具有文件系统,但文件系统可以缩小(如果需要),以便为 EVMS 元数据腾出空间。
本节详细解释了如何将兼容性卷转换为 EVMS 卷,并提供指导以帮助您完成以下任务。
按照以下步骤使用 EVMS GUI 转换兼容性卷
选择
-> -> 。选择/dev/evms/hda3从可用卷列表中选择。
键入my_vol在名称字段中输入。
单击
按钮以转换卷。或者,您可以从 GUI 上下文敏感菜单执行一些步骤来转换卷
在
选项卡中,右键单击/dev/evms/hda3.单击
继续从 GUI 说明的步骤 3 开始转换卷。
仅当 EVMS 卷上没有 EVMS 功能时,才能将其转换为兼容性卷。本节详细解释了如何通过提供指导来帮助您完成以下任务,从而将 EVMS 卷转换为兼容性卷。
按照以下说明使用 EVMS GUI 将 EVMS 卷转换为兼容性卷
选择
-> -> 。选择/dev/evms/my_vol从可用卷列表中选择。
单击
按钮以转换卷。或者,您可以从 GUI 上下文敏感菜单执行一些步骤来转换卷
从
选项卡中,右键单击/dev/evms/my_vol.单击
继续从 GUI 说明的步骤 3 开始转换卷。
本章介绍如何使用 EVMS GUI、Ncurses 和 CLI 界面扩展和收缩 EVMS 卷。请注意,您还可以扩展和收缩兼容性卷和 EVMS 对象。
扩展和收缩卷是大多数系统上常见的卷操作。例如,可能需要收缩特定卷以创建可用空间,以便另一个卷可以扩展或创建新卷。
EVMS 简化了扩展和收缩卷的过程,并通过协调卷的文件系统的扩展和收缩操作来保护数据的完整性。例如,当收缩卷时,EVMS 首先适当地收缩底层文件系统以保护数据。当扩展卷时,当新空间可用时,EVMS 会自动扩展文件系统。
并非 EVMS 支持的所有文件系统接口模块 (FSIM) 类型都允许收缩和扩展操作,有些仅在文件系统已挂载(“在线”)时执行操作。下表详细说明了每种 FSIM 类型的收缩和扩展选项。
表 16-1. FSIM 对扩展和收缩操作的支持
FSIM 类型 | 收缩 | 扩展 |
---|---|---|
JFS | 否 | 仅在线 |
XFS | 否 | 仅在线 |
ReiserFS | 仅离线 | 离线和在线 |
ext2/3 | 仅离线 | 仅离线 |
SWAPFS | 仅离线 | 仅离线 |
OpenGFS | 否 | 仅在线 |
NTFS | 仅离线 | 仅离线 |
您可以使用每个 EVMS 用户界面执行所有受支持的收缩和扩展操作。
本节介绍如何将兼容性卷收缩 500 MB。
按照以下步骤使用 EVMS GUI 收缩卷
选择
-> ->从卷列表中选择
。单击
。从卷列表中选择
。单击
。输入500MB在“按大小收缩”字段中输入。
单击
。或者,您可以从 GUI 上下文敏感菜单执行一些步骤来收缩卷
从
选项卡中,右键单击/dev/evms/lvm/Sample Container/Sample Region单击
继续从 GUI 说明的步骤 3 开始执行操作。
按照以下步骤使用 Ncurses 收缩卷
选择
-> -> 。从卷列表中选择
。激活
。从收缩点选择列表中选择
。激活
。使用向下箭头向下滚动,直到
突出显示。按空格键。
按 回车 键。
在“::”提示符下输入500MB.
按 回车 键。
激活
。或者,您可以从上下文敏感菜单执行一些步骤来收缩卷
从卷视图中,在/dev/evms/lvm/Sample Container/Sample Region.
激活
菜单项。继续从 Ncurses 说明的步骤 3 开始执行操作。
shrink命令采用一个收缩点,后跟一个可选的名称值对或一个可选的收缩对象。要查找收缩点,请在您计划收缩的对象或卷上使用带有收缩点过滤器的query命令。例如
query: shrink points, "/dev/evms/lvm/Sample Container/Sample Region" |
在收缩点的对象上使用列表选项过滤器来确定要使用的名称值对,如下所示
query: objects, object="lvm/Sample Container/Sample Region", list options |
使用返回的选项信息,您可以构造命令,如下所示
shrink: "lvm/Sample Container/Sample Region", remove_size=500MB |
本节介绍如何将兼容性卷扩展 500 MB。
按照以下步骤使用 EVMS GUI 扩展卷
选择
-> ->从卷列表中选择
。单击
。从列表中选择
作为扩展点。单击
。输入500MB在“附加大小”字段中输入。
单击
。或者,您可以从 GUI 上下文敏感菜单执行一些步骤来扩展卷
从
选项卡中,右键单击/dev/evms/lvm/Sample Container/Sample Region.单击
继续从 GUI 说明的步骤 3 开始执行操作以扩展卷。
按照以下步骤使用 Ncurses 扩展卷
选择
-> -> 。从卷列表中选择
。激活
。从扩展点列表中选择
。激活
。按空格键选择
字段。在“::”提示符下输入500MB.
按 回车 键。
激活
。或者,您可以从上下文敏感菜单执行一些步骤来收缩卷
从“卷”视图中,在 /
上按Enter键。激活
菜单项。继续从 Ncurses 说明的步骤 3 开始执行操作。
expand命令采用一个扩展点,后跟一个可选的名称值对和一个可扩展对象。要查找扩展点,请在您计划扩展的对象或卷上使用带有扩展点过滤器的query命令。例如
query: expand points, "/dev/evms/lvm/Sample Container/Sample Region" |
在扩展点的对象上使用列表选项过滤器来确定要使用的名称值对,如下所示
query: objects, object="lvm/Sample Container/Sample Region", list options |
容器中的可用空间是容器名称加上/Freespace.
使用返回的选项信息,您可以构造命令,如下所示
expand: "lvm/Sample Container/Sample Region", add_size=500MB, "lvm/Sample Container/Freespace" |
本章介绍如何向已有的 EVMS 卷添加额外的 EVMS 功能。
EVMS 允许您向已存在的卷添加驱动器链接等功能。通过添加功能,您可以避免潜在地销毁卷并从头开始重新创建它。例如,以一个包含重要数据但几乎已满的卷的场景为例。如果您想向该卷添加更多数据,但在段之后立即没有可用磁盘空间,则可以向该卷添加驱动器链接。驱动器链接将另一个对象连接到卷的末尾并无缝继续。
以下示例演示了如何使用 EVMS GUI、Ncurses 和 CLI 界面向卷添加驱动器链接。
注意 驱动器链接只能在 EVMS 卷上完成;因此,/dev/evms/vol如果尚未转换为 EVMS 卷,则必须先转换。
按照以下步骤使用 EVMS GUI 向卷添加驱动器链接
选择
-> -> 。选择
单击
。选择
。单击
。键入DL在“名称”字段中输入。
单击
。或者,您可以从 GUI 上下文敏感菜单执行一些步骤来添加驱动器链接
从
选项卡中,右键单击/dev/evms/vol.单击
继续从 GUI 说明的步骤 3 开始添加驱动器链接。
本章讨论 EVMS 卷和对象的选择性激活和停用。
EVMS 配置文件/etc/etc/evms.conf中有一个名为“activate”的部分。本节有两个条目:“include”和“exclude”。“include”条目列出了应激活的卷和对象。“exclude”条目列出了不应激活的卷和对象。
可以使用“*”、“?”和“[...]”表示法指定任何条目中的名称。例如,以下条目将激活所有卷
include = [/dev/evms/*] |
下一个条目指定不激活对象 sda5 和 sda7
exclude = [ sda[57] ] |
当 EVMS 启动时,它首先读取 include 条目,并构建一个它应该激活的卷和对象的列表。然后,它读取 exclude 条目,并从列表中删除 exclude 列表中找到的任何名称。例如,一个激活部分,它激活除/dev/evms/temp之外的所有卷,如下所示
activate { include = [/dev/evms/*] exclude = [/dev/evms/temp] } |
如果/etc/evms.conf不包含 activate 部分,则默认行为是激活所有内容。此行为与 2.4 之前的 EVMS 版本一致。
通过/etc/evms.conf进行的初始激活不会停用任何卷或对象。它仅确定应激活哪些卷或对象。
EVMS 用户界面提供了激活或停用特定卷或对象的功能。卷或对象将在保存更改时激活或停用。
您可以使用各种 EVMS 用户界面激活非活动卷和对象。
![]() | 注意 |
---|---|
当卷和对象被激活时,EVMS 当前不会更新 EVMS 配置文件(/etc/evms.conf)。如果您激活了最初未激活的卷或对象,并且未在/etc/evms.conf,卷或对象下次系统启动且您运行 evms_activate 或任何用户界面时将不会被激活。 |
要使用 GUI 上下文菜单激活,请按照以下步骤操作
右键单击您想要激活的卷或对象。
点击 “激活(Activate)”。
点击
。点击
以保存更改并激活卷和对象。您可以使用各种 EVMS 用户界面停用已激活的卷和对象。
![]() | 注意 |
---|---|
当卷和对象被激活时,EVMS 当前不会更新 EVMS 配置文件(/etc/evms.conf)当卷或对象被停用时。如果您停用最初已激活的卷或对象,并且未在/etc/evms.conf中进行相应的更改,则下次您运行 evms_activate 或任何用户界面时,该卷或对象将被激活。 |
要使用 GUI 上下文菜单停用卷或对象,请按照以下步骤操作
右键单击您想要停用的卷或对象。
点击 “停用(Deactivate)”。
点击
。点击
以保存更改并激活卷和对象。为了使卷或对象处于活动状态,其所有子对象都必须处于活动状态。当您激活卷或对象时,EVMS 将激活该卷或对象包含的所有对象。
同样,为了使对象处于非活动状态,其所有父对象都不能处于活动状态。当您停用对象时,EVMS 将停用所有由该对象构建的对象和卷。
正如 第 18.1 节 中讨论的,当 EVMS 启动时,它会构建一个卷和对象的初始列表,这些卷和对象的名称与/etc/evms.conf的激活部分中的 “include” 条目匹配。由于除非它们包含的对象处于活动状态,否则这些卷和对象无法处于活动状态,因此 EVMS 会将初始匹配中找到的卷和对象包含的所有对象添加到列表中。
然后,EVMS 从列表中删除名称与/etc/evms.conf的激活部分中的 “exclude” 条目匹配的卷和对象。由于任何从排除的卷或对象构建的卷或对象都不能处于活动状态,因此 EVMS 也会将其从列表中删除。
依赖关系的强制执行可能会导致并非立即显而易见的行为。例如,假设将段 hda7 制成卷/dev/evms/home,并且/etc/evms.conf之外的所有卷,如下所示
activate { include = [*] exclude = [hda*] } |
中的激活部分。当 EVMS 构建要激活的卷和对象列表时,所有内容都包含在内。接下来,EVMS 删除所有名称以 “hda” 开头的对象。hda7 将从列表中删除。接下来,由于卷/dev/evms/home由 hda7 构建,因此它也将从列表中删除,并且不会被激活。因此,尽管卷/dev/evms/home未明确列在排除列表中,但它不会被激活,因为它依赖于不会被激活的对象。
某些卷操作,例如扩展和收缩,可能需要在执行操作之前挂载或卸载卷。EVMS 允许您从 EVMS 内部挂载和卸载卷,而无需转到单独的终端会话。
EVMS 会立即执行挂载和卸载操作。它不会等到更改保存后才执行。
本节介绍如何通过各种 EVMS 用户界面挂载卷。
按照以下步骤使用 EVMS GUI 挂载卷
选择
-> -> 。选择您想要挂载的卷。
在 “挂载点(Mount Point)” 框中,输入您想要将卷挂载到的目录。
如果您想要输入其他挂载选项,请点击
。点击
。或者,您可以从 EVMS GUI 上下文菜单挂载卷
右键单击您想要挂载的卷。
点击
在 “挂载点(Mount Point)” 框中,输入您想要将卷挂载到的目录。
如果您想要输入其他挂载选项,请点击
。点击
。本节介绍如何通过各种 EVMS 用户界面卸载卷。
按照以下步骤使用 EVMS GUI 卸载卷
选择
-> -> 。选择您想要卸载的卷。
点击
。或者,您可以从 EVMS GUI 上下文菜单卸载卷
右键单击您想要卸载的卷。
点击
点击
。具有 SWAPFS 文件系统的卷不会被挂载或卸载。相反,使用 sbin/swapon 命令为卷启用交换,并使用 <command>sbin/swapoff</command> 命令关闭交换。EVMS 允许您从 EVMS 内部为卷启用或关闭交换,而无需转到单独的终端会话。
与挂载和卸载一样,EVMS 会立即执行 swapon 和 swapoff 操作。它不会等到更改保存后才执行。
本节介绍如何使用各种 EVMS 用户界面启用交换。
按照以下步骤使用 EVMS GUI 启用交换
选择
-> -> 。选择您想要启用交换的卷,然后点击
。选择 “启用交换(Swap on)”,然后点击
。选择交换的优先级。如果您选择 “高(High)”,您将获得一个额外的优先级级别提示。优先级级别必须是 0 到 32767 范围内的数字。默认值为 0。
点击
。或者,您可以从 EVMS GUI 上下文菜单启用交换
右键单击您想要启用的 SWAPFS 卷。
点击
选择交换的优先级。如果您选择 “高(High)”,您将获得一个额外的优先级级别提示。优先级级别必须是 0 到 32767 范围内的数字。默认值为 0。
点击
。按照以下步骤使用 Ncurses 启用交换
选择
-> -> 。选择您想要启用交换的卷,然后选择
。选择 “启用交换(Swap on)”,然后选择
。选择交换的优先级。如果您选择 “高(High)”,您将获得一个额外的优先级级别提示。优先级级别必须是 0 到 32767 范围内的数字。默认值为 0。
选择 “启用交换(Swap on)”。
或者,您可以使用 Ncurses 上下文菜单启用交换
高亮显示您想要启用的 SWAPFS 卷。
选择 “启用交换...(Swap on....)”。
选择交换的优先级。如果您选择 “高(High)”,您将获得一个额外的优先级级别提示。优先级级别必须是 0 到 32767 范围内的数字。默认值为 0。
选择 “启用交换(Swap on)”。
本节介绍如何使用各种 EVMS 用户界面关闭交换。
按照以下步骤使用 EVMS GUI 关闭交换
选择
-> -> 。选择您想要关闭交换的卷,然后点击
。选择 “关闭交换(Swap off)”,然后点击
。点击
。或者,您可以从 EVMS GUI 上下文菜单关闭交换
右键单击您想要关闭的 SWAPFS 卷。
点击
点击
。本章讨论插件操作任务,并演示如何使用 EVMS GUI、Ncurses 和 CLI 界面完成插件任务。
插件任务是仅在特定插件上下文中可用的功能。这些功能并非所有插件通用。例如,将备用磁盘添加到 RAID 阵列的任务仅在 MD 插件的上下文中才有意义,而重置快照的任务仅在快照插件的上下文中才有意义。
本节演示如何使用 EVMS GUI、Ncurses 和 CLI 界面完成插件操作任务。
按照以下步骤使用 EVMS GUI 将sde添加到/dev/evms/md/md0中
选择
->选择
。单击
。选择
。单击
。选择
。单击
。操作在您保存时完成。
或者,您可以按照以下步骤使用上下文菜单完成任务
查看区域md/md0。您可以通过点击卷名称旁边的加号 (+) (/dev/evms/md/md0) 在
上查看该区域,或者通过选择 来查看。右键单击该区域 (md/md0)。将显示可接受的操作和导航快捷方式列表。列表中的最后一项是此时可接受的任务。
指向
并单击鼠标左键。选择
。单击
。按照以下步骤使用 EVMS GUI 将sde添加到/dev/evms/md/md0使用 Ncurses
选择
->选择
。激活
。选择
。激活
。选择
。激活
。或者,您可以使用上下文菜单完成任务
从 “区域(Regions)” 视图中,在
上按 Enter 键。激活
菜单项。选择
。激活
。使用 EVMS CLI,所有插件任务都必须使用 task 命令完成。按照以下步骤使用 CLI 添加sde添加到/dev/evms/md/md0
以下查询命令与 list options 过滤器一起使用,以确定特定对象的可接受任务及其支持的名称-值对。该命令返回有关当前可用的插件任务的信息,并提供完成该命令所需的信息。
query: objects, object=md/md0, list options |
该命令接受任务的名称(从之前的查询返回)、要操作的对象(在本例中为 md/md0)、任何必需的选项(在本例中没有)以及,如果需要,另一个要操作的对象(在我们的示例中,sde,这是我们要添加的备用磁盘)
task: addspare, md/md0, sde |
本章介绍如何通过删除和递归删除操作删除 EVMS 对象。
在 EVMS 中,您可以使用两种方法销毁不再需要的对象:删除(Delete) 和 递归删除(Delete Recursive)。“删除(Delete)” 选项仅销毁您指定的特定对象。“递归删除(Delete Recursive)” 选项销毁您指定的对象及其底层对象,一直到容器(如果存在),否则一直到磁盘。为了删除卷,卷必须未挂载。EVMS 验证您尝试删除的卷是否未挂载,如果卷已挂载,则不执行删除操作。
以下示例演示如何使用 EVMS GUI、Ncurses 和 CLI 界面销毁卷及其下方的对象。
按照以下步骤使用 EVMS GUI 删除卷和容器
选择
-> -> 。从列表中选择卷
。点击
。此步骤删除卷和区域lvm/Sample Container/Sample Region。如果您想保留底层部分或想分别删除每个部分,您可以点击 而不是 。假设您选择了 “递归删除(Delete Recursive)”(如果不是,请在继续执行这些步骤之前删除区域),选择
-> -> 。从列表中选择容器
。点击
以销毁容器及其下的所有内容。或者,点击 仅销毁容器(如果您像示例中那样在磁盘上构建容器,则这两个命令的效果相同)。或者,您可以使用 GUI 上下文菜单执行一些卷删除步骤
从
选项卡中,右键单击/dev/evms/Sample Volume.点击
从 GUI 说明的步骤 3 开始继续操作。
按照以下步骤使用 Ncurses 删除卷和容器
选择
-> -> 。从列表中选择卷
。激活
。此步骤删除卷和区域lvm/Sample Container/Sample Region。如果您想保留底层部分或想分别删除每个部分,请激活 而不是 。假设您选择了
(如果不是,请在继续执行这些步骤之前删除区域),选择 -> -> 。从列表中选择容器
。点击
以销毁容器及其下的所有内容。或者,激活 仅删除容器(如果您像示例中那样在磁盘上构建容器,则这两个命令的效果相同)。按 回车 键。
或者,您可以使用上下文菜单执行一些卷删除步骤
从 “卷(Volumes)” 视图中,在
上按 Enter 键。激活
。从 Ncurses 说明的步骤 3 开始继续操作。
使用 delete 和 delete recursive 命令销毁 EVMS 对象。指定命令名称,后跟冒号,然后指定卷、对象或容器名称。例如
输入此命令以执行递归删除操作
delete recursive: "/dev/evms/Sample Volume" |
此步骤删除卷和区域/lvm/Sample Container/Sample Region。如果您想保留底层部分或想分别删除每个部分,请使用 delete 命令,如下所示
delete: "/dev/evms/Sample Volume" |
假设您选择了
(如果不是,请在继续执行这些步骤之前删除区域),输入以下命令以销毁容器及其下的所有内容delete recursive: "lvm/Sample Container" |
要仅销毁容器,请输入以下命令
delete: "lvm/Sample Container" |
本章讨论如何替换对象。
有时,您可能希望更改卷或存储对象的配置。例如,您可能希望用更新、更快的磁盘替换驱动器链接或 RAID-0 对象中的一个磁盘。再例如,您可能有一个从简单磁盘段创建的 EVMS 卷,并希望将该段切换为 RAID-1 区域以提供额外的数据冗余。对象替换功能可以完成此类任务。
对象替换功能使您能够将一个对象替换为另一个对象。在原始对象仍在位的情况下添加新对象。然后将数据从原始对象复制到新对象。完成后,删除原始对象。此过程可以在卷已挂载并在使用中时执行。
在此示例中,我们将从名为link1的驱动器链接对象开始,该对象由两个名为 sda1 和 sdb1 的磁盘段组成。目标是用另一个名为 sdc1 的段替换 sdb1。
![]() | 注意 |
---|---|
驱动器链接插件允许目标对象(本例中为 sdc1)与源对象大小相同或更大。如果目标对象更大,则额外的空间将不会使用。其他插件有不同的限制,可能要求两个对象的大小相同。 |
按照以下步骤将 sdb1 替换为 sdc1
选择
-> 。在 “替换源对象(Replace Source Object)” 面板中,选择
。激活
。在 “选择替换目标对象(Select Replace Target Object)” 面板中,选择
。激活
。或者,您可以使用上下文相关菜单执行相同的步骤
从 “磁盘段(Disk Segments)” 面板中,右键单击(或在对象
上按 Enter 键)。在弹出菜单中选择
。在 “选择替换目标对象(Select Replace Target Object)” 面板中,选择
。激活
。当您保存更改时,EVMS 开始将数据从 sdb1 复制到 sdc1。UI 底部的状态栏将反映复制操作的完成百分比。UI 必须保持打开状态,直到复制完成。届时,对象 sdb1 将移动到 “可用对象(Available Objects)” 面板。
本章讨论如何以及为何移动段。
移动段的原因有很多。其中最主要的原因是更好地利用磁盘空闲空间。磁盘空闲空间是磁盘上未使用的连续扇区范围,已被 EVMS 识别为空闲空间段。数据段只能通过在段末尾添加扇区来扩展,将数据段的末尾向上移动到紧随数据段之后的空闲空间中。但是,如果数据段之后没有空闲空间怎么办?可以移动一个或多个段,以在要扩展的段之后放置空闲空间。例如
要扩展的段之后的段可以移动到磁盘上的其他位置,从而在要扩展的段之后释放空间。
要扩展的段可以移动到空闲空间中,在那里有更多空间可供段扩展。
该段可以移动到段之前的空闲空间中,以便在移动后,数据段可以扩展到由移动创建的空闲空间中。
DOS 插件是最常用的 EVMS 分段管理器插件。DOS 插件支持 DOS 磁盘分区以及
需要额外元数据扇区的 OS/2 分区。
嵌入式分区表:SolarisX86、BSD 和 UnixWare。
DOS 插件读取元数据并构建分段存储对象,这些对象提供到磁盘分区的映射。
DOS 插件提供与 DOS 分区表的兼容性。该插件生成 EVMS 分段存储对象,这些对象映射由 MBR 分区表描述的主分区和由 EBR 分区表描述的逻辑分区。
DOS 分区具有由两部分信息构成的名称
它们所在的设备。
提供信息的分区表条目。
以分区名称为例hda1, 它描述了一个在设备上找到的分区hda在 MBR 分区表中。DOS 分区表可以容纳四个条目。分区号 1-4 指的是 MBR 分区记录。因此,我们的示例告诉我们分区hda1由 MBR 分区表中的第一个分区记录条目描述。然而,逻辑分区与主分区不同。EBR 分区表分散在磁盘上,但链接在一起形成一个链,该链首先使用在 MBR 分区表中找到的扩展分区记录来定位。每个 EBR 分区表都包含一个分区记录,该记录描述磁盘上的一个逻辑分区。逻辑分区的名称反映了它在 EBR 链中的位置。由于 MBR 分区表保留了数字名称 1-4,因此第一个逻辑分区始终命名为 5。下一个逻辑分区,通过跟踪 EBR 链找到,称为 6,依此类推。因此,分区hda5是一个逻辑分区,由第一个 EBR 分区表中的分区记录描述。
在发现 DOS 分区时,DOS 插件还会查找 OS/2 DLAT 元数据,以进一步确定磁盘是否为 OS/2 磁盘。OS/2 磁盘具有额外的元数据,并且在恢复期间会验证元数据。此信息对于 DOS 插件了解非常重要,因为 OS/2 磁盘必须维护额外的分区信息。(这就是为什么 DOS 插件在分配给磁盘时会询问磁盘是 Linux 磁盘还是 OS/2 磁盘。)DOS 插件需要知道磁盘上必须保留多少信息以及在获取信息时应该向用户提出哪些问题。
OS/2 磁盘可以包含兼容性卷以及逻辑卷。兼容性卷是具有分配的驱动器盘符的单个分区,可以挂载。OS/2 逻辑卷是一个或多个分区的驱动器链接,这些分区在分区级别具有软件坏块重定位。
嵌入式分区,如在 SolarisX86 磁盘或 BSD 兼容性磁盘上找到的分区,位于主分区内。因此,DOS 插件会检查它刚刚发现的主分区,以进一步确定是否存在任何嵌入式分区。包含嵌入式分区表的主分区具有指示此情况的分区类型字段。例如,类型为 0xA9 的主分区可能具有 BSD 分区表,该分区表将主分区细分为 BSD 分区。DOS 插件在主分区中查找 BSD 磁盘标签和 BSD 数据分区。如果 DOS 插件找到 BSD 磁盘标签,它将导出 BSD 分区。由于此主分区实际上只是一个包含 BSD 分区的容器,而不是数据分区本身,因此 DOS 插件不会导出它。嵌入式分区的命名方式与它们在其中发现的主分区相同。例如,hda3.1是在主分区中找到的第一个嵌入式分区的名称hda3.
将分段管理器分配给磁盘意味着您希望插件管理磁盘上的分区。为了将分段管理器分配给磁盘,插件需要创建和维护适当的元数据,这通过“磁盘类型”选项完成。当您指定“磁盘类型”选项并选择 Linux 或 OS/2 时,插件知道它需要保留哪种元数据以及在创建分区时应该提出哪些问题。
额外的 OS/2 选项是“磁盘名称”选项,您可以通过该选项为磁盘提供一个名称,该名称将保存在 OS/2 元数据中,并且在重新启动后仍然存在。
有两种基本的 DOS 分区类型
主分区,由 MBR 分区表中的分区记录描述。
逻辑分区,由 EBR 分区表中的分区记录描述。
每个分区表都有容纳四个分区记录的空间;但是,有一些规则对此施加了限制。
MBR 分区表可以容纳四个主分区记录,除非您也有逻辑分区。在这种情况下,一个分区记录用于描述扩展分区以及 EBR 链的起始位置,而 EBR 链反过来描述逻辑分区。
由于所有逻辑分区都必须驻留在扩展分区中,因此您无法在扩展分区内分配主分区的空间,也无法在此区域外部或相邻区域分配逻辑分区的空间。
最后,EBR 分区表执行两个功能
它描述一个逻辑分区,因此为此目的使用分区记录。
它使用分区记录来定位下一个 EBR 分区表。
EBR 分区表最多使用两个条目。
创建 DOS 分区时,您看到的选项取决于您正在使用的磁盘类型。但是,OS/2 磁盘和 Linux 磁盘都要求您在磁盘上选择一个可用空间段,在其中创建新的数据段。创建选项包括
您要创建的分区的大小。DOS 插件会执行任何对齐所需的调整,因此最终大小可能与您输入的值略有不同。
允许您通过指定扇区偏移量来跳过扇区并在可用空间区域内启动新分区。
允许您输入分区类型或从分区类型列表中选择;例如,原生 Linux。
允许您在创建主分区或逻辑分区之间进行选择。由于上面概述的规则,您可能有也可能没有选择。DOS 插件可以确定是否可以在您选择的可用空间区域中创建主分区或逻辑分区,并禁用此选择。
允许您在主分区中启用 sys_ind 标志字段,并在创建逻辑分区时禁用它。sys_ind 标志字段标识用于引导的活动主分区。
额外的 OS/2 选项如下
OS/2 分区可以有一个名称,如 Fred 或 Part1。
OS/2 分区属于卷,可以是兼容性卷或逻辑卷,并且卷具有名称。但是,由于 DOS 插件不是逻辑卷管理器,因此它实际上无法创建 OS/2 逻辑卷。
您可以为 OS/2 分区指定驱动器盘符,但这不是必填字段。有效的驱动器盘符为:C、D...Z。
分区是磁盘上物理上连续的扇区运行。您可以通过在磁盘上初始扇区运行中添加未分配的扇区来扩展分区。由于分区必须保持物理上连续,因此只能通过扩展到磁盘上未使用的区域来扩展分区。这些未使用的区域由 DOS 插件作为可用空间段公开。因此,只有当可用空间段紧随其后时,数据段才是可扩展的。最后,由于 DOS 分区必须在柱面边界上结束,因此 DOS 段以柱面大小增量扩展。这意味着,如果您要扩展的 DOS 段之后紧跟着一个可用空间段,如果可用空间段小于一个柱面大小,您可能无法扩展 DOS 段。
有一个扩展选项,如下所示
这是您要扩展数据段的量。该量必须是磁盘柱面大小的倍数。
Linux 内核中的多磁盘 (MD) 驱动程序和 EVMS 中的 MD 插件提供了 RAID(廉价磁盘冗余阵列)的软件实现。软件 RAID 的基本思想是将多个硬盘驱动器组合成磁盘阵列,以提高容量、性能和可靠性。
RAID 标准定义了将磁盘组合成 RAID 阵列的各种方法。在 Linux 中,MD 实现了完整 RAID 标准的子集,包括 RAID-0、RAID-1、RAID-4 和 RAID-5。此外,MD 还支持称为线性 RAID 和多路径的其他组合。
除了本附录外,有关 RAID 和 Linux MD 驱动程序的更多信息可以在软件 RAID HOWTO 中找到,网址为 www.tldp.org/HOWTO/Software-RAID-HOWTO.html。
所有 RAID 级别都用于将多个设备组合成单个 MD 阵列。MD 插件是一个区域管理器,因此 EVMS 将 MD 阵列称为“区域”。MD 可以使用磁盘、段或其他区域创建这些区域。这意味着可以使用其他 RAID 区域创建 RAID 区域,从而在单个卷堆栈中组合多个 RAID 级别。
以下小节描述了每个 Linux RAID 级别的特性。在 EVMS 中,这些级别可以被认为是 MD 插件的子模块。
线性 RAID 区域通过将对象彼此附加来组合对象。线性写入(或读取)MD 区域首先写入第一个子对象。当该对象已满时,写入将继续到第二个子对象,依此类推,直到最后一个子对象已满。线性 RAID 区域的子对象不必大小相同。
优点
线性 RAID 提供了一种使用多个小对象构建非常大区域的简单方法。
缺点
线性 RAID 不是“真正的”RAID,因为它没有数据冗余。如果一个磁盘崩溃,RAID 区域将不可用,并将导致该区域上部分或全部数据丢失。
线性 RAID 几乎没有或没有性能优势。对象以简单的线性方式组合,不允许与多个子对象并行进行太多(如果有的话)I/O。线性 RAID 的性能通常相当于单个磁盘的性能。
RAID-0 通常称为“条带化”。这意味着 RAID-0 区域中的数据均匀分布并交错在所有子对象上。例如,当向具有三个子对象且数据块大小为 4 KB 的 RAID-0 区域写入 16 KB 数据时,数据将按如下方式写入
4 KB 到对象 0
4 KB 到对象 1
4 KB 到对象 2
4 KB 到对象 0
优点
与线性 RAID 一样,RAID-0 提供了一种使用多个小对象构建非常大区域的简单方法。
通常,RAID-0 提供 I/O 性能改进,因为它可以分解大型 I/O 请求并在多个磁盘上并行提交它们。
缺点
与线性 RAID 类似,RAID-0 也不是“真正的”RAID,因为它没有数据冗余(因此得名 RAID“零”)。如果一个磁盘崩溃,RAID 区域将不可用,并且很可能导致该区域上的所有数据丢失。
RAID-1 通常称为“镜像”。RAID-1 区域中的每个子对象都包含该区域中数据的相同副本。写入 RAID-1 区域会导致数据同时写入所有子对象。从 RAID-1 区域读取可以导致从任何一个子对象读取数据。RAID-1 区域的子对象不必大小相同,但该区域的大小将等于最小子对象的大小。
优点
RAID-1 提供完整的数据冗余。在由 N 个子对象组成的 RAID-1 区域中,最多可以崩溃 N-1 个对象,该区域仍然可以运行,并且可以从剩余对象中检索数据。
RAID-1 可以提高 I/O 读取的性能。由于所有子对象都包含数据的完整副本,因此可以在所有对象之间对多个读取请求进行负载均衡。
缺点
RAID-1 可能会导致 I/O 写入的性能下降。由于每个子对象都必须具有数据的完整副本,因此每次写入区域都必须复制并发送到每个对象。写入请求只有在所有重复写入子对象都完成后才能完成。
具有 N 个磁盘的 RAID-1 区域的成本是单个磁盘的 N 倍,但仅提供单个磁盘的存储空间。
RAID-4/5 通常称为“带奇偶校验的条带化”。与 RAID-0 类似,RAID-4/5 区域中的数据被条带化或交错在所有子对象上。但是,在 RAID-4/5 中,还为每个数据条带计算并记录奇偶校验信息,以便在其中一个对象丢失时提供冗余。如果发生磁盘崩溃,则可以根据剩余磁盘上的数据和奇偶校验信息恢复该磁盘的数据。
在 RAID-4 区域中,单个子对象用于存储每个数据条带的奇偶校验信息。但是,这可能会导致此对象上的 I/O 瓶颈,因为每次 I/O 写入区域时都必须更新奇偶校验信息。
在 RAID-5 区域中,奇偶校验均匀分布在区域中的所有子对象上,从而消除了 RAID-4 中的奇偶校验瓶颈。RAID-5 提供了四种不同的算法来确定奇偶校验的分布方式。实际上,RAID-4 通常被认为是 RAID-5 的一种特殊情况,其奇偶校验算法只是使用一个对象而不是所有对象。这是 Linux 和 EVMS 使用的观点。因此,RAID-4/5 级别通常仅称为 RAID-5,而 RAID-4 只是五种可用奇偶校验算法之一。
优点和缺点
与 RAID-1 类似,RAID-4/5 在发生硬件故障时提供冗余。但是,与 RAID-1 不同,RAID-4/5 只能承受单个对象的丢失。这是因为仅记录了一个对象的奇偶校验值。如果丢失了多个对象,则没有足够的奇偶校验信息来恢复丢失的数据。
与 RAID-1 相比,RAID-4/5 以更经济高效的方式提供冗余。具有 N 个磁盘的 RAID-4/5 区域提供单个磁盘 N-1 倍的存储空间。冗余的成本仅为区域中的单个磁盘。
与 RAID-0 类似,RAID-4/5 通常可以提供 I/O 性能改进,因为可以将大型 I/O 请求分解并在多个子对象上并行提交。但是,在 I/O 写入方面,性能改进将小于 RAID-0,因为每次服务写入请求时都必须计算并重写奇偶校验信息。此外,为了在 I/O 写入方面提供任何性能改进,必须为最近访问的条带维护内存缓存,以便可以快速重新计算奇偶校验信息。如果收到对不在缓存中的数据条带的写入请求,则必须首先从磁盘读取该条带的数据块才能计算奇偶校验。如果此类缓存未命中发生过于频繁,则 I/O 写入性能可能比线性 RAID 区域更差。
多路径区域由一个或多个对象组成,就像其他 RAID 级别一样。但是,在多路径中,子对象实际上代表通往同一物理磁盘的多个物理路径。这种设置通常在具有光纤连接存储设备或 SAN 的系统上找到。
多路径实际上不是 RAID 标准的一部分,但已添加到 Linux MD 驱动程序中,因为它提供了一个方便的位置来创建由多个底层设备组成的“虚拟”设备。
以前的 RAID 级别都可以使用各种存储设备创建,包括通用的本地连接磁盘(例如,IDE 和 SCSI)。但是,只有当硬件实际上包含通往存储设备的多个物理路径时才能使用多路径,并且此类硬件通常在具有光纤或网络连接存储的高端系统上可用。因此,如果您不知道是否应该使用多路径模块,则很可能不需要使用它。
与 RAID-1 和 RAID-4/5 类似,多路径提供针对硬件故障的冗余。但是,与这些其他 RAID 级别不同,多路径可防止设备路径中的故障,而不是设备本身的故障。如果其中一个路径丢失(例如,网络适配器损坏或光纤电缆被移除),I/O 将重定向到剩余路径。
与 RAID-0 和 RAID-4/5 类似,多路径可以通过在各种路径上进行 I/O 请求的负载均衡来提高 I/O 性能。
对于所有不同的 RAID 级别,创建新 MD 区域的过程都非常相似。当使用 EVMS GUI 或 Ncurses 时,首先选择
菜单项。将打开区域管理器列表,并且每个 RAID 级别都将在此列表中显示为单独的插件。选择代表所需 RAID 级别的插件。下一个面板将列出可用于创建新 RAID 区域的对象。选择要构建新区域的所需对象。如果所选 RAID 级别不支持任何其他选项,则没有更多步骤,并且将创建该区域。如果所选 RAID 级别具有额外的创建选项,则下一个面板将列出这些选项。选择选项后,将创建该区域。当使用 CLI 时,使用以下命令创建新区域
create:region,<plugin>={<option_name>=<value>[,<option_name>=<value>]*}, <object_name>[,<object_name>]* |
对于 <plugin>,可用的插件名称为“MDLinearRegMgr”、“MDRaid0RegMgr”、“MDRaid1RegMgr”、“MDRaid5RegMgr”和“MD Multipath”。可用选项在以下部分中列出。如果没有任何选项可用或不需要,只需将花括号之间的空格留空即可。
线性 RAID 和多路径级别不提供额外的创建选项。其余 RAID 级别提供以下列出的选项。
RAID-0 具有以下选项
此选项表示条带化数据的粒度。换句话说,在移动到下一个对象之前写入到一个子对象的数据量。有效值的范围为 4 KB 到 4096 KB,并且必须是 2 的幂。如果未指定该选项,则将使用 32 KB 的默认数据块大小。
RAID 区域中的活动对象是区域正在积极使用的对象,并且包含数据或奇偶校验信息。创建新 RAID 区域时,从主可用对象面板中选择的所有对象都将是活动对象。线性 RAID 和 RAID-0 区域仅具有活动对象,如果任何这些活动对象发生故障,则该区域不可用。
另一方面,冗余 RAID 级别(1 和 4/5)除了其活动对象之外,还可以具有备用对象。备用是分配给区域的对象,但不包含任何实时数据或奇偶校验。其主要目的是在其中一个活动对象发生故障时充当“热备用”。
如果其中一个子对象发生故障,MD 内核驱动程序会将故障对象从区域中删除。由于这些 RAID 级别提供冗余(以镜像数据或奇偶校验信息的形式),因此整个区域可以继续提供对数据的正常访问。但是,由于缺少一个活动对象,该区域现在处于“降级”状态。
如果区域变为降级状态并且已为该区域分配了备用对象,则内核驱动程序将自动激活该备用对象。这意味着备用对象将变为活动对象。但是,此新激活的对象没有任何数据或奇偶校验信息,因此内核驱动程序必须将数据“同步”到此对象。对于 RAID-1,这意味着将所有数据从当前活动对象之一复制到此新活动对象。对于 RAID-4/5,这意味着使用来自当前活动对象的数据和奇偶校验信息来填充新活动对象上丢失的数据和奇偶校验。在同步过程进行时,区域仍保持降级状态。只有当同步完成时,区域才会返回到完整的“正常”状态。
您可以通过检查/proc/mdstat文件来跟踪同步过程的进度。您还可以使用以下文件控制同步过程的速度/proc/sys/dev/raid/speed_limit_min的替换,以及/proc/sys/dev/raid/speed_limit_max。要加快该过程,请将更大的数字回显到speed_limit_min文件。
如上所述,可以在创建 RAID-1 或 RAID-4/5 区域时为该区域分配备用对象。此外,备用对象也可以添加到已存在的 RAID 区域。此操作的效果与在创建区域时分配对象的效果相同。
如果 RAID 区域干净且运行正常,则内核驱动程序会将新对象添加为常规备用盘,并且它将充当未来故障的热备用。如果 RAID 区域当前已降级,则内核驱动程序将立即激活新的备用对象并开始同步数据和奇偶校验信息。
对于 RAID-1 和 RAID-4/5 区域,使用“addspare”插件功能向区域添加新的备用对象。唯一的参数是所需对象的名称,并且一次只能添加一个备用对象。对于 RAID-1 区域,新的备用对象必须至少与该区域一样大,而对于 RAID-4/5 区域,新的备用对象必须至少与最小的活动对象一样大。
备用对象可以在 RAID 区域处于活动状态和使用中时添加。
如果 RAID-1 或 RAID-4/5 区域干净且运行正常,并且该区域具有备用对象,则如果需要将该对象用于其他目的,则可以从该区域中删除备用对象。
对于 RAID-1 和 RAID-4/5 区域,使用“remspare”插件功能从区域中删除备用对象。唯一的参数是所需对象的名称,并且一次只能删除一个备用对象。删除备用盘后,该对象将显示在 EVMS 用户界面中的可用对象列表中。
备用对象可以在 RAID 区域处于活动状态和使用中时删除。
在 RAID-1 区域中,每个活动对象都具有该区域数据的完整副本。这意味着可以轻松地添加新的活动对象,将数据同步到此新对象,从而增加镜像的“宽度”。例如,如果您有一个 2 路 RAID-1 区域,则可以添加一个新的活动对象,这将使该区域增加到 3 路镜像,从而增加该区域提供的冗余量。
添加新活动对象的第一个过程可以通过两种方式完成。首先,“addactive”插件功能将 EVMS 中的任何可用对象添加到区域中作为新的活动对象。新对象必须至少与 RAID-1 区域的大小一样大。其次,如果 RAID-1 区域具有备用对象,则可以使用“activatespare”插件功能将该对象转换为区域的活动成员。
如上一节所述,如果 RAID-1 或 RAID-4/5 区域中的一个活动对象出现问题,则该对象将被剔除,并且该区域将变为降级状态。活动对象可能以多种方式出现问题。例如,磁盘可能会崩溃、磁盘可能会从系统中拔出、驱动器电缆可能会被移除,或者一个或多个 I/O 可能会导致错误。这些中的任何一个都将导致对象被剔除,并且 RAID 区域变为降级状态。
如果磁盘已完全停止工作或已从机器中移除,则 EVMS 显然将不再识别该磁盘,并且在运行 EVMS 用户界面时,它不会显示为 RAID 区域的一部分。但是,如果磁盘仍然在机器中可用,则 EVMS 很可能能够识别该磁盘已分配给 RAID 区域,但已被内核从任何活动服务中移除。这种类型的磁盘称为故障对象。
故障对象不再可供 RAID 区域使用,应将其删除。您可以使用 RAID-1 和 RAID-4/5 的“remfaulty”插件功能删除故障对象。此操作与删除备用对象非常相似。删除对象后,它将显示在 EVMS 用户界面中的可用对象列表中。
故障对象可以在 RAID 区域处于活动状态和使用中时删除。
有时,磁盘可能会出现暂时性问题,导致磁盘被标记为故障,并且 RAID 区域变为降级状态。例如,驱动器电缆可能会松动,导致 MD 内核驱动程序认为磁盘已消失。但是,如果电缆重新插入,则磁盘应可用于正常使用。但是,MD 内核驱动程序和 EVMS MD 插件将继续指示该磁盘是故障对象,因为该磁盘可能错过了对 RAID 区域的一些写入,因此将与区域中的其余磁盘不同步。
为了纠正这种情况,应从 RAID 区域中删除故障对象(如上一节所述)。然后,该对象将显示为可用对象。接下来,应将该对象作为备用盘添加回 RAID 区域(如 B.3.1 节 中所述)。保存更改后,MD 内核驱动程序将激活备用盘并同步数据和奇偶校验。同步完成后,RAID 区域将以其原始正常配置运行。
此过程可以在 RAID 区域处于活动状态和使用中时完成。
EVMS 提供了手动将 RAID-1 或 RAID-4/5 区域的子对象标记为故障的功能。这与对象出现某些问题或导致 I/O 错误的效果相同。该对象将从区域中的活动服务中剔除,然后将在 EVMS 中显示为故障对象。然后可以按照前面各节中的讨论将其从区域中删除。
您可能出于多种原因想要手动将对象标记为 faulty(故障)。一个例子是测试故障场景,以了解 Linux 和 EVMS 如何处理硬件故障。另一个例子是您想要用不同的对象替换当前活动的某个对象。为此,您可以添加新对象作为备用,然后将当前对象标记为 faulty(导致新对象被激活并且数据被重新同步),最后移除 faulty 对象。
如果 RAID-1 区域中有多个活动对象,则 EVMS 允许您在该区域中将对象标记为 faulty。如果 RAID-4/5 区域有备用对象,则 EVMS 允许您在该区域中将对象标记为 faulty。
RAID-1 和 RAID-4/5 都使用 “markfaulty” 插件功能。此命令可以在 RAID 区域处于活动状态和使用中时使用。
可以调整 RAID 区域的大小,以扩展或缩小区域中可用的数据空间。每个 RAID 级别都有不同的特性,因此每个 RAID 级别对于何时以及如何扩展或缩小大小有不同的要求。
有关调整 EVMS 卷和对象大小的常规信息,请参阅第 16 章。
线性 RAID 区域可以通过两种方式扩展。首先,如果线性 RAID 区域中的最后一个子对象是可扩展的,则可以扩展该对象,并且 RAID 区域可以扩展到该新空间中。其次,可以向区域末尾添加一个或多个新对象。
同样,线性 RAID 区域可以通过两种方式缩小。如果区域中的最后一个子对象是可缩小的,则可以缩小该对象,并且 RAID 区域将缩小相同的量。此外,可以从 RAID 区域的末尾移除一个或多个对象(但不能移除区域中的第一个对象)。
线性 RAID 区域可以在其处于活动状态和使用中时调整大小。
您可以通过向 RAID-0 区域添加一个新对象来扩展该区域。您可以通过移除具有 N 个对象的区域中最多 N-1 个当前子对象来缩小 RAID-0 区域。
由于 RAID-0 区域跨子对象进行条带化,因此当调整 RAID-0 区域大小时,必须“重新条带化”数据以适应新对象数量。这意味着 MD 插件会将每个数据块从其在当前区域中的位置移动到扩展区域中的适当位置。请注意,重新条带化过程可能需要很长时间。目前,没有加速或减慢重新条带化过程的机制。EVMS GUI 和文本模式用户界面将指示重新条带化的进度。请不要尝试在重新条带化完成之前中断它,因为 RAID-0 区域中的数据很可能损坏。
RAID-0 区域必须先停用,然后才能调整大小,以防止在数据重新条带化时发生数据损坏。
重要提示:在尝试 RAID-0 调整大小之前,请准备好合适的备份。如果重新条带化过程在完成之前中断(例如,EVMS 进程被终止、机器崩溃或 RAID 区域中的子对象开始返回 I/O 错误),则无法在所有情况下确保该区域的状态。
EVMS 将尝试在 RAID-0 调整大小期间出现问题后进行恢复。MD 插件会跟踪 MD 元数据中调整大小的进度。每次移动数据块时,都会更新 MD 元数据以反映当前正在处理的块。如果 EVMS 或机器在调整大小期间崩溃,则下次运行 EVMS 时,MD 插件将尝试根据最新的元数据信息恢复该区域的状态。如果正在进行扩展,则区域将“回滚”到扩展之前的状态。如果正在进行缩小,则缩小将从停止的点继续。但是,这种恢复并不总是足以确保整个卷堆栈处于正确的状态。如果 RAID-0 区域直接制成卷,则很可能会恢复到正确的状态。另一方面,如果 RAID 区域是 LVM 容器中的已消耗对象,或者另一个 RAID 区域的子对象,则这些插件的元数据可能并不总是处于正确的状态,并且可能位于 RAID 区域上的错误位置。因此,构建在 RAID-0 区域之上的容器、对象和卷可能无法反映正确的大小,甚至可能无法被发现。
如果所有子对象都可以同时调整相同的大小,则可以调整 RAID-1 区域的大小。
无法通过添加其他对象来调整 RAID-1 区域的大小。这种类型的操作称为“添加活动对象”,在B.3.3 节中讨论。
RAID-1 区域必须先停用,然后才能调整大小。
调整 RAID-4/5 区域大小遵循与调整 RAID-0 区域大小相同的规则和限制。通过向区域添加一个新对象来扩展 RAID-4/5 区域。通过移除具有 N 个对象的区域中最多 N-1 个当前子对象来缩小 RAID-4/5 区域。
有关如何执行此功能的信息,请参阅B.5.2 节。
与 RAID-0 一样,RAID-4/5 区域必须先停用,然后才能调整大小。
MD 插件允许将 RAID 区域的子对象替换为其他可用对象。这是使用通用的 EVMS 替换功能完成的。有关如何执行此功能的更多详细信息,请参阅第 22 章。
对于所有 RAID 级别,替换对象必须至少与要替换的子对象一样大。如果替换对象大于要替换的子对象,则替换对象上的额外空间将不会使用。为了执行替换操作,构成 RAID 区域的任何卷都必须卸载。
此功能对于线性 RAID 和 RAID-0 区域最有用。RAID-1 和 RAID-4/5 也允许使用此功能,但这两种 RAID 级别都提供了将对象标记为 faulty 的能力,这可以达到相同的最终结果。由于该过程可以在区域使用中时完成,因此通常比对象替换更可取,对象替换必须在区域停用时完成。
LVM 插件将存储对象组合成称为容器的组。从这些容器中,可以创建新的存储对象,并具有各种到已消耗对象的映射。容器允许组合多个对象的存储容量,允许将来添加额外的存储,并允许轻松调整生成的对象的大小。
Linux LVM 插件与 Sistina Software 的原始 Linux LVM 工具的卷和卷组兼容。原始 LVM 基于卷组的概念。卷组 (VG) 是物理卷 (PV) 的分组,物理卷通常是磁盘或磁盘分区。卷组不能直接用作存储空间;相反,它代表可用的存储池。您创建逻辑卷 (LV) 以使用此存储。LV 的存储空间可以映射到一个或多个组的 PV。
Linux LVM 概念由 EVMS LVM 插件中的类似概念表示。卷组称为容器,生成的逻辑卷称为区域。物理卷可以是磁盘、段或其他区域。就像原始 LVM 一样,区域可以通过多种方式映射到已消耗的对象。
容器是使用初始对象集创建的。在 LVM 插件中,对象可以是磁盘、段或区域。LVM 有两个用于创建容器的选项。容器创建后,这些选项的值无法更改。这些选项是
新容器的名称。
物理扩展 (PE) 大小,这是可以创建区域的粒度。默认值为 16 MB。每个区域必须具有整数个扩展。此外,每个区域最多只能有 65534 个扩展。因此,容器的 PE 大小限制了该容器中区域的最大大小。使用默认 PE 大小,LVM 区域最多可以是 1 TB。此外,容器消耗的每个对象必须足够大,至少可以容纳五个扩展。因此,PE 大小不能任意大。请明智地选择。
您可以向现有的 LVM 容器添加对象,以增加可用于创建区域的存储池。单个容器最多可以消耗 256 个对象。由于容器的名称和 PE 大小是在创建容器时设置的,因此向容器添加新对象时没有可用的选项。每个对象必须足够大,可以容纳五个物理扩展。如果对象不够大以满足此要求,则 LVM 插件将不允许将该对象添加到容器中。
只要没有区域映射到已消耗的对象,您就可以从其容器中移除该对象。LVM 插件不允许移除正在使用的对象。如果必须移除对象,您可以删除或缩小区域,或移动扩展,以便释放对象的使用。
从 LVM 容器中移除对象没有可用的选项。
除了向 LVM 容器添加新对象之外,您还可以通过扩展现有已消耗对象 (PV) 之一来扩展容器中的空间。例如,如果 PV 是一个磁盘段,并且磁盘上紧随其后有可用空间,则可以扩展该段,这将增加容器中的可用空间量。同样,如果 PV 是 RAID-0 或 RAID-5 区域,则可以通过添加其他对象来扩展该区域,这反过来会增加容器中的可用空间。
当使用 GUI 或文本模式 UI 时,PV 扩展是通过扩展容器来执行的。如果任何现有 PV 是可扩展的,它们将出现在扩展点列表中。选择要扩展的 PV,然后选择扩展该对象的选项。PV 扩展后,容器的可用空间将反映该 PV 上可用的额外空间。
当使用 CLI 时,PV 扩展是通过直接扩展相应的对象来执行的。CLI 和 EVMS 引擎将路由必要的命令,以便同时扩展容器。
扩展 PV 的选项取决于拥有该 PV 对象的插件。有关该对象选项的更多详细信息,请参阅相应插件的附录。
除了从 LVM 容器中移除现有对象之外,您还可以通过缩小现有已消耗对象 (PV) 之一来减小容器的大小。这仅在已消耗对象在对象末尾具有未分配给任何 LVM 区域的物理扩展 (PE) 时才允许。在这种情况下,LVM2 将允许对象缩小该对象末尾未使用的 PE 数量。
例如,如果 PV 是一个桌面段,则可以缩小该段,这将减少容器中的可用空间量。同样,如果 PV 是 RAID-0 或 RAID-5 区域,则可以通过移除其中一个对象来缩小该区域,这反过来会减少容器中的可用空间。
当使用 GUI 或文本模式 UI 时,PV 缩小是通过缩小容器来执行的。如果任何现有 PV 是可缩小的,它们将出现在缩小点列表中。选择要缩小的 PV,然后选择缩小该对象的选项。PV 缩小后,容器的可用空间将反映该 PV 上可用的减少空间。
当使用 CLI 时,PV 缩小是通过直接缩小相应的对象来执行的。CLI 和 EVMS 引擎将路由必要的命令,以便同时缩小容器。
缩小 PV 的选项取决于拥有该 PV 对象的插件。有关该对象选项的更多详细信息,请参阅相应插件的附录。
您可以重命名现有的 LVM 容器。重命名 LVM 容器时,从该容器生成的所有区域的名称也将自动更改,因为区域名称包含容器名称。在 EVMS GUI 和文本模式 UI 中,这是使用 modify properties 命令完成的,该命令可通过“Actions”菜单或上下文相关的弹出菜单获得。在 EVMS CLI 中,这是使用 set 命令完成的。
有关重命名区域效果的更多信息,请参阅C.3.6 节。
您可以从 LVM 容器中的可用空间创建 LVM 区域。如果容器中至少有一个扩展的可用空间,则可以创建新区域。
以下选项可用于创建 LVM 区域
新区域的名称。
要分配给新区域的扩展数量。新区域必须至少有一个扩展,并且不超过容器中可用的总可用扩展,或 65534 个(以较小者为准)。如果您使用扩展选项,则会自动计算 size 选项的适当值。默认情况下,新区域使用容器中的所有可用扩展。
新区域的大小。此大小必须是容器 PE 大小的倍数。如果您使用大小选项,则会自动计算 extents 选项的适当值。默认情况下,新区域使用容器中的所有可用空间。
如果容器消耗两个或多个对象,并且每个对象都有未分配的扩展,则新区域可以跨多个对象进行条带化。这类似于 RAID-0 条带化,并实现了跨多个对象的 I/O 吞吐量增加。此选项指定新区域应跨多少个对象进行条带化。默认情况下,新区域不进行条带化,此值设置为 1。
条带化的粒度。默认值为 16 KB。仅当条带选项大于 1 时才使用此选项。
此选项指定新区域必须分配在单个对象上,并且该对象上的扩展必须在物理上是连续的。默认情况下,此项设置为 false,允许区域跨越对象。如果条带选项大于 1 时才使用此选项。
新区域应映射到的对象的名称列表。默认情况下,此列表为空,这意味着所有可用对象都将用于为新区域分配空间。
如果容器中有未使用的扩展,则可以扩展现有的 LVM 区域。如果区域是条带化的,则只能通过使用它条带化的对象上的可用空间来扩展它。如果区域是使用 contiguous 选项创建的,则只有在当前分配的空间之后有物理上连续的空间时才能扩展它。
以下选项可用于扩展 LVM 区域
要添加到区域的扩展数量。如果您指定此选项,则会自动计算 add_size 选项的适当值。默认情况下,区域将扩展以使用容器中的所有可用扩展。
要添加到区域的空间量。如果您指定此选项,则会自动计算 add_extents 选项的适当值。默认情况下,区域将扩展以使用容器中的所有可用空间。
要从中分配额外空间的对象名称列表。默认情况下,此列表为空,这意味着所有可用对象都将用于为区域分配新空间。
您可以通过从区域末尾移除扩展来缩小现有的 LVM 区域。区域必须至少有一个扩展,因此区域不能缩小为零。
以下选项在缩小 LVM 区域时可用。由于区域始终通过从区域末尾移除空间来缩小,因此在此命令中无法指定对象列表。
要从区域中移除的扩展数量。如果您指定此选项,则会自动计算remove_size选项的适当值。默认情况下,从区域中移除一个扩展。
要缩小区域的空间量。如果您指定此选项,则会自动计算remove_extents选项的适当值。
LVM 插件允许您更改 LVM 区域的逻辑到物理映射,并在该过程中移动必要的数据。如果需要从容器中移除 PV,此功能最有用。目前有两个用于移动区域的 LVM 插件功能:move_pv 和 move_extent。
当需要从容器中移除 PV 时,必须将该 PV 上分配给区域的所有 PE 移动到其他 PV。 move_pv 命令允许您将 PE 移动到其他 PV。 move_pv 针对 LVM 容器,所需的 PV 用作选定对象。以下选项可用
默认情况下,容器中的所有剩余 PV 都用于查找可用的扩展以移动 PE。您可以使用此选项指定 PV 的子集。
当目标 PV 包含条带化区域时,有三种处理属于这些区域的移动扩展的选择
不要费心维护真正的条带化。此选择允许将扩展移动到区域已用于其他条带的 PV。这意味着性能不会像真正的条带化那样最佳,但允许在执行移动操作时具有最大的灵活性。此选择是 maintain_stripes 选项的默认值。
确保移动的扩展不会最终位于条带化区域已使用的任何 PV 上。但是,这并不能确保所有移动的扩展都最终位于同一个 PV 上。例如,具有三个条带的区域最终可能会映射到四个或更多 PV。
确保所有移动的扩展都最终位于同一个 PV 上,从而确保真正的条带化,条带化 PV 的数量与条带化区域最初使用的数量相同。这是最受限制的选择,并且可能会阻止 move_pv 操作继续进行(取决于容器的特定配置)。
如果目标 PV 没有条带化区域,则忽略 maintain_stripes 选项。
除了从一个 PV 移动所有扩展之外,LVM 插件还提供了移动单个扩展的能力。这允许对扩展的分配进行细粒度调整。此命令针对拥有要移动的扩展的区域。 move_extent 命令有三个必需的选项
要移动的逻辑扩展的编号。LE 编号从 0 开始。
要将扩展移动到的目标对象。
目标对象上的目标物理扩展。PE 编号也从 0 开始。
要确定源 LE 和目标 PE,查看有关区域和容器的扩展信息通常很有帮助。以下是可用于收集此信息的命令行选项
要查看区域中 LE 的映射,请输入此命令
query:ei,<region_name>,Extents |
要查看容器中 PV 的列表,请输入此命令
query:ei,<container_name>,Current_PVs |
要查看所需目标 PV 的当前 PE 映射,请输入此命令
query:ei,<container_name>,PEMapPV# |
# 是容器中目标 PV 的编号。
通过使用所需区域和容器的上下文弹出菜单中的“显示详细信息”项,也可以在 GUI 和文本模式 UI 中轻松获得此信息。
您可以重命名现有的 LVM 区域。在 EVMS GUI 和文本模式 UI 中,这是使用 modify properties 命令完成的,该命令可通过“Actions”菜单或上下文相关的弹出菜单获得。在 EVMS CLI 中,这是使用 set 命令完成的。
如果重命名的 LVM 区域上有兼容性卷,则该兼容性卷的名称也将更改。为了使其正常工作,必须在更改名称之前卸载该卷。此外,请务必更新您的/etc/fstab文件(如果列出了该卷),否则下次系统启动时该卷将无法正确挂载。
如果重命名的 LVM 区域上有 EVMS 卷或构建在其上的另一个存储对象,则区域的名称更改对上层是透明的。在这种情况下,可以在卷挂载时完成重命名。
LVM2 插件提供与 Red Hat(以前为 Sistina)的 LVM2 工具引入的新卷格式的兼容性。此插件在功能上与 LVM 插件非常相似。主要区别在于新的、改进的元数据格式。LVM2 仍然基于卷组 (VG) 的概念,卷组由物理卷 (PV) 构建,并生成逻辑卷 (LV)。
与 LVM 插件一样,LVM2 插件将卷组表示为 EVMS 容器,并将逻辑卷表示为 EVMS 区域。LVM2 容器组合存储对象(磁盘、段或其他区域)以创建可用空间池。然后从该可用空间创建区域,并具有各种到已消耗对象的映射。
容器是使用初始对象集创建的。这些对象可以是磁盘、段或区域。创建 LVM2 容器时有两个可用选项
新容器的名称。
物理扩展 (PE) 大小,这是可以创建区域的粒度。默认值为 32 MB。与 LVM1 插件不同,可以分配给 LVM2 区域的扩展数量没有限制。
您可以向现有的 LVM 容器添加对象,以增加可用于创建区域的存储池。由于容器的名称和扩展大小是在创建容器时设置的,因此向容器添加新对象时没有可用的选项。每个对象必须足够大,至少可以容纳一个物理扩展。如果对象不够大以满足此要求,则 LVM2 插件将不允许将该对象添加到容器中。
只要没有区域映射到已消耗的对象,您就可以从其容器中移除该对象。LVM2 插件不允许移除正在使用的对象。如果必须移除对象,您可以删除或缩小区域,或移动扩展,以便释放对象的使用。
从 LVM 容器中移除对象没有可用的选项。
除了向 LVM2 容器添加新对象之外,您还可以通过扩展现有已消耗对象 (PV) 之一来扩展容器中的空间。例如,如果 PV 是一个磁盘段,并且磁盘上紧随其后有可用空间,则可以扩展该段,这将增加容器中的可用空间量。同样,如果 PV 是 RAID-0 或 RAID-5 区域,则可以通过添加其他对象来扩展该区域,这反过来会增加容器中的可用空间。
当使用 GUI 或文本模式 UI 时,PV 扩展是通过扩展容器来执行的。如果任何现有 PV 是可扩展的,它们将出现在扩展点列表中。选择要扩展的 PV,然后选择扩展该对象的选项。PV 扩展后,容器的可用空间将反映该 PV 上可用的额外空间。
当使用 CLI 时,PV 扩展是通过直接扩展相应的对象来执行的。CLI 和 EVMS 引擎将路由必要的命令,以便同时扩展容器。
扩展 PV 的选项取决于拥有该 PV 对象的插件。有关该对象选项的更多详细信息,请参阅相应插件的附录。
除了从 LVM2 容器中移除现有对象之外,您还可以通过缩小现有已消耗对象 (PV) 之一来减小容器的大小。这仅在已消耗对象在对象末尾具有未分配给任何 LVM2 区域的物理扩展 (PE) 时才允许。在这种情况下,LVM2 将允许对象缩小该对象末尾未使用的 PE 数量。
例如,如果 PV 是一个桌面段,则可以缩小该段,这将减少容器中的可用空间量。同样,如果 PV 是 RAID-0 或 RAID-5 区域,则可以通过移除其中一个对象来缩小该区域,这反过来会减少容器中的可用空间。
当使用 GUI 或文本模式 UI 时,PV 缩小是通过缩小容器来执行的。如果任何现有 PV 是可缩小的,它们将出现在缩小点列表中。选择要缩小的 PV,然后选择缩小该对象的选项。PV 缩小后,容器的可用空间将反映该 PV 上可用的减少空间。
当使用 CLI 时,PV 缩小是通过直接缩小相应的对象来执行的。CLI 和 EVMS 引擎将路由必要的命令,以便同时缩小容器。
缩小 PV 的选项取决于拥有该 PV 对象的插件。有关该对象选项的更多详细信息,请参阅相应插件的附录。
您可以重命名现有的 LVM2 容器。重命名 LVM2 容器时,从该容器生成的所有区域的名称也将自动更改,因为区域名称包含容器名称。在 EVMS GUI 和文本模式 UI 中,这是使用 modify properties 命令完成的,该命令可通过“Actions”菜单或上下文相关的弹出菜单获得。在 EVMS CLI 中,这是使用 set 命令完成的。
有关重命名区域效果的更多信息,请参阅D.2.5 节。
您可以从 LVM2 容器中的可用空间创建 LVM2 区域。如果容器中至少有一个扩展的可用空间,则可以创建新区域。
以下选项可用于创建 LVM2 区域
新区域的名称。
新区域的大小。此大小必须是容器扩展大小的倍数。如果不是,则大小将向下舍入为适当的值。默认情况下,容器中的所有可用空间都将用于新区域。
如果容器使用两个或更多对象,并且每个对象都有未分配的区段,则新区域可以条带化分布在多个对象上。这类似于 RAID-0 条带化,并可以提高 I/O 吞吐量。此选项指定新区域应条带化分布在多少个对象上。默认情况下,新区域不进行条带化,此值设置为 1。
条带化的粒度。默认值为 64 KB。仅当 stripes 选项大于 1 时才使用此选项。
新区域应映射到的对象的名称列表。默认情况下,此列表为空,这意味着所有可用对象都将用于为新区域分配空间。
如果容器中有任何未使用的区段,您可以扩展现有的 LVM 区域。以下是用于扩展 LVM 区域的可用选项。
要添加到区域的空间量。这是一个增量大小,而不是区域的新绝对大小。与创建新区域一样,此大小必须是容器区段大小的倍数,并且必要时会向下舍入。
将区域的这个新部分条带化分布的对象数量。此值可以与现有区域中的条带数不同。例如,如果区域最初创建时有三个条带,但现在只有两个对象可用,则区域的新部分可以仅在这两个对象上进行条带化分布。区域中最后一个映射的条带数将用作默认值。
条带化的粒度。与条带数一样,此值可以与现有区域的条带大小不同。默认情况下,使用区域中最后一个映射的条带大小。
区域应扩展到的对象的名称列表。默认情况下,此列表为空,这意味着所有可用对象都将用于为区域分配额外的空间。
您可以通过从区域末尾移除扩展来缩小现有的 LVM 区域。区域必须至少有一个扩展,因此区域不能缩小为零。
以下选项在缩小 LVM 区域时可用。由于区域始终通过从区域末尾移除空间来缩小,因此在此命令中无法指定对象列表。
要从区域中移除的空间量。这是一个增量大小,而不是区域的新绝对大小。与创建和扩展区域一样,此大小必须是容器区段大小的倍数,并且必要时会向下舍入。
您可以重命名现有的 LVM2 区域。在 EVMS GUI 和文本模式 UI 中,这可以使用 modify properties 命令完成,该命令可通过 “Actions” 菜单或上下文相关的弹出菜单获得。在 EVMS CLI 中,这可以使用 set 命令完成。
如果重命名的 LVM2 区域上有兼容性卷,则该兼容性卷的名称也将更改。为了使其正常工作,必须在更改名称之前卸载该卷。此外,请务必更新您的/etc/fstab文件(如果列出了该卷),否则下次系统启动时该卷将无法正确挂载。
如果重命名的 LVM2 区域上有 EVMS 卷或构建在其上的另一个存储对象,则区域的名称更改对于上层是透明的。在这种情况下,可以在卷已挂载时完成重命名。
集群段管理器 (CSM) 是 EVMS 插件,用于识别和管理集群存储。CSM 通过在磁盘的开头和结尾写入元数据来保护磁盘存储对象,这可以防止其他插件尝试使用该磁盘。其他插件可以查看磁盘,但它们看不到自己的元数据签名,也无法使用该磁盘。CSM 提供的保护使 CSM 能够发现集群存储,并以适当的方式将其呈现给系统。
所有集群存储磁盘对象都必须放置在具有以下属性的容器中
标识集群管理软件的集群 ID
标识磁盘对象所有者的节点 ID
存储类型:私有、共享或已导出
CSM 插件读取元数据并构建使用磁盘对象的容器。每个磁盘都提供一个可用区域,映射为 EVMS 数据段,但前提是磁盘可供查看存储的节点访问。
CSM 插件执行以下操作
检查磁盘对象
创建容器
使用容器来使用磁盘对象
如果磁盘可供节点访问,则生成数据段对象
将段管理器分配给磁盘意味着您希望插件管理磁盘上的分区。为了做到这一点,插件需要创建和维护适当的元数据。CSM 在磁盘上创建以下三个段
主要元数据段
可用区域数据段
次要元数据段
CSM 使用以下选项收集执行分配操作所需的信息
仅从集群软件提供给 CSM 的已配置节点 ID 列表中选择。默认选择是从您运行 EVMS 用户界面的节点。
容器的名称。您需要保持此名称在集群中是唯一的,以防止容器故障转移到另一个具有相同名称的容器的节点时出现名称冲突错误。
可以是:共享、私有或已导出。
请注意,通常情况下,当您想将磁盘添加到现有 CSM 容器时,您会将 CSM 分配给磁盘。如果您正在创建新容器,您可以选择使用:
-> -> 或 -> -> 。如果容器不存在,则将为磁盘创建容器。如果容器已存在,则磁盘将被添加到其中。
JFS FSIM 允许 EVMS 用户从 EVMS 界面中创建和管理 JFS 文件系统。为了使用 JFS FSIM,您的系统上必须安装 1.0.9 或更高版本的 JFS 实用程序。最新版本的 JFS 可以在 http://oss.software.ibm.com/jfs/ 找到。
可以使用 mkfs 在任何 EVMS 或兼容性卷(至少 16 MB 大小)上创建 JFS 文件系统,前提是该卷尚未具有文件系统。以下是用于创建 JFS 文件系统的可用选项
在创建文件系统之前,对卷执行只读坏块检查。默认值为 false。
将文件系统标记为不区分大小写(为了 OS/2 兼容性)。默认值为 false。
为文件系统指定卷标。默认值为 none。
指定用于外部日志的卷。此选项仅适用于 1.0.20 或更高版本的 JFS 实用程序。默认值为 none。
指定内联日志大小(以 MB 为单位)。仅当未设置 journalvol 选项时,此选项才可用。默认值为卷大小的 0.4%,最大为 32 MB。
以下是用于使用 fsck 检查 JFS 文件系统的可用选项
强制执行完整的文件系统检查,即使文件系统已被标记为干净。默认值为 false。
以只读模式检查文件系统。报告但不修复错误。如果文件系统已挂载,则会自动选择此选项。默认值为 false。
省略重放事务日志。仅当日志损坏时才应指定此选项。默认值为 false。
在检查期间显示详细信息和调试信息。默认值为 false。
显示版本fsck.jfs并退出而不检查文件系统。默认值为 false。
XFS FSIM 允许 EVMS 用户从 EVMS 界面中创建和管理 XFS 文件系统。为了使用 XFS FSIM,您的系统上必须安装 2.0.0 或更高版本的 XFS 实用程序。最新版本的 XFS 可以在 http://oss.sgi.com/projects/xfs/ 找到。
可以使用 mkfs 在任何 EVMS 或兼容性卷上创建 XFS 文件系统,前提是该卷尚未具有文件系统。以下是用于创建 XFS 文件系统的可用选项
为文件系统指定卷标。默认值为 none。
指定用于外部日志的卷。默认值为 none。
指定内联日志大小(以 MB 为单位)。仅当未设置 journalvol 选项时,此选项才可用。默认值为 4 MB;允许的范围为 2 到 256 MB。
ReiserFS FSIM 允许 EVMS 用户从 EVMS 界面中创建和管理 ReiserFS 文件系统。为了使用 ReiserFS FSIM,您的系统上必须安装 3.x.0 或更高版本的 ReiserFS 实用程序。为了从 ReiserFS FSIM 获得完整功能,请使用 3.x.1b 或更高版本。最新版本的 ReiserFS 可以在 http://www.namesys.com/ 找到。
Ext-2/3 FSIM 允许 EVMS 用户从 EVMS 界面中创建和管理 Ext2 和 Ext3 文件系统。为了使用 Ext-2/3 FSIM,您的系统上必须安装 e2fsprogs 软件包。e2fsprogs 软件包可以在 http://e2fsprogs.sourceforge.net/ 找到。
可以使用 mkfs 在任何 EVMS 或兼容性卷上创建 Ext-2/3 文件系统,前提是该卷尚未具有文件系统。以下是用于创建 Ext-2/3 文件系统的可用选项
在创建文件系统之前,对卷执行只读坏块检查。默认值为 false。
在创建文件系统之前,对卷执行读/写坏块检查。默认值为 false。
为文件系统指定卷标。默认值为 none。
为 Ext2 文件系统创建一个日志。默认值为 true。
OpenGFS FSIM 允许 EVMS 用户从 EVMS 界面中创建和管理 OpenGFS 文件系统。为了使用 OpenGFS FSIM,您的系统上必须安装 OpenGFS 实用程序。请访问 http://sourceforge.net/projects/opengfs 以获取 OpenGFS 项目。
可以使用 mkfs 在任何 EVMS 或兼容性卷上创建 OpenGFS 文件系统,前提是该卷尚未具有文件系统,并且该卷是从共享集群容器生成的。以下是用于创建 OpenGFS 文件系统的可用选项
设置文件系统块大小。块大小以字节为单位。块大小必须是介于 512 和 65536 之间的 2 的幂次方,包括 512 和 65536。默认块大小为 4096 字节。
日志卷的名称,每个节点一个。
指定要使用的锁定协议的名称。选择项为 “memexp” 和 “opendlm”。
指定要用于包含锁定元数据的共享卷。
OpenGFS FSIM 仅处理文件系统操作。它不处理 OpenGFS 集群和节点配置。在挂载卷之前,您必须在创建文件系统并保存更改后单独配置集群和节点。
NTFS FSIM 允许 EVMS 用户从 EVMS 界面中创建和管理 Windows® NT® 文件系统。
可以使用 mkfs 在任何 EVMS 或兼容性卷上创建 NTFS 文件系统,前提是该卷至少为 1 MB 大小且尚未具有文件系统。以下是用于创建 NTFS 文件系统的可用选项
为文件系统指定卷标。默认值为 none。
指定簇的大小,以字节为单位。有效的簇大小值是 2 的幂次方,最小为 256 字节,最大为 65536 字节。如果省略,则 mkntfs 簇大小由卷大小决定。值的确定方式如下
Volume size Default cluster 0-512 MB 512 bytes 512 MB-1 GB 1024 bytes 1 GB-2 GB 2048 bytes 2 GB+ 4096 bytes |
设置 MFT 区域乘数,该乘数决定要在卷上使用的 MFT 区域的大小。MFT 区域是卷开头为 master file table (MFT) 保留的区域,它存储磁盘上的 inodes (MFT 记录)。请注意,小文件完全存储在节点内。因此,如果您希望使用该卷存储大量非常小的文件,则将区域乘数设置为更高的值会很有用。请注意,MFT 区域会在 NTFS 驱动程序运行时根据需要动态调整大小,但选择一个好的值将减少碎片。有效值为 12.5(默认值)、25、37.5 和 50。
在卷上启用压缩。
执行快速格式化。这将跳过卷的清零和坏扇区检查。
NTFS FSIM 可以在 NTFS 文件系统上运行 ntfsfix 实用程序。
ntfsfix 修复以任何方式使用 Linux NTFS 驱动程序更改的 NTFS 分区。ntfsfix 不是 Linux 版本的 chkdsk。ntfsfix 仅尝试在 NTFS 驱动程序写入后将 NTFS 分区保持在不太一致的状态。
建议在以读写方式挂载 NTFS 卷后运行 ntfsfix,以减少当 Windows NT 或 Windows 2000 尝试重新挂载受影响的卷时发生严重数据丢失的可能性。
为了使用 ntfsfix,您必须卸载 NTFS 卷。运行 ntfsfix 后,您可以安全地重启进入 Windows NT 或 Windows 2000。请注意,ntfsfix 不是类似 fsck 的工具。ntfsfix 不能保证修复 NTFS 驱动程序引起的所有更改。
以下是用于在 NTFS 文件系统上运行 ntfsfix 的可用选项
强制 ntfsfix 写入更改,即使它检测到文件系统是脏的。默认值为 false。