Solaris Volume Manager 管理指南

第 20 章 维护 Solaris Volume Manager(任务)

本章提供有关使用 Solaris Volume Manager 执行常规存储管理维护任务的信息。

以下是本章中信息的列表:

Solaris Volume Manager 维护(任务列表)

以下任务列表列出了维护 Solaris Volume Manager 所需的过程。

任务 

说明 

参考 

查看 Solaris Volume Manager 配置 

使用 Solaris Volume Manager GUI 或 metastat 命令查看系统配置。

如何查看 Solaris Volume Manager 卷配置

重命名卷 

使用 Solaris Volume Manager GUI 或 metarename 命令重命名卷。

如何重命名卷

创建配置文件 

使用 metastat -p 命令和 metadb 命令创建配置文件。

如何创建配置文件

根据配置文件初始化 Solaris Volume Manager 

使用 metainit 命令根据配置文件初始化 Solaris Volume Manager。

如何从配置文件中初始化 Solaris Volume Manager

扩展文件系统 

使用 growfs 命令扩展文件系统。

如何扩展文件系统

启用组件 

使用 Solaris Volume Manager GUI 或 metareplace 命令启用组件。

启用组件

替换组件 

使用 Solaris Volume Manager GUI 或 metareplace 命令替换组件。

使用其他可用组件来替换组件

查看 Solaris Volume Manager 配置


提示 –

metastat 命令不对输出进行排序。将 metastat -p 命令的输出通过管道传递给 sortgrep 命令,以获得更便于管理的配置列表。


Procedure如何查看 Solaris Volume Manager 卷配置

    要查看卷配置,请使用以下方法之一:

    • 从 Solaris Management Console 中增强的存储工具中,打开“卷”节点。有关更多信息,请参见联机帮助。

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


      # metastat -p -i component-name
      
      -p

      指定以简洁摘要的形式显示输出。此输出适合在创建 md.tab 文件时使用。

      -i

      指定验证是否可以访问 RAID-1(镜像)卷、RAID-5 卷和热备件。

      component-name

      指定要查看的卷的名称。如果未指定卷名称,则将显示完整的组件列表。


示例 20–1 查看 Solaris Volume Manager 卷配置

以下示例显示 metastat 命令的输出。


# metastat

d50: RAID

    State: Okay         

    Interlace: 32 blocks

    Size: 20985804 blocks

Original device:

    Size: 20987680 blocks

        Device              Start Block  Dbase State        Reloc  Hot Spare

        c1t4d0s5                 330     No    Okay         Yes    

        c1t5d0s5                 330     No    Okay         Yes    

        c2t4d0s5                 330     No    Okay         Yes    

        c2t5d0s5                 330     No    Okay         Yes    

        c1t1d0s5                 330     No    Okay         Yes    

        c2t1d0s5                 330     No    Okay         Yes    



d1: Concat/Stripe

    Size: 4197879 blocks

    Stripe 0:

        Device              Start Block  Dbase  Reloc

        c1t2d0s3                   0     No     Yes



d2: Concat/Stripe

    Size: 4197879 blocks

    Stripe 0:

        Device              Start Block  Dbase  Reloc

        c2t2d0s3                   0     No     Yes





d80: Soft Partition

    Device: d70

    State: Okay

    Size: 2097152 blocks

        Extent              Start Block              Block count

             0                        1                  2097152



d81: Soft Partition

    Device: d70

    State: Okay

    Size: 2097152 blocks

        Extent              Start Block              Block count

             0                  2097154                  2097152



d70: Mirror

    Submirror 0: d71

      State: Okay         

    Submirror 1: d72

      State: Okay         

    Pass: 1

    Read option: roundrobin (default)

    Write option: parallel (default)

    Size: 12593637 blocks



