Solaris Volume Manager 管理指南

第 19 章 磁盘集(任务)

本章提供有关执行磁盘集相关任务的信息。有关这些任务中所涉及概念的信息,请参见第 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 组件

检查磁盘集的状态 

使用 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 命令,针对磁盘集运行报告以确定哪些磁盘集可以导入,并将磁盘集从一个系统导入到另一个系统。

导入磁盘集

创建磁盘集

Procedure如何创建磁盘集

开始之前

请查看磁盘集使用指南

  1. 要创建磁盘集,请使用以下方法之一:

    • 从 Solaris Management Console 中增强的存储工具中,打开“磁盘集”节点。选择“操作”⇒“创建磁盘集”,然后按照向导中的说明操作。有关更多信息,请参见联机帮助。

    • 要使用命令行从头创建磁盘集,请使用以下形式的 metaset 命令:


      # metaset -s diskset-name -a -h -M hostname
      
      -s diskset-name

      指定执行 metaset 命令所针对的磁盘集的名称。

      -a

      向指定的磁盘集内添加主机。Solaris Volume Manager 支持每个磁盘集接受多达四台主机。

      -M

      指定所创建的磁盘集是多属主磁盘集。

      -h hostname

      指定一个或多个要添加到磁盘集内的主机。添加第一台主机会创建磁盘集。随后可以添加第二台主机。但是,如果磁盘集内的所有磁盘均无法在指定的 hostname 上找到,则不接受第二台主机。hostname 与在 /etc/nodename 文件中找到的名称相同。

      有关更多信息,请参见 metaset(1M) 手册页。

  2. 检查新磁盘集的状态。


    # metaset
    

示例 19–1 创建磁盘集

在以下示例中,将从主机 host1 创建一个名为 blue 的共享磁盘集。metaset 命令用来显示该磁盘集的状态。此时,磁盘集没有属主。缺省情况下,向磁盘集内添加磁盘的主机将变成属主。


# metaset -s blue -a -h host1              

# metaset

Set name = blue, Set number = 1



Host                Owner

  host1                


示例 19–2 创建多属主磁盘集

以下示例创建一个名为 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 

扩展磁盘集

Procedure如何向磁盘集内添加磁盘


注意 – 注意 –

如果希望运行具有 32 位内核的 Solaris 软件,或者希望使用版本低于 Solaris 9 4/03 发行版的 Solaris OS,请不要向磁盘集内添加大于 1 TB 的磁盘。有关 Solaris Volume Manager 中多 TB 卷支持的更多信息,请参见Solaris Volume Manager 中的多 TB 支持的概述


只有符合以下条件的磁盘才能添加到磁盘集中:

开始之前

请查看磁盘集使用指南

  1. 要向磁盘集内添加磁盘,请使用以下方法之一:

    • 从 Solaris Management Console 中增强的存储工具中,打开“磁盘集”节点。选择要修改的磁盘集。然后单击鼠标右键并选择“属性”。选择“磁盘”选项卡。单击“添加磁盘”,然后按照向导中的说明操作。有关更多信息,请参见联机帮助。

    • 要使用命令行向磁盘集内添加磁盘,请使用以下形式的 metaset 命令:


      # metaset -s diskset-name -a disk-name
      
      -s diskset-name

      指定执行 metaset 命令所针对的磁盘集的名称。

      -a

      向指定的磁盘集内添加磁盘。

      disk-name

      指定要添加到磁盘集内的磁盘。磁盘的名称采用以下格式:cxtxdx。在向磁盘集内添加磁盘时,不包括 "sx" 片标识符。

      有关更多信息,请参见 metaset(1M) 手册页。

    向磁盘集内添加磁盘的第一台主机会变成磁盘集的属主。


    注意 – 注意 –

    请不要向磁盘集内添加包含数据的磁盘。在向磁盘集内添加包含数据的磁盘的过程中,可能会对磁盘重新分区,从而销毁数据。


  2. 检验磁盘集和磁盘的状态。


    # metaset
    

示例 19–3 向磁盘集内添加磁盘


# 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

Procedure如何向磁盘集内添加另一台主机

以下过程说明如何向只有一台主机的现有磁盘集内添加另一台主机。Solaris Volume Manager 支持每个磁盘集接受多达四台的主机。

开始之前

请查看磁盘集使用指南

  1. 要向磁盘集内添加主机,请使用以下方法之一:

    • 从 Solaris Management Console 中增强的存储工具中,打开“磁盘集”节点,然后选择要修改的磁盘集。然后单击鼠标右键并选择“属性”。选择“主机”选项卡。单击“添加主机”,然后按照向导中的说明操作。有关更多信息,请参见联机帮助。

    • 要使用命令行向磁盘集内添加主机,请使用以下形式的 metaset 命令:


      # metaset -s diskset-name -a -h hostname
      
      -s diskset-name

      指定要向其中添加主机的磁盘集的名称。

      -a

      向指定的磁盘集内添加主机。

      -h hostname

      指定一个或多个要添加到磁盘集内的主机名。添加第一台主机会创建磁盘集。主机名与在 /etc/nodename 文件中找到的名称相同。

      有关更多信息,请参见 metaset(1M) 手册页。

  2. 验证该主机是否已添加到磁盘集内。


    # metaset
    

