本章提供有关执行磁盘集相关任务的信息。有关这些任务中所涉及概念的信息,请参见第 18 章,磁盘集(概述)。
以下任务列表列出了管理 Solaris Volume Manager 磁盘集和 Solaris Volume Manager for Sun Cluster 多属主磁盘集所需的过程。除非另行说明,否则所有的命令都适用于这两种类型的磁盘集。Solaris Volume Manager GUI 不适用于与多属主磁盘集相关联的任务。
任务 |
说明 |
参考 |
---|---|---|
创建磁盘集 |
使用 Solaris Volume Manager GUI 或 metaset 命令创建磁盘集。 使用 metaset -M 命令创建多属主磁盘集。 | |
向磁盘集内添加磁盘 |
使用 Solaris Volume Manager GUI 或 metaset 命令向磁盘集内添加磁盘。 | |
向磁盘集内添加主机 |
使用 Solaris Volume Manager GUI 或 metaset 命令向磁盘集内添加主机。 | |
在磁盘集内创建 Solaris Volume Manager 卷 |
使用 Solaris Volume Manager GUI 或 metainit 命令在磁盘集内创建卷。 | |
检查磁盘集的状态 |
使用 Solaris Volume Manager GUI 或 metaset 命令检查磁盘集的状态。 | |
从磁盘集内删除磁盘 |
使用 Solaris Volume Manager GUI 或 metaset 命令从磁盘集内删除磁盘。 | |
提取磁盘集 |
使用 Solaris Volume Manager GUI 或 metaset 命令提取磁盘集。 | |
释放磁盘集 |
使用 Solaris Volume Manager GUI 或 metaset 命令释放磁盘集。 | |
从磁盘集内删除主机 |
使用 Solaris Volume Manager GUI 或 metaset 命令从磁盘集内删除主机。 | |
删除磁盘集 |
使用 Solaris Volume Manager GUI 或 metaset 命令删除磁盘集内的最后一台主机,从而删除磁盘集。 | |
导入磁盘集 |
使用 metaimport 命令,针对磁盘集运行报告以确定哪些磁盘集可以导入,并将磁盘集从一个系统导入到另一个系统。 |
请查看磁盘集使用指南。
要创建磁盘集,请使用以下方法之一:
从 Solaris Management Console 中增强的存储工具中,打开“磁盘集”节点。选择“操作”⇒“创建磁盘集”,然后按照向导中的说明操作。有关更多信息,请参见联机帮助。
要使用命令行从头创建磁盘集,请使用以下形式的 metaset 命令:
# metaset -s diskset-name -a -h -M hostname |
指定执行 metaset 命令所针对的磁盘集的名称。
向指定的磁盘集内添加主机。Solaris Volume Manager 支持每个磁盘集接受多达四台主机。
指定所创建的磁盘集是多属主磁盘集。
指定一个或多个要添加到磁盘集内的主机。添加第一台主机会创建磁盘集。随后可以添加第二台主机。但是,如果磁盘集内的所有磁盘均无法在指定的 hostname 上找到,则不接受第二台主机。hostname 与在 /etc/nodename 文件中找到的名称相同。
有关更多信息,请参见 metaset(1M) 手册页。
检查新磁盘集的状态。
# metaset |
在以下示例中,将从主机 host1 创建一个名为 blue 的共享磁盘集。metaset 命令用来显示该磁盘集的状态。此时,磁盘集没有属主。缺省情况下,向磁盘集内添加磁盘的主机将变成属主。
# metaset -s blue -a -h host1 # metaset Set name = blue, Set number = 1 Host Owner host1 |
以下示例创建一个名为 red 的多属主磁盘集。metaset 命令的第一行输出显示 "Multi-owner",这表明磁盘集是多属主磁盘集。
# metaset -s red -a -M -h nodeone # metaset -s red Multi-owner Set name = red, Set number = 1, Master = Host Owner Member nodeone Yes |
如果希望运行具有 32 位内核的 Solaris 软件,或者希望使用版本低于 Solaris 9 4/03 发行版的 Solaris OS,请不要向磁盘集内添加大于 1 TB 的磁盘。有关 Solaris Volume Manager 中多 TB 卷支持的更多信息,请参见Solaris Volume Manager 中的多 TB 支持的概述。
只有符合以下条件的磁盘才能添加到磁盘集中:
磁盘不得在卷或热备用池中使用。
磁盘中不得包含状态数据库副本。
磁盘当前不得已挂载、处于交换状态,或者处于打开状态以供某应用程序使用。
请查看磁盘集使用指南。
要向磁盘集内添加磁盘,请使用以下方法之一:
从 Solaris Management Console 中增强的存储工具中,打开“磁盘集”节点。选择要修改的磁盘集。然后单击鼠标右键并选择“属性”。选择“磁盘”选项卡。单击“添加磁盘”,然后按照向导中的说明操作。有关更多信息,请参见联机帮助。
要使用命令行向磁盘集内添加磁盘,请使用以下形式的 metaset 命令:
# metaset -s diskset-name -a disk-name |
指定执行 metaset 命令所针对的磁盘集的名称。
向指定的磁盘集内添加磁盘。
指定要添加到磁盘集内的磁盘。磁盘的名称采用以下格式:cxtxdx。在向磁盘集内添加磁盘时,不包括 "sx" 片标识符。
有关更多信息,请参见 metaset(1M) 手册页。
向磁盘集内添加磁盘的第一台主机会变成磁盘集的属主。
请不要向磁盘集内添加包含数据的磁盘。在向磁盘集内添加包含数据的磁盘的过程中,可能会对磁盘重新分区,从而销毁数据。
检验磁盘集和磁盘的状态。
# metaset |
# metaset -s blue -a c1t6d0 # metaset Set name = blue, Set number = 1 Host Owner host1 Yes Drive Dbase c1t6d0 Yes |
在此示例中,主机名是 host1。共享的磁盘集是 blue。只有磁盘 c1t6d0 添加到了磁盘集 blue 中。
或者,也可以通过在命令行上列出各个磁盘来同时添加多个磁盘。例如,可以使用以下命令同时向磁盘集内添加两个磁盘:
# metaset -s blue -a c1t6d0 c2t6d0 |
以下过程说明如何向只有一台主机的现有磁盘集内添加另一台主机。Solaris Volume Manager 支持每个磁盘集接受多达四台的主机。
请查看磁盘集使用指南。
要向磁盘集内添加主机,请使用以下方法之一:
从 Solaris Management Console 中增强的存储工具中,打开“磁盘集”节点,然后选择要修改的磁盘集。然后单击鼠标右键并选择“属性”。选择“主机”选项卡。单击“添加主机”,然后按照向导中的说明操作。有关更多信息,请参见联机帮助。
要使用命令行向磁盘集内添加主机,请使用以下形式的 metaset 命令:
# metaset -s diskset-name -a -h hostname |
指定要向其中添加主机的磁盘集的名称。
向指定的磁盘集内添加主机。
指定一个或多个要添加到磁盘集内的主机名。添加第一台主机会创建磁盘集。主机名与在 /etc/nodename 文件中找到的名称相同。
有关更多信息,请参见 metaset(1M) 手册页。
验证该主机是否已添加到磁盘集内。
# metaset |
# metaset -s blue -a -h host2 # metaset Set name = blue, Set number = 1 Host Owner host1 Yes host2 Drive Dbase c1t6d0 Yes c2t6d0 Yes |
此示例说明了如何将主机 host2 添加到磁盘集 blue 中。
在创建磁盘集之后,可以使用已添加到磁盘集内的磁盘创建卷和热备用池。可以使用 Solaris Management Console 中增强的存储工具或命令行实用程序。
要在磁盘集内创建卷或其他 Solaris Volume Manager 组件,请使用以下方法之一:
从 Solaris Management Console 中增强的存储工具中,打开“卷”、“状态数据库副本”或“热备用池”节点。选择“操作”⇒“创建”,然后按照向导中的说明操作。有关更多信息,请参见联机帮助。
使用具有相同基本语法的相同命令行实用程序来创建卷、状态数据库副本或热备用池。但是,在每个命令后面都还要紧跟一个 -s disk-set。
# command -s disk-set |
以下示例说明如何在磁盘集 blue 内创建镜像 d10。该镜像由子镜像(RAID-0 卷)d11 和 d12 组成。
# metainit -s blue d11 1 1 c1t6d0s0 blue/d11: Concat/Stripe is setup # metainit -s blue d12 1 1 c2t6d0s0 blue/d12: Concat/Stripe is setup # metainit -s blue d10 -m d11 blue/d10: Mirror is setup # metattach -s blue d10 d12 blue/d10: submirror blue/d12 is attached # metastat -s blue blue/d10: Mirror Submirror 0: blue/d11 State: Okay Submirror 1: blue/d12 State: Resyncing Resync in progress: 0 % done Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 17674902 blocks blue/d11: Submirror of blue/d10 State: Okay Size: 17674902 blocks Stripe 0: Device Start Block Dbase State Reloc Hot Spare c1t6d0s0 0 No Okay blue/d12: Submirror of blue/d10 State: Resyncing Size: 17674902 blocks Stripe 0: Device Start Block Dbase State Reloc Hot Spare c2t6d0s0 0 No Okay |
可使用以下方法之一检查磁盘集的状态:
从 Solaris Management Console 中增强的存储工具中,打开“磁盘集”节点。在要监视的磁盘集上单击鼠标右键。然后从弹出的菜单中选择“属性”。有关更多信息,请参见联机帮助。
使用以下形式的 metaset 命令查看磁盘集的状态。
# metaset -s diskset-name |
有关更多信息,请参见 metaset(1M) 手册页。
磁盘集拥有权仅显示在所属主机上。
以下示例说明带有 -s 选项的 metaset 命令,后跟磁盘集名称 blue。此命令的输出中显示该磁盘集的状态信息。此命令的输出表明 host1 是磁盘集的属主。metaset 命令还显示磁盘集内的磁盘。
red# metaset -s blue Set name = blue, Set number = 1 Host Owner host1 Yes Drive Dbase c1t6d0 Yes c2t6d0 Yes |
要从磁盘集内删除磁盘,请使用以下方法之一:
从 Solaris Management Console 中增强的存储工具中,打开“磁盘集”节点。在要释放的磁盘集上单击鼠标右键。然后从弹出的菜单中选择“属性”。单击“磁盘”选项卡。按照联机帮助中的说明操作。
使用以下形式的 metaset 命令从磁盘集内删除磁盘:
# metaset -s diskset-name -d disk-name |
指定要删除磁盘的磁盘集的名称。
指定要从磁盘集内删除的磁盘。磁盘的名称采用以下格式:cxtxdx。在从磁盘集内删除磁盘时,不包括 "sx" 片标识符。
有关更多信息,请参见 metaset(1M) 手册页。
验证该磁盘已从磁盘集内删除。
# metaset -s diskset-name |
要删除磁盘集,必须首先删除其中的所有磁盘。
以下示例说明如何从磁盘集 blue 内删除磁盘 c1t6d0:
host1# metaset -s blue -d c1t6d0 host1# metaset -s blue Set name = blue, Set number = 1 Host Owner host1 host2 Drive Dbase c2t6d0 Yes |
此选项对于多属主磁盘集不可用。
使用以下方法之一提取磁盘集:
从 Solaris Management Console 中增强的存储工具中,打开“磁盘集”节点。在要提取的磁盘集上单击鼠标右键。然后从弹出的菜单中选择“获取拥有权”。有关更多信息,请参见联机帮助。
使用以下形式的 metaset 命令:
# metaset -s diskset-name -t -f |
指定要提取的磁盘集的名称。
指定要提取磁盘集。
指定要强制提取磁盘集。
有关更多信息,请参见 metaset(1M) 手册页。
磁盘集在一段时间内只能由一台主机拥有。当某个磁盘集内的一台主机提取该磁盘集后,该磁盘集内的其他主机就不能访问该磁盘集内磁盘上的数据。
metaset 命令的缺省行为是:只有拥有该磁盘集的主机可以释放磁盘集时,才允许其他主机提取磁盘集。使用 -f 选项可强制提取磁盘集。无论该磁盘集当前是否为另一台主机所有,此选项都会提取该磁盘集。当磁盘集内的一台主机已关闭或者无法与之通信时,可以使用此方法。如果此时另一台主机已经提取了该磁盘集,那么,当该主机尝试针对此磁盘集执行 I/O 操作时,将会崩溃。
磁盘集拥有权仅显示在所属主机上。
在以下示例中,主机 host1 与主机 host2 通信。此通信可确保在主机 host1 尝试提取该磁盘集之前,主机 host2 已释放该磁盘集。
host1# metaset ... Set name = blue, Set number = 1 Host Owner host1 host2 ... host1# metaset -s blue -t host2# metaset ... Set name = blue, Set number = 1 Host Owner host1 Yes host2 ... |
如果 host2 拥有磁盘集 blue,则上面的输出中 "Owner" 列仍将保持空白。metaset 命令仅显示发出该命令的主机是否拥有该磁盘集。
在以下示例中,正在提取该磁盘集的主机无法与另一台主机通信。-f 选项可允许在不发出警告的情况下强制提取该磁盘集内的磁盘。如果另一台主机拥有该磁盘集,那么,当该主机尝试针对此磁盘集执行 I/O 操作时,该主机将会崩溃。
# metaset -s blue -t -f |
针对磁盘集内的物理磁盘执行维护时,释放磁盘集会非常有用。释放磁盘集后,主机便不能访问该磁盘集。如果磁盘集内有两台主机,且这两台主机同时释放某磁盘集,则这两台主机都无法直接访问在该磁盘集内定义的卷或热备用池。但是,在两台主机都释放某磁盘集时,这两台主机都可以通过磁盘的 c*t*d* 名称直接访问磁盘。
此选项对于多属主磁盘集不可用。
请查看磁盘集使用指南。
使用以下方法之一释放磁盘集:
从 Solaris Management Console 中增强的存储工具中,打开“磁盘集”节点。在要释放的磁盘集上单击鼠标右键。然后从弹出的菜单中选择“释放拥有权”。有关更多信息,请参见联机帮助。
要释放磁盘集的拥有权,请使用以下形式的 metaset 命令:
# metaset -s diskset-name -r |
指定执行 metaset 命令所针对磁盘集的名称。
释放磁盘集的拥有权。将取消对磁盘集内所有磁盘的保留。磁盘集内的卷将不再可访问。
有关更多信息,请参见 metaset(1M) 手册页。
磁盘集拥有权仅显示在所属主机上。
验证该磁盘集是否已在此主机上释放。
# metaset |
以下示例说明如何释放磁盘集 blue。请注意,该磁盘集没有属主。从主机 host1 查看状态可能会引起误导。主机只能确定它是否拥有磁盘集。例如,如果主机 host2 将要获取该磁盘集的拥有权,那么,该拥有权将不会出现在主机 host1 上。只有主机 host2 才将显示 host2 对该磁盘集具有拥有权。
host1# metaset -s blue -r host1# metaset -s blue Set name = blue, Set number = 1 Host Owner host1 host2 Drive Dbase c1t6d0 Yes c2t6d0 Yes |
如果要删除某个磁盘集,则该磁盘集不得包含任何磁盘,而且不得有任何其他主机连接到该磁盘集。删除最后一台主机会销毁该磁盘集。
要从磁盘集内删除主机或者删除磁盘集,请使用以下方法之一:
从 Solaris Management Console 中增强的存储工具中,打开“磁盘集”节点。在要释放的磁盘集上单击鼠标右键,然后从弹出的菜单中选择“删除”。按照联机帮助中的说明操作。
要删除主机,请使用以下形式的 metaset 命令:
metaset -s diskset-name -d -h hostname |
指定执行 metaset 命令所针对磁盘集的名称。
从磁盘集内删除主机。
指定要删除的主机的名称。
要删除磁盘集,请使用与上述 metaset 命令相同的格式。如果要删除某个磁盘集,则该磁盘集不得包含任何磁盘,而且任何其他主机都不得拥有该磁盘集。删除最后一台主机会销毁该磁盘集。
有关更多信息,请参见 metaset(1M) 手册页。
使用 metaset 命令来验证该主机是否已从磁盘集内删除。请注意,仅显示当前的(所属)主机。其他主机已被删除。
# metaset -s disk-set |
以下示例说明如何从磁盘集 blue 内删除主机 host2:
# metaset -s blue Set name = blue, Set number = 1 Host Owner host1 Yes ..host2 Drive Dbase c1t2d0 Yes c1t3d0 Yes c1t4d0 Yes c1t5d0 Yes c1t6d0 Yes c2t1d0 Yes |
# metaset -s blue -d -h host2 |
# metaset -s blue Set name = blue, Set number = 1 Host Owner host1 Yes Drive Dbase c1t2d0 Yes c1t3d0 Yes c1t4d0 Yes c1t5d0 Yes c1t6d0 Yes c2t1d0 Yes |
以下示例说明如何从磁盘集 blue 内删除最后一台主机:
host1# metaset -s blue -d -h host1 host1# metaset -s blue metaset: host: setname "blue": no such set |
导入磁盘集
使用 metaimport 命令,可以将磁盘集从一个系统导入到另一个系统。
成为超级用户。
获取有关要导入的磁盘集的报告。
# metaimport -r -v |
提供可导入到系统上的未配置磁盘集的报告。
提供有关以下内容的详细信息:状态数据库 (metadb) 副本的位置;可导入到系统上的未配置磁盘集的磁盘状态。
以下示例说明如何列显有关可导入的磁盘集的报告。metaimport 命令的输出区分常规磁盘集和复制的磁盘集。
# metaimport -r # metaimport -r Drives in regular diskset including disk c1t2d0: c1t2d0 c1t3d0 More info: metaimport -r -v c1t2d0 Import: metaimport -s <newsetname> c1t2d0 Drives in replicated diskset including disk c1t4d0: c1t4d0 c1t5d0 More info: metaimport -r -v c1t4d0 Import: metaimport -s <newsetname> c1t4d0 # metaimport -r -v c1t2d0 Import: metaimport -s <newsetname> c1t2d0 Last update: Mon Dec 29 14:13:35 2003 Device offset length replica flags c1t2d0 16 8192 a u c1t3d0 16 8192 a u |
成为超级用户。
验证磁盘集是否可以导入。
# metaimport -r -v |
导入可用的磁盘集。
# metaimport -s diskset-name disk-name |
指定所创建的磁盘集的名称。
标识正在导入的磁盘集中包含状态数据库副本的磁盘 (c#t#d#)。
验证该磁盘集是否已导入。
# metaset -s diskset-name |
以下示例说明如何导入磁盘集。
# metaimport -s red c1t2d0 Drives in diskset including disk c1t2d0: c1t2d0 c1t3d0 c1t8d0 More info: metaimport -r -v c1t2d0 # metaset -s red Set name = red, Set number = 1 Host Owner host1 Yes Drive Dbase c1t2d0 Yes c1t3d0 Yes c1t8d0 Yes |