d71: Submirror of d70

    State: Okay         

    Size: 12593637 blocks

    Stripe 0:

        Device              Start Block  Dbase State        Reloc  Hot Spare

        c1t3d0s3                   0     No    Okay         Yes    

    Stripe 1:

        Device              Start Block  Dbase State        Reloc  Hot Spare

        c1t3d0s4                   0     No    Okay         Yes    

    Stripe 2:

        Device              Start Block  Dbase State        Reloc  Hot Spare

        c1t3d0s5                   0     No    Okay         Yes    





d72: Submirror of d70

    State: Okay         

    Size: 12593637 blocks

    Stripe 0:

        Device              Start Block  Dbase State        Reloc  Hot Spare

        c2t3d0s3                   0     No    Okay         Yes    

    Stripe 1:

        Device              Start Block  Dbase State        Reloc  Hot Spare

        c2t3d0s4                   0     No    Okay         Yes    

    Stripe 2:

        Device              Start Block  Dbase State        Reloc  Hot Spare

        c2t3d0s5                   0     No    Okay         Yes    



hsp010: is empty



hsp014: 2 hot spares

        Device              Status      Length          Reloc

        c1t2d0s1            Available    617652 blocks  Yes

        c2t2d0s1            Available    617652 blocks  Yes



hsp050: 2 hot spares

        Device              Status      Length          Reloc

        c1t2d0s5            Available    4197879 blocks Yes

        c2t2d0s5            Available    4197879 blocks Yes



hsp070: 2 hot spares

        Device              Status      Length          Reloc

        c1t2d0s4            Available    4197879 blocks Yes

        c2t2d0s4            Available    4197879 blocks Yes



Device Relocation Information:

Device              Reloc       Device ID

c1t2d0              Yes         id1,sd@SSEAGATE_ST39204LCSUN9.0G3BV0N1S200002103AF29

c2t2d0              Yes         id1,sd@SSEAGATE_ST39204LCSUN9.0G3BV0P64Z00002105Q6J7

c1t1d0              Yes         id1,sd@SSEAGATE_ST39204LCSUN9.0G3BV0N1EM00002104NP2J

c2t1d0              Yes         id1,sd@SSEAGATE_ST39204LCSUN9.0G3BV0N93J000071040L3S

c0t0d0              Yes         id1,dad@s53554e575f4154415f5f53543339313430412525415933

 


示例 20–2 查看多 TB Solaris Volume Manager 卷

以下示例显示对多 TB 存储卷(11 TB)使用 metastat 命令的输出。


# metastat d0

 d0: Concat/Stripe

    Size: 25074708480 blocks (11 TB)

    Stripe 0: (interlace: 32 blocks)

        Device      Start Block  Dbase  Reloc

        c27t8d3s0          0     No     Yes

        c4t7d0s0       12288     No     Yes

    Stripe 1: (interlace: 32 blocks)

        Device      Start Block  Dbase  Reloc

        c13t2d1s0      16384     No     Yes

        c13t4d1s0      16384     No     Yes

        c13t6d1s0      16384     No     Yes

        c13t8d1s0      16384     No     Yes

        c16t3d0s0      16384     No     Yes

        c16t5d0s0      16384     No     Yes

        c16t7d0s0      16384     No     Yes

        c20t4d1s0      16384     No     Yes

        c20t6d1s0      16384     No     Yes

        c20t8d1s0      16384     No     Yes

        c9t1d0s0       16384     No     Yes

        c9t3d0s0       16384     No     Yes

        c9t5d0s0       16384     No     Yes

        c9t7d0s0       16384     No     Yes

    Stripe 2: (interlace: 32 blocks)

        Device      Start Block  Dbase  Reloc

        c27t8d2s0      16384     No     Yes

        c4t7d1s0       16384     No     Yes

    Stripe 3: (interlace: 32 blocks)

        Device      Start Block  Dbase  Reloc

        c10t7d0s0      32768     No     Yes

        c11t5d0s0      32768     No     Yes

        c12t2d1s0      32768     No     Yes

        c14t1d0s0      32768     No     Yes

        c15t8d1s0      32768     No     Yes

        c17t3d0s0      32768     No     Yes

        c18t6d1s0      32768     No     Yes

        c19t4d1s0      32768     No     Yes

        c1t5d0s0       32768     No     Yes

        c2t6d1s0       32768     No     Yes

        c3t4d1s0       32768     No     Yes

        c5t2d1s0       32768     No     Yes

        c6t1d0s0       32768     No     Yes

        c8t3d0s0       32768     No     Yes