示例 19–4 向磁盘集内添加另一台主机


# 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 中。


Procedure如何在磁盘集内创建 Solaris Volume Manager 组件

在创建磁盘集之后,可以使用已添加到磁盘集内的磁盘创建卷和热备用池。可以使用 Solaris Management Console 中增强的存储工具或命令行实用程序。

    要在磁盘集内创建卷或其他 Solaris Volume Manager 组件,请使用以下方法之一:

    • 从 Solaris Management Console 中增强的存储工具中,打开“卷”、“状态数据库副本”或“热备用池”节点。选择“操作”⇒“创建”,然后按照向导中的说明操作。有关更多信息,请参见联机帮助。

    • 使用具有相同基本语法的相同命令行实用程序来创建卷、状态数据库副本或热备用池。但是,在每个命令后面都还要紧跟一个 -s disk-set


      # command -s disk-set
      

示例 19–5 在磁盘集内创建 Solaris Volume Manager 卷

以下示例说明如何在磁盘集 blue 内创建镜像 d10。该镜像由子镜像(RAID-0 卷)d11d12 组成。


# 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                

维护磁盘集

Procedure如何检查磁盘集的状态

    可使用以下方法之一检查磁盘集的状态:

    • 从 Solaris Management Console 中增强的存储工具中,打开“磁盘集”节点。在要监视的磁盘集上单击鼠标右键。然后从弹出的菜单中选择“属性”。有关更多信息,请参见联机帮助。

    • 使用以下形式的 metaset 命令查看磁盘集的状态。


      # metaset -s diskset-name
      

      有关更多信息,请参见 metaset(1M) 手册页。


      注 –

      磁盘集拥有权仅显示在所属主机上。



示例 19–6 检查指定磁盘集的状态

以下示例说明带有 -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 

如果只使用 metaset 命令,则显示所有磁盘集的状态。


Procedure如何从磁盘集内删除磁盘

  1. 要从磁盘集内删除磁盘,请使用以下方法之一:

    • 从 Solaris Management Console 中增强的存储工具中,打开“磁盘集”节点。在要释放的磁盘集上单击鼠标右键。然后从弹出的菜单中选择“属性”。单击“磁盘”选项卡。按照联机帮助中的说明操作。

    • 使用以下形式的 metaset 命令从磁盘集内删除磁盘:


      # metaset -s diskset-name -d disk-name
      
      -s diskset-name

      指定要删除磁盘的磁盘集的名称。

      -d disk-name

      指定要从磁盘集内删除的磁盘。磁盘的名称采用以下格式:cxtxdx。在从磁盘集内删除磁盘时,不包括 "sx" 片标识符。

      有关更多信息,请参见 metaset(1M) 手册页。

  2. 验证该磁盘已从磁盘集内删除。


    # metaset -s diskset-name
    

    注 –

    要删除磁盘集,必须首先删除其中的所有磁盘。



示例 19–7 从磁盘集内删除磁盘

以下示例说明如何从磁盘集 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 

 

Procedure如何提取磁盘集


注 –

此选项对于多属主磁盘集不可用。


    使用以下方法之一提取磁盘集:

    • 从 Solaris Management Console 中增强的存储工具中,打开“磁盘集”节点。在要提取的磁盘集上单击鼠标右键。然后从弹出的菜单中选择“获取拥有权”。有关更多信息,请参见联机帮助。

    • 使用以下形式的 metaset 命令:


      # metaset -s diskset-name -t -f 
      
    -s diskset-name

    指定要提取的磁盘集的名称。

    -t

    指定要提取磁盘集。

    -f

    指定要强制提取磁盘集。

    有关更多信息,请参见 metaset(1M) 手册页。

    磁盘集在一段时间内只能由一台主机拥有。当某个磁盘集内的一台主机提取该磁盘集后,该磁盘集内的其他主机就不能访问该磁盘集内磁盘上的数据。

    metaset 命令的缺省行为是:只有拥有该磁盘集的主机可以释放磁盘集时,才允许其他主机提取磁盘集。使用 -f 选项可强制提取磁盘集。无论该磁盘集当前是否为另一台主机所有,此选项都会提取该磁盘集。当磁盘集内的一台主机已关闭或者无法与之通信时,可以使用此方法。如果此时另一台主机已经提取了该磁盘集,那么,当该主机尝试针对此磁盘集执行 I/O 操作时,将会崩溃。


    注 –

    磁盘集拥有权仅显示在所属主机上。



示例 19–8 提取磁盘集