其他参考信息

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

重命名卷

重命名卷的背景信息

使用 Solaris Volume Manager,可以遵从某些约束随时重命名大多数类型的卷。可以使用 Solaris Management Console 中增强的存储工具或命令行(metarename(1M) 命令)来重命名卷。

重命名卷或交换卷名的目的是为了便于管理卷名。例如,希望将所有文件系统挂载点安排为您希望的数字范围。您可能要重命名卷,以维护逻辑卷的命名方案,或允许事务卷使用与基础卷相同的名称。


注 –

事务卷在 Solaris Volume Manager 中不再有效。可以重命名事务卷,以将其替换。


重命名卷之前,请确保卷当前未被使用。对于文件系统,请确保文件系统未被挂载或用作 swap。使用原始设备的其他应用程序(如数据库)应该自备停止数据访问的方法。

重命名卷的特定注意事项包括以下几点:

交换卷名称

使用包含 - x 选项的 metarename 命令交换具有父子关系的卷的名称。有关更多信息,请参见如何重命名卷metarename(1M) 手册页。现有卷的名称可以与其某个子组件的名称进行交换。例如,这种类型的交换可能出现在镜像与其某个子镜像之间。metarename -x 命令可以更加方便地镜像或取消镜像现有卷。


注 –

必须使用命令行来交换卷名称。此功能当前在 Solaris Volume Manager GUI 中不可用。但是,可以使用命令行或 GUI 来重命名卷。


需要重命名卷时,请考虑以下原则。

Procedure如何重命名卷

开始之前

检查卷名称要求(卷名称重命名卷的背景信息)。

  1. 取消挂载使用卷的文件系统。


    # umount /filesystem
    
  2. 要重命名卷,请使用以下方法之一:

    • 从 Solaris Management Console 中增强的存储工具中,打开“卷”节点。选择要重命名的卷。在对应的图标上单击鼠标右键。选择“属性”选项。然后,按照屏幕上的说明操作。有关更多信息,请参见联机帮助。

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


      # metarename old-volume-name new-volume-name
      
      old-volume-name

      指定现有卷的名称。

      new-volume-name

      为现有卷指定新名称。

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

  3. 编辑 /etc/vfstab 文件,以引用新的卷名称(如有必要)。

  4. 重新挂载文件系统。


    # mount /filesystem
    

示例 20–3 重命名用于文件系统的卷

在以下示例中,卷 d10 被重命名为 d100


# umount /home

# metarename d10 d100

d10: has been renamed to d100

(编辑 /etc/vfstab 文件以使该文件系统引用新卷)

# mount /home

由于 d10 包含已挂载的文件系统,因此重命名卷之前,必须取消挂载该文件系统。如果该卷用于在 /etc/vfstab 文件中具有项的文件系统,则必须对该项进行更改,以引用新的卷名。

例如,如果 /etc/vfstab 文件包含文件系统的以下项:


/dev/md/dsk/d10 /dev/md/rdsk/d10 /docs home 2 yes -

请更改该项,使其显示为:


/dev/md/dsk/d100 /dev/md/rdsk/d100 /docs home 2 yes -

然后,重新挂载文件系统。

如果具有现有镜像或事务卷,则可以使用 metarename -x 命令来删除镜像或事务卷,并将数据保留在基础卷上。对于事务卷,只要主设备为卷(RAID-0、RAID-1 或 RAID-5 卷),就可以将数据保留在该卷上。


使用配置文件

Solaris Volume Manager 配置文件包含基本的 Solaris Volume Manager 信息,以及重新构造配置所必需的大多数数据。以下过程说明了如何使用这些文件。

Procedure如何创建配置文件

    为 Solaris Volume Manager 环境定义所有相应参数后,请使用 metastat - p 命令创建 /etc/lvm/md.tab 文件。


    # metastat -p > /etc/lvm/md.tab
    

    此文件包含 metainit 命令和 metahs 命令使用的所有参数。如果需要设置多个类似环境或在出现系统故障后需要重新创建配置,请使用此文件。

    有关 md.tab 文件的更多信息,请参见md.tab 文件概述md.tab(4) 手册页。

Procedure如何从配置文件中初始化 Solaris Volume Manager


注意 – 注意 –

请在以下情况下使用此过程:


有时,系统会丢失状态数据库中维护的信息。例如,如果在删除了所有的状态数据库副本后重新引导系统,就可能会丢失状态数据库中维护的信息。只要在丢失状态数据库后未创建卷,就可以使用 md.cfmd.tab 文件来恢复 Solaris Volume Manager 配置。


注 –

md.cf 文件不维护有关活动热备件的信息。因此,如果在丢失 Solaris Volume Manager 配置时热备件正在使用中,则使用活动热备件的这些卷就可能被损坏。


有关这些文件的更多信息,请参见 md.cf(4)md.tab(4) 手册页。

  1. 创建状态数据库副本。

    有关更多信息,请参见创建状态数据库副本

  2. 创建或更新 /etc/lvm/md.tab 文件。

    • 如果试图恢复已知的最新 Solaris Volume Manager 配置,请将 md.cf 文件复制到 /etc/lvm/md.tab 文件中。

    • 如果您要根据已保留的 md.tab 文件副本创建新的 Solaris Volume Manager 配置,请将已保留的文件复制到 /etc/lvm/md.tab 文件中。

  3. 编辑“新” /etc/lvm/md.tab 文件并执行以下操作:

    • 如果您要创建新的配置或要在系统崩溃后恢复配置,请将镜像配置为单向镜像。例如:


      d80 -m d81 1
      
      d81 1 1 c1t6d0s3
      

      如果镜像的子镜像大小不同,请确保使用此单向镜像的最小子镜像。否则,可能会丢失数据。

    • 如果您要恢复现有配置且停止 Solaris Volume Manager 时没有报告任何问题,请将镜像配置保留为多向镜像。例如:


      d70 -m d71 d72 1
      
      d71 1 1 c1t6d0s2
      
      d72 1 1 c1t5d0s0
      
    • 使用 -k 选项指定 RAID-5 卷,以防止重新初始化设备。例如:


      d45 -r c1t3d0s5 c1t3d0s3 c1t3d0s4 -k -i 32b

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

  4. 使用以下一种形式的 metainit 命令检查 /etc/lvm/md.tab 文件项的语法,而不提交更改:


    # metainit -n md.tab-entry
    

    # metainit -n -a
    

    -n 选项一起运行时,metainit 命令不会维护可能已创建的设备的虚拟状态,因此,如果所创建的卷依赖于其他不存在的卷,则使用 -n 选项运行该命令时将报告错误,即使该命令在不使用 -n 选项时能够成功执行也是如此。

    -n

    指定不实际创建设备。使用此选项验证结果是否和预期的一样。

    md.tab-entry

    指定要初始化的组件的名称。

    -a

    指定检查所有组件。

  5. 如果前面的步骤中未出现问题,请根据 md.tab 文件重新创建卷和热备用池。


    # metainit -a
    
    -a

    指定激活 /etc/lvm/md.tab 文件中的项。

  6. 根据需要,使用 metattach 命令将单向镜像变成多向镜像。


    # mettach mirror submirror
    
  7. 验证卷上的数据,以确认已正确重新构造配置。


    # metastat
    

更改 Solaris Volume Manager 缺省值