在以下示例中,主机 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 命令仅显示发出该命令的主机是否拥有该磁盘集。



示例 19–9 强制提取磁盘集

在以下示例中,正在提取该磁盘集的主机无法与另一台主机通信。-f 选项可允许在不发出警告的情况下强制提取该磁盘集内的磁盘。如果另一台主机拥有该磁盘集,那么,当该主机尝试针对此磁盘集执行 I/O 操作时,该主机将会崩溃。


# metaset -s blue -t -f

Procedure如何释放磁盘集

针对磁盘集内的物理磁盘执行维护时,释放磁盘集会非常有用。释放磁盘集后,主机便不能访问该磁盘集。如果磁盘集内有两台主机,且这两台主机同时释放某磁盘集,则这两台主机都无法直接访问在该磁盘集内定义的卷或热备用池。但是,在两台主机都释放某磁盘集时,这两台主机都可以通过磁盘的 c*t*d* 名称直接访问磁盘。


注 –

此选项对于多属主磁盘集不可用。


开始之前

请查看磁盘集使用指南

  1. 使用以下方法之一释放磁盘集:

    • 从 Solaris Management Console 中增强的存储工具中,打开“磁盘集”节点。在要释放的磁盘集上单击鼠标右键。然后从弹出的菜单中选择“释放拥有权”。有关更多信息,请参见联机帮助。

    • 要释放磁盘集的拥有权,请使用以下形式的 metaset 命令:


      # metaset -s diskset-name -r
      
      -s diskset-name

      指定执行 metaset 命令所针对磁盘集的名称。

      -r

      释放磁盘集的拥有权。将取消对磁盘集内所有磁盘的保留。磁盘集内的卷将不再可访问。

      有关更多信息,请参见 metaset(1M) 手册页。


      注 –

      磁盘集拥有权仅显示在所属主机上。


  2. 验证该磁盘集是否已在此主机上释放。


    # metaset
    

示例 19–10 释放磁盘集

以下示例说明如何释放磁盘集 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 

 

Procedure如何删除主机或磁盘集

如果要删除某个磁盘集,则该磁盘集不得包含任何磁盘,而且不得有任何其他主机连接到该磁盘集。删除最后一台主机会销毁该磁盘集。

  1. 要从磁盘集内删除主机或者删除磁盘集,请使用以下方法之一:

    • 从 Solaris Management Console 中增强的存储工具中,打开“磁盘集”节点。在要释放的磁盘集上单击鼠标右键,然后从弹出的菜单中选择“删除”。按照联机帮助中的说明操作。

    • 要删除主机,请使用以下形式的 metaset 命令:


      metaset -s diskset-name -d -h hostname
      
      -s diskset-name

      指定执行 metaset 命令所针对磁盘集的名称。

      -d

      从磁盘集内删除主机。

      -h hostname

      指定要删除的主机的名称。

      要删除磁盘集,请使用与上述 metaset 命令相同的格式。如果要删除某个磁盘集,则该磁盘集不得包含任何磁盘,而且任何其他主机都不得拥有该磁盘集。删除最后一台主机会销毁该磁盘集。

      有关更多信息,请参见 metaset(1M) 手册页。

  2. 使用 metaset 命令来验证该主机是否已从磁盘集内删除。请注意,仅显示当前的(所属)主机。其他主机已被删除。


    # metaset -s disk-set
    

示例 19–11 从磁盘集内删除主机

以下示例说明如何从磁盘集 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


示例 19–12 从磁盘集内删除最后一台主机

以下示例说明如何从磁盘集 blue 内删除最后一台主机:


host1# metaset -s blue -d -h host1

host1# metaset -s blue

 

metaset: host: setname "blue": no such set 

导入磁盘集

导入磁盘集

使用 metaimport 命令,可以将磁盘集从一个系统导入到另一个系统。

Procedure如何列显有关可导入的磁盘集的报告

  1. 成为超级用户。

  2. 获取有关要导入的磁盘集的报告。


    # metaimport -r -v
    
    -r

    提供可导入到系统上的未配置磁盘集的报告。

    -v

    提供有关以下内容的详细信息:状态数据库 (metadb) 副本的位置;可导入到系统上的未配置磁盘集的磁盘状态。


示例 19–13 报告可导入的磁盘集

以下示例说明如何列显有关可导入的磁盘集的报告。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     

Procedure如何将磁盘集从一个系统导入到另一个系统

  1. 成为超级用户。

  2. 验证磁盘集是否可以导入。


    # metaimport -r -v
    
  3. 导入可用的磁盘集。


    # metaimport -s diskset-name disk-name
    
    - s diskset-name

    指定所创建的磁盘集的名称。

    disk-name

    标识正在导入的磁盘集中包含状态数据库副本的磁盘 (c#t#d#)。

  4. 验证该磁盘集是否已导入。


    # metaset -s diskset-name
    

示例 19–14 导入磁盘集

以下示例说明如何导入磁盘集。


# 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