在 Solaris 10 发行版中,Solaris Volume Manager 得到了增强,支持动态配置卷。无需再编辑 /kernel/drv/md.conf 文件中的 nmdmd_nsets 参数,便可根据需要动态创建新卷。

最大的 Solaris Volume Manager 配置值仍保持不变:

使用 growfs 命令扩展文件系统

扩展包含 UFS 文件系统的卷(意味着增加了更多空间)后,还需要扩展文件系统,以便识别扩展空间。必须使用 growfs 命令手动扩展文件系统。growfs 命令可扩展文件系统,即使已挂载的文件系统也可使用该命令进行扩展。但是,在 growfs 命令运行时不能对文件系统进行写入访问。

使用原始设备的应用程序(如数据库)必须自备用于合并扩展空间的方法。Solaris Volume Manager 不提供此功能。

growfs 命令可在扩展文件系统时对已挂载的文件系统进行“写锁定”。通过分阶段扩展文件系统,可以缩短对文件系统进行写锁定的时间长度。例如,要将 1 GB 文件系统扩展到 2 GB,则可以使用 -s 选项分阶段扩展文件系统的大小,每阶段增加 16 MB。此选项指定每个步级的新文件系统的总大小。

扩展期间,由于写锁定功能,不能对文件系统进行写入访问。系统将透明地暂停写入访问,并在 growfs 命令解除文件系统锁定时重新启动写入访问。读取访问不会受到影响。但是,在锁定生效期间不会保留访问时间。

扩展片和卷的背景信息


注 –

可以扩展 Solaris Volume Manager 卷。但是,不能缩小卷。


Procedure如何扩展文件系统

开始之前

请查看创建 Solaris Volume Manager 组件的先决条件

  1. 查看与文件系统关联的磁盘空间。


    # df -hk
    

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

  2. 扩展逻辑卷上的 UFS 文件系统。


    # growfs -M /mount-point /dev/md/rdsk/volume-name
    
    -M /mount-point

    为要扩展的文件系统指定挂载点。

    /dev/md/rdsk/volume-name

    指定要扩展的卷名称。

    有关更多信息,请参见以下示例和 growfs(1M) 手册页。


示例 20–4 扩展文件系统

在以下示例中,新的片已添加到卷 d10 中,该卷包含已挂载的文件系统 /home2growfs 命令使用 -M 选项将挂载点指定为 /home2,该挂载点将被扩展到原始卷 /dev/md/rdsk/d10 中。growfs 命令完成后,文件系统将跨越整个卷。扩展文件系统前后,可以使用 df -hk 命令来验证磁盘总容量。


# df -hk

Filesystem            kbytes    used   avail capacity  Mounted on

...

/dev/md/dsk/d10        69047   65426       0   100%    /home2

...

# growfs -M /home2 /dev/md/rdsk/d10

/dev/md/rdsk/d10:       295200 sectors in 240 cylinders of 15 tracks, 82 sectors

        144.1MB in 15 cyl groups (16 c/g, 9.61MB/g, 4608 i/g)

super-block backups (for fsck -F ufs -o b=#) at:

 32, 19808, 39584, 59360, 79136, 98912, 118688, 138464, 158240, 178016, 197792,

 217568, 237344, 257120, 276896,

# df -hk

Filesystem            kbytes    used   avail capacity  Mounted on

...

/dev/md/dsk/d10       138703   65426   59407    53%    /home2

...

对于镜像卷,请始终对顶层卷运行 growfs 命令。请不要对子镜像或主设备运行该命令,即使已向子镜像或主设备添加空间也不要对其运行该命令。


在 RAID-1 和 RAID-5 卷中替换和启用组件的概述

Solaris Volume Manager 可以替换启用 RAID-1(镜像)和 RAID-5 卷中的组件。

在 Solaris Volume Manager 术语中,替换组件是一种用系统中的可用组件替换子镜像或 RAID-5 卷中的选定组件的方式。可以将此过程视为逻辑替换,以区别于物理方式替换组件。有关更多信息,请参见使用其他可用组件来替换组件

启用组件就是“激活”或替换组件本身(也就是说,组件名称是相同的)。有关更多信息,请参见启用组件


注 –

因磁盘错误而进行恢复时,请浏览 /var/adm/messages,以了解出现了哪种错误。如果错误是暂时的,且磁盘本身没有问题,请尝试启用出故障的组件。也可以使用 format 命令来测试磁盘。


启用组件

存在以下任何一种情况时,都可以启用组件:


注 –

请始终检查将要替换的磁盘上的状态数据库副本和热备件。替换磁盘之前,应删除处于错误状态的任何状态数据库副本。随后,在启用组件后,请重新创建同样大小的状态数据库副本。应采取同样的方式处理热备件。


使用其他可用组件来替换组件

使用可用但在系统中未使用的其他组件替换或交换现有组件时,可以使用 metareplace 命令。

存在以下任何一种情况时,都可以使用此命令:

Maintenance(维护)和 Last Erred(最近出错)状态

当 RAID-1 或 RAID-5 卷中的组件遇到错误时,Solaris Volume Manager 会使组件处于“Maintenance(维护)”状态。不会对处于“Maintenance(维护)”状态的组件进一步执行任何读取或写入操作。

有时,组件会进入“Last Erred(最近出错)”状态。对于 RAID-1 卷,通常单向镜像会出现这种情况。卷将遇到错误。但是,没有可供读取的冗余组件。对于 RAID-5 卷,某个组件进入“Maintenance(维护)”状态且另一个组件出现故障后,会出现这种情况。第二个出现故障的组件将进入“Last Erred(最近出错)”状态。

当 RAID-1 卷或 RAID-5 卷中的组件处于“Last Erred(最近出错)”状态时,仍然会尝试对标记为“Last Erred(最近出错)”的组件执行 I/O。由于对 Solaris Volume Manager 而言,“Last Erred(最近出错)”组件包含最后一个完好的数据副本,因此会发生此 I/O 尝试。当组件处于“Last Erred(最近出错)”状态时,卷的行为与标准设备(磁盘)相同,卷将向应用程序返回 I/O 错误。通常,此时会丢失某些数据。

根据卷的类型,处理同一个卷中其他组件上的后续错误的方式会有所不同。

RAID-1 卷

RAID-1 卷可以允许许多组件处于“Maintenance(维护)”状态,且仍然可以读取和写入。如果组件处于“Maintenance(维护)”状态,则不会丢失任何数据。可以按照任意顺序安全地替换或启用组件。如果组件处于“Last Erred(最近出错)”状态,必须先替换处于“Maintenance(维护)”状态的组件,然后才能替换该组件。替换或启用处于“Last Erred(最近出错)”状态的组件通常意味着某些数据已丢失。修复镜像上的数据后,请确保对其进行验证。

RAID-5 卷

RAID-5 卷可允许单个组件处于“Maintenance(维护)”状态。可以安全地替换处于“Maintenance(维护)”的单个组件,而不会丢失数据。如果其他组件上出现错误,则该组件将进入“Last Erred(最近出错)”状态。此时,RAID-5 卷是只读设备。您需要执行某种类型的错误恢复,以使 RAID-5 卷的状态稳定,并降低数据丢失的可能性。如果 RAID-5 卷达到“Last Erred(最近出错)”状态,则很有可能已丢失数据。修复 RAID-5 卷上的数据后,请确保对其进行验证。

请始终先替换处于“Maintenance(维护)”状态的组件,然后再替换处于“Last Erred(最近出错)”状态的组件。替换和重新同步组件后,请使用 metastat 命令来验证其状态。然后,验证数据。

在 RAID-1 和 RAID-5 卷中替换和启用组件的背景信息

在 RAID-1 卷或 RAID-5 卷中替换组件时,请遵循以下原则: