Sun Cluster 系统管理指南(适用于 Solaris OS)

第 12 章 备份和恢复群集

本章包括以下几节:

备份群集

表 12–1 任务表:备份群集文件

任务 

指导 

查找要备份的文件系统的名称 

如何查找要备份的文件系统名称

计算存放一份完整备份需要多少磁带 

如何确定进行完整备份所需的磁带数目

备份根文件系统 

如何备份根 (/) 文件系统

为镜像的文件系统或网状文件系统执行联机备份 

如何为镜像执行联机备份 (Solaris Volume Manager)

 

如何为卷执行联机备份 (Veritas Volume Manager(Veritas 卷管理器))

备份群集配置 

如何备份群集配置

备份存储磁盘的磁盘分区配置 

参见存储磁盘的相关文档 

Procedure如何查找要备份的文件系统名称

使用此过程可确定您想要备份的文件系统的名称。

  1. 显示 /etc/vfstab 文件的内容。

    运行此命令不需要成为超级用户或等效角色。


    # more /etc/vfstab
    
  2. 在挂载点列中查找要备份的文件系统的名称。

    备份文件系统时,使用此名称。


    # more /etc/vfstab 
    

示例 12–1 查找要备份的文件系统的名称

以下示例显示了列在 /etc/vfstab 文件中的可用文件系统的名称。


# more /etc/vfstab
#device             device             mount  FS fsck  mount  mount
#to mount           to fsck            point  type     pass   at boot  options
#
#/dev/dsk/c1d0s2    /dev/rdsk/c1d0s2   /usr     ufs     1      yes      -
 f                  -                  /dev/fd  fd      -      no       -
 /proc              -                  /proc    proc    -      no       -
 /dev/dsk/c1t6d0s1  -                  -        swap    -      no       -
 /dev/dsk/c1t6d0s0  /dev/rdsk/c1t6d0s0 /        ufs     1      no       -
 /dev/dsk/c1t6d0s3  /dev/rdsk/c1t6d0s3 /cache   ufs     2      yes      -
 swap               -                  /tmp     tmpfs   -      yes      -

Procedure如何确定进行完整备份所需的磁带数目

使用此过程可计算备份文件系统所需的磁带数量。

  1. 在要备份的群集节点上,成为超级用户或使用等效角色。

  2. 按字节估算备份的大小。


    # ufsdump S filesystem 
    
    S

    显示执行该备份估计需要的字节数。

    filesystem

    指定您要备份的文件系统的名称。

  3. 用磁带容量去除估算大小,看需要多少磁带。


示例 12–2 确定所需要的磁带数

在以下示例中,大小为 905,881,620 字节的文件系统用一盒 4 GB 的磁带 (905,881,620 ÷ 4,000,000,000) 就足够了。


# ufsdump S /global/phys-schost-1
905881620

Procedure如何备份根 (/) 文件系统

使用此过程可以备份群集节点的根 (/) 文件系统。执行此备份过程之前,请确保群集正在无故障运行。

phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。

此过程提供了 Sun Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。有关命令及其简短格式的列表,请参见附录 B

  1. 在要备份的群集节点上,成为超级用户或使用一个可提供 solaris.cluster.modify RBAC 授权的角色。

  2. 将每一个正在运行的数据服务从将要备份的节点切换到群集的另一个节点。


    # clnode evacuate node
    
    node

    指定从中切换资源组和设备组的节点。

  3. 关闭该节点。


    # shutdown -g0 -y -i0
    
  4. 将节点重新引导到非群集模式。

    • 在基于 SPARC 的系统上,运行以下命令。


      ok boot -xs
      
    • 在基于 x86 的系统上,运行以下命令。


      phys-schost# shutdown -g -y -i0
      
      Press any key to continue
    1. 在 GRUB 菜单中,使用方向键选择适当的 Solaris 条目,然后键入 e 编辑其命令。

      GRUB 菜单显示如下内容:


      GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
      +-------------------------------------------------------------------------+
      | Solaris 10 /sol_10_x86                                                  |
      | Solaris failsafe                                                        |
      |                                                                         |
      +-------------------------------------------------------------------------+
      Use the ^ and v keys to select which entry is highlighted.
      Press enter to boot the selected OS, 'e' to edit the
      commands before booting, or 'c' for a command-line.

      有关基于 GRUB 的引导的更多信息,请参见《系统管理指南:基本管理》中的“使用 GRUB 引导基于 x86 的系统(任务图)”

    2. 在引导参数屏幕中,使用方向键选择内核条目,然后键入 e 编辑该条目。

      GRUB 引导参数屏幕的显示与以下内容类似:


      GNU GRUB version 0.95 (615K lower / 2095552K upper memory)
      +----------------------------------------------------------------------+
      | root (hd0,0,a)                                                       |
      | kernel /platform/i86pc/multiboot                                     |
      | module /platform/i86pc/boot_archive                                  |
      +----------------------------------------------------------------------+
      Use the ^ and v keys to select which entry is highlighted.
      Press 'b' to boot, 'e' to edit the selected command in the
      boot sequence, 'c' for a command-line, 'o' to open a new line
      after ('O' for before) the selected line, 'd' to remove the
      selected line, or escape to go back to the main menu.
    3. 在命令中添加 -x 以指定将系统引导至非群集模式。


      [ Minimal BASH-like line editing is supported. For the first word, TAB
      lists possible command completions. Anywhere else TAB lists the possible
      completions of a device/filename. ESC at any time exits. ]
      
      grub edit> kernel /platform/i86pc/multiboot -x
    4. 按 Enter 键接受所做更改,并返回到引导参数屏幕。

      屏幕将显示编辑后的命令。


      GNU GRUB version 0.95 (615K lower / 2095552K upper memory)
      +----------------------------------------------------------------------+
      | root (hd0,0,a)                                                       |
      | kernel /platform/i86pc/multiboot -x                                  |
      | module /platform/i86pc/boot_archive                                  |
      +----------------------------------------------------------------------+
      Use the ^ and v keys to select which entry is highlighted.
      Press 'b' to boot, 'e' to edit the selected command in the
      boot sequence, 'c' for a command-line, 'o' to open a new line
      after ('O' for before) the selected line, 'd' to remove the
      selected line, or escape to go back to the main menu.-
    5. 键入 b 将节点引导至非群集模式。


      注 –

      对内核引导参数命令所做的这一更改在系统引导后将失效。下次重新引导节点时,系统将引导至群集模式。如果希望引导至非群集模式,请重新执行上述步骤,并将 -x 选项添加到内核引导参数命令中。


  5. 通过创建 UFS 快照来备份根 (/) 文件系统。

    1. 确保文件系统有足够的磁盘空间可用于后备存储文件。


      # df -k
      
    2. 确保名称和位置相同的后备存储文件尚不存在。


      # ls /backing-store-file
      
    3. 创建 UFS 快照。


      # fssnap -F ufs -o bs=/backing-store-file /file-system
      
    4. 检验是否已创建快照。


      # /usr/lib/fs/ufs/fssnap -i /file-system
      
  6. 将节点重新引导到群集模式。


    # init 6
    

示例 12–3 备份根 (/) 文件系统

在以下示例中,根 (/) 文件系统的快照保存至 /usr 目录下的 /scratch/usr.back.file 中。`


# fssnap -F ufs -o bs=/scratch/usr.back.file /usr
  /dev/fssnap/1

Procedure如何为镜像执行联机备份 (Solaris Volume Manager)

对于镜像的 Solstice DiskSuite 元设备或 Solaris Volume Manager 卷,无需将其卸载或将整个镜像脱机就可以对其进行备份。您必须暂时使其中一个子镜像脱机(因而失去镜像),但备份完成后可立即使之联机并重新同步,这样就不必停止系统,也不用拒绝用户访问数据。通过使用镜像来执行联机备份,可创建活动文件系统的“快照”备份。

如果在某个程序将数据写入卷后又立即运行了 lockfs 命令,则可能会出现问题。要避免此故障,请暂时停止在此节点上运行的所有服务。另外,在执行此备份过程之前,请确保群集正在无故障运行。

phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。

此过程提供了 Sun Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。有关命令及其简短格式的列表,请参见附录 B

  1. 在要备份的群集节点上,成为超级用户或使用等效角色。

  2. 使用 metaset(1M) 命令确定哪个节点对备份的卷拥有所有权。


    # metaset -s setname
    
    -ssetname

    指定磁盘集名称。

  3. lockfs(1M) 命令与 -w 选项配合使用可禁止对文件系统执行写入操作。


    # lockfs -w mountpoint 
    

    注 –

    仅当镜像上还有 UFS 文件系统时才必须锁定此文件系统。例如,如果 Solstice DiskSuite 元设备或 Solaris Volume Manager 卷设置为数据库管理软件或其他某个特定应用程序的原始设备,则无需使用 lockfs 命令。但是,您可能要运行适当的、与供应商相关的实用程序来刷新任意缓冲区并锁定访问。


  4. 使用 metastat(1M) 命令来确定子镜像的名称。


    # metastat -s setname -p
    
    -p

    以类似于 md.tab 文件的格式显示状态。

  5. 使用 metadetach(1M) 命令使一个子镜像与镜像脱离。


    # metadetach -s setname mirror submirror
    

    注 –

    将继续从其他子镜像进行读取。但是,对镜像进行第一次写操作后,脱机子镜像将立即不再同步。脱机子镜像重新联机后,这种不一致现象就会得到纠正。您无需运行 fsck 命令。


  6. 通过结合使用 lockfs 命令和 -u 选项,解除对文件系统的锁定,允许写入操作继续执行。


    # lockfs -u mountpoint 
    
  7. 执行文件系统检查。


    # fsck /dev/md/diskset/rdsk/submirror
    
  8. 将脱机子镜像备份到磁带或另一介质上。

    使用 ufsdump(1M) 命令或通常使用的备份实用程序。


    # ufsdump 0ucf dump-device submirror
    

    注 –

    对子镜像使用原始设备 (/rdsk) 名称,而不使用块设备 (/dsk) 名称。


  9. 使用 metattach(1M) 命令将元设备或卷重新置于联机状态。


    # metattach -s setname mirror submirror
    

    当元设备或卷处于联机状态后,将会自动与镜像重新同步。

  10. 使用 metastat 命令可检验该子镜像是否正在重新同步。


    # metastat -s setname mirror
    

示例 12–4 为镜像执行联机备份 (Solaris Volume Manager)

在下面的示例中,群集节点 phys-schost-1 是元集 schost-1 的属主,因此备份过程是从 phys-schost-1 执行的。镜像 /dev/md/schost-1/dsk/d0 由子镜像 d10d20d30 组成。


[Determine the owner of the metaset:]
# metaset -s schost-1
Set name = schost-1, Set number = 1
Host                Owner
  phys-schost-1     Yes 
...
[Lock the file system from writes:] 
# lockfs -w /global/schost-1
[List the submirrors:]
# metastat -s schost-1 -p
schost-1/d0 -m schost-1/d10 schost-1/d20 schost-1/d30 1
schost-1/d10 1 1 d4s0
schost-1/d20 1 1 d6s0
schost-1/d30 1 1 d8s0
[Take a submirror offline:]
# metadetach -s schost-1 d0 d30
[Unlock the file system:]
# lockfs -u /
[Check the file system:]
# fsck /dev/md/schost-1/rdsk/d30
[Copy the submirror to the backup device:]
# ufsdump 0ucf /dev/rmt/0 /dev/md/schost-1/rdsk/d30
  DUMP: Writing 63 Kilobyte records
  DUMP: Date of this level 0 dump: Tue Apr 25 16:15:51 2000
  DUMP: Date of last level 0 dump: the epoch
  DUMP: Dumping /dev/md/schost-1/rdsk/d30 to /dev/rdsk/c1t9d0s0.
  ...
  DUMP: DUMP IS DONE
[Bring the submirror back online:]
# metattach -s schost-1 d0 d30
schost-1/d0: submirror schost-1/d30 is attached
[Resynchronize the submirror:]
# metastat -s schost-1 d0
schost-1/d0: Mirror
    Submirror 0: schost-0/d10
      State: Okay         
    Submirror 1: schost-0/d20
      State: Okay
    Submirror 2: schost-0/d30
      State: Resyncing
    Resync in progress: 42% done
    Pass: 1
    Read option: roundrobin (default)
...

Procedure如何为卷执行联机备份 (Veritas Volume Manager(Veritas 卷管理器))

Veritas Volume Manager(Veritas 卷管理器) 将镜像卷标识为丛。无需卸载丛或使整个卷脱机就可备份丛。这是通过创建卷的快照副本并备份此临时卷来完成的,您无需停止系统或拒绝用户访问数据。

执行此备份过程之前,请确保群集正在无故障运行。

phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。

此过程提供了 Sun Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。有关命令及其简短格式的列表,请参见附录 B

  1. 登录到群集的任意节点,成为该群集上磁盘组的当前主节点的超级用户,或使用一个可提供 solaris.cluster.admin RBAC 授权的角色。

  2. 列出磁盘组信息。


    # vxprint -g diskgroup
    
  3. 确定哪个节点当前已导入该磁盘组,这个节点就是该磁盘组的主节点。


    # cldevicegroup status
    
  4. 创建卷的快照。


    # vxassist -g diskgroup snapstart volume
    

    注 –

    创建快照可能需要较长时间,具体情况取决于卷大小。


  5. 检验是否已创建新卷。


    # vxprint -g diskgroup
    

    当快照完成后,所选磁盘组的 State 字段会显示 Snapdone 状态。

  6. 停止正在访问文件系统的任何数据服务。


    # clresourcegroup offline resource-group
    

    注 –

    停止所有数据服务,以确保正确备份数据文件系统。如果没有运行任何数据服务,则无需执行步骤 6步骤 8


  7. 创建一个名为 bkup-vol 的备份卷,然后将快照卷附加到此卷。


    # vxassist -g diskgroup snapshot volume bkup-vol
    
  8. 使用 clresourcegroup 命令重新启动在步骤 6 中停止的所有数据服务。


    # clresourcegroup online - zone -n node resourcegroup
    
    node

    节点名称。

    zone

    可控制资源组的全局群集非投票节点 (node) 的名称。只有在创建资源组时指定了非投票节点的情况下,才能指定 zone

  9. 检验该卷目前是否已附加到新卷 bkup-vol


    # vxprint -g diskgroup
    
  10. 注册对设备组配置所做的更改。


    # cldevicegroup sync diskgroup
    
  11. 检查备份卷。


    # fsck -y /dev/vx/rdsk/diskgroup/bkup-vol
    
  12. 执行一次备份,以便将卷 bkup-vol 复制到磁带或另一介质上。

    使用 ufsdump(1M) 命令或通常使用的备份实用程序。


    # ufsdump 0ucf dump-device /dev/vx/dsk/diskgroup/bkup-vol
    
  13. 删除临时卷。


    # vxedit -rf rm bkup-vol
    
  14. 注册对磁盘组配置所做的更改。


    # cldevicegroup sync diskgroup
    

示例 12–5 为卷执行联机备份 (Veritas Volume Manager(Veritas 卷管理器))

在以下示例中,群集节点 phys-schost-2 是设备组 schost-1 的主属主。因此,备份过程从 phys-schost-2 执行的。将复制卷 /vo101,然后将其与新卷 bkup-vol 关联。


[Become superuser or assume a role that provides solaris.cluster.admin RBAC authorization on 
the primary node.]
[Identify the current primary node for the device group:]
# cldevicegroup status
-- Device Group Servers --
                         Device Group     Primary           Secondary
                         ------------     -------           ---------
 Device group servers:   rmt/1            -                 -
 Device group servers:   schost-1         phys-schost-2     phys-schost-1

-- Device Group Status --
                             Device Group        Status              
                             ------------        ------              
 Device group status:        rmt/1               Offline
 Device group status:        schost-1            Online
[List the device group information:]
# vxprint -g schost-1
TY NAME            ASSOC     KSTATE   LENGTH   PLOFFS STATE   TUTIL0  PUTIL0
dg schost-1       schost-1   -        -        -      -        -      -
  
dm schost-101     c1t1d0s2   -        17678493 -      -        -      -
dm schost-102     c1t2d0s2   -        17678493 -      -        -      -
dm schost-103     c2t1d0s2   -        8378640  -      -        -      -
dm schost-104     c2t2d0s2   -        17678493 -      -        -      -
dm schost-105     c1t3d0s2   -        17678493 -      -        -      -
dm schost-106     c2t3d0s2   -        17678493 -      -        -      -
 
v  vol01          gen        ENABLED  204800   -      ACTIVE   -      -
pl vol01-01       vol01      ENABLED  208331   -      ACTIVE   -      -
sd schost-101-01  vol01-01   ENABLED  104139   0      -        -      -
sd schost-102-01  vol01-01   ENABLED  104139   0      -        -      -
pl vol01-02       vol01      ENABLED  208331   -      ACTIVE   -      -
sd schost-103-01  vol01-02   ENABLED  103680   0      -        -      -
sd schost-104-01  vol01-02   ENABLED  104139   0      -        -      -
pl vol01-03       vol01      ENABLED  LOGONLY  -      ACTIVE   -      -
sd schost-103-02  vol01-03   ENABLED  5        LOG    -        -      -
[Start the snapshot operation:]
# vxassist -g schost-1 snapstart vol01
[Verify the new volume was created:]
# vxprint -g schost-1
TY NAME            ASSOC    KSTATE    LENGTH   PLOFFS STATE   TUTIL0  PUTIL0
dg schost-1       schost-1   -        -        -      -        -      -
  
dm schost-101     c1t1d0s2   -        17678493 -      -        -      -
dm schost-102     c1t2d0s2   -        17678493 -      -        -      -
dm schost-103     c2t1d0s2   -        8378640  -      -        -      -
dm schost-104     c2t2d0s2   -        17678493 -      -        -      -
dm schost-105     c1t3d0s2   -        17678493 -      -        -      -
dm schost-106     c2t3d0s2   -        17678493 -      -        -      -
  
v  vol01          gen        ENABLED  204800   -      ACTIVE   -      -
pl vol01-01       vol01      ENABLED  208331   -      ACTIVE   -      -
sd schost-101-01  vol01-01   ENABLED  104139   0      -        -      -
sd schost-102-01  vol01-01   ENABLED  104139   0      -        -      -
pl vol01-02       vol01      ENABLED  208331   -      ACTIVE   -      -
sd schost-103-01  vol01-02   ENABLED  103680   0      -        -      -
sd schost-104-01  vol01-02   ENABLED  104139   0      -        -      -
pl vol01-03       vol01      ENABLED  LOGONLY  -      ACTIVE   -      -
sd schost-103-02  vol01-03   ENABLED  5        LOG    -        -      -
pl vol01-04       vol01      ENABLED  208331   -      SNAPDONE -      -
sd schost-105-01  vol01-04   ENABLED  104139   0      -        -      -
sd schost-106-01  vol01-04   ENABLED  104139   0      -        -      -
[Stop data services, if necessary:]
# clresourcegroup offline nfs-rg
[Create a copy of the volume:]
# vxassist -g schost-1 snapshot vol01 bkup-vol
[Restart data services, if necessary:]
# clresourcegroup online -n phys-schost-1 nfs-rg
[Verify bkup-vol was created:]
# vxprint -g schost-1
TY NAME           ASSOC       KSTATE   LENGTH   PLOFFS STATE   TUTIL0  PUTIL0
dg schost-1       schost-1    -        -        -      -        -      -
 
dm schost-101     c1t1d0s2    -        17678493 -      -        -      -
...
 
v  bkup-vol       gen         ENABLED  204800   -      ACTIVE   -      -
pl bkup-vol-01    bkup-vol    ENABLED  208331   -      ACTIVE   -      -
sd schost-105-01  bkup-vol-01 ENABLED  104139   0      -        -      -
sd schost-106-01  bkup-vol-01 ENABLED  104139   0      -        -      -
 
v  vol01          gen         ENABLED  204800   -      ACTIVE   -      -
pl vol01-01       vol01       ENABLED  208331   -      ACTIVE   -      -
sd schost-101-01  vol01-01    ENABLED  104139   0      -        -      -
sd schost-102-01  vol01-01    ENABLED  104139   0      -        -      -
pl vol01-02       vol01       ENABLED  208331   -      ACTIVE   -      -
sd schost-103-01  vol01-02    ENABLED  103680   0      -        -      -
sd schost-104-01  vol01-02    ENABLED  104139   0      -        -      -
pl vol01-03       vol01       ENABLED  LOGONLY  -      ACTIVE   -      -
sd schost-103-02  vol01-03    ENABLED  5        LOG    -        -      -
[Synchronize the disk group with cluster framework:]
# cldevicegroup sync schost-1
[Check the file systems:]
# fsck -y /dev/vx/rdsk/schost-1/bkup-vol
[Copy bkup-vol to the backup device:]
# ufsdump 0ucf /dev/rmt/0 /dev/vx/rdsk/schost-1/bkup-vol
  DUMP: Writing 63 Kilobyte records
  DUMP: Date of this level 0 dump: Tue Apr 25 16:15:51 2000
  DUMP: Date of last level 0 dump: the epoch
  DUMP: Dumping /dev/vx/dsk/schost-2/bkup-vol to /dev/rmt/0.
  ...
  DUMP: DUMP IS DONE
[Remove the bkup-volume:]
# vxedit -rf rm bkup-vol
[Synchronize the disk group:]
# cldevicegroup sync schost-1

Procedure如何备份群集配置

为确保群集配置已归档并可轻松恢复,请定期对群集配置加以备份。Sun Cluster 3.2 可将群集配置导出到一个可扩展标记语言(eXtensible Markup Language, XML) 文件。

  1. 登录到群集的任意节点,成为超级用户或使用一个可提供 solaris.cluster.read RBAC 授权的角色。

  2. 将群集配置信息导出到一个文件中。


    # /usr/cluster/bin/cluster export -o configfile
    
    configfile

    群集命令正在将群集配置信息导出到的 XML 配置文件的名称。有关 XML 配置文件的信息,请参见 clconfiguration(5CL)

  3. 检验群集配置信息是否已成功导出至 XML 文件。


    # vi configfile
    

恢复群集文件

ufsrestore(1M) 命令将文件从使用 ufsdump(1M) 命令创建的备份复制到磁盘上相对于当前工作目录的位置。您可以使用 ufsrestore 从 0 级转储和随后的增量转储重新装入整个文件系统分层结构,或从任何转储磁带恢复一个或多个单个的文件。如果以超级用户身份或使用一个等效角色运行 ufsrestore,则恢复文件的同时还会恢复其原属主、上次修改时间及模式(许可)。

在开始恢复文件或文件系统前,您需要了解以下信息。

表 12–2 任务表:恢复群集文件

任务 

指导 

对于 Solaris Volume Manager,以交互方式恢复文件  

如何以交互方式恢复单个文件 (Solaris Volume Manager)

对于 Solaris Volume Manager,恢复根 (/) 文件系统

如何恢复根 (/) 文件系统 (Solaris Volume Manager)

  

如何恢复位于 Solstice DiskSuite 元设备或 Solaris Volume Manager 卷上的根 (/) 文件系统

对于 Veritas Volume Manager(Veritas 卷管理器),恢复根 (/) 文件系统

如何恢复未封装的根 (/) 文件系统 (Veritas Volume Manager(Veritas 卷管理器))

对于 Veritas Volume Manager(Veritas 卷管理器),恢复已封装的根 (/) 文件系统

如何恢复已封装的根 (/) 文件系统 (Veritas Volume Manager(Veritas 卷管理器))

Procedure如何以交互方式恢复单个文件 (Solaris Volume Manager)

使用此过程可恢复一个或多个单个的文件。执行恢复过程之前,请确保群集正在无故障运行。

  1. 在要恢复的群集节点上,成为超级用户或使用一个可提供 solaris.cluster.admin RBAC 授权的角色。

  2. 停止正在使用待恢复文件的数据服务。


    # clresourcegroup offline resource-group
    
  3. 恢复文件。


    # ufsrestore
    

Procedure如何恢复根 (/) 文件系统 (Solaris Volume Manager)

使用此过程可将根 (/) 文件系统恢复到新磁盘(例如,在更换损坏的根磁盘之后)。不应引导正在恢复的节点。执行恢复过程之前,请确保群集正在无故障运行。


注 –

由于新磁盘的分区格式必须与故障磁盘的分区格式相同,所以在开始此过程之前,请先确定分区方案,然后再相应地重新创建文件系统。


phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。

此过程提供了 Sun Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。有关命令及其简短格式的列表,请参见附录 B

  1. 在对附加了待恢复节点的磁盘集具有访问权限的群集节点上,成为超级用户或担任可 solaris.cluster.modify RBAC 授权的角色。

    使用要恢复的节点以外的其他节点。

  2. 将要恢复的节点的主机名从所有元集中删除。

    从元集中除正要删除的节点以外的一个节点上运行此命令。由于要恢复的节点处于脱机状态,因此系统会显示 RPC: Rpcbind failure - RPC: Timed out 错误。忽略此错误并继续执行下一步。


    # metaset -s setname -f -d -h nodelist
    
    -ssetname

    指定磁盘集名称。

    -f

    从磁盘集中删除最后一个主机。

    -d

    从磁盘集删除。

    -h nodelist

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

  3. 恢复根 (/) 和 /usr 文件系统。

    要恢复根和 /usr 文件系统,请执行《系统管理指南:设备和文件系统》中的第 27  章 “恢复文件和文件系统(任务)”中所介绍的过程。忽略 Solaris OS 过程中的步骤,重新引导该系统。


    注 –

    请确保创建 /global/.devices/node@nodeid 文件系统。


  4. 在多用户模式下重新引导节点。


    # reboot
    
  5. 替换设备 ID。


    # cldevice repair rootdisk
    
  6. 使用 metadb(1M) 命令可重新创建状态数据库副本。


    # metadb -c copies -af raw-disk-device
    
    -ccopies

    指定要创建的复本数。

    -fraw-disk-device

    要在其上创建复本的原始磁盘设备。

    -a

    添加复本。

  7. 从一个群集节点(非恢复的节点)上将恢复后的节点添加到所有磁盘集。


    phys-schost-2# metaset -s setname -a -h nodelist
    
    -a

    创建主机并将其添加到磁盘集中。

    已将节点重新引导到群集模式下。群集已经就绪。


示例 12–6 恢复根 (/) 文件系统 (Solaris Volume Manager)

下面的示例展示了将根 (/) 文件系统从磁带设备 /dev/rmt/0 恢复到节点 phys-schost-1 的过程。从群集中的另一节点 phys-schost-2 运行 metaset 命令,以便从磁盘集 schost-1 中删除节点 phys-schost-1,然后再将其重新添加到该磁盘集中。所有其他命令都是从 phys-schost-1 运行的。系统在 /dev/rdsk/c0t0d0s0 上创建了一个新的引导块,在 /dev/rdsk/c0t0d0s4 上重新创建了三个状态数据库副本。


[Become superuser or assume a  role that provides solaris.cluster.modify RBAC authorization on a cluster node other than the node to be restored
.]
[Remove the node from the metaset:]
phys-schost-2# metaset -s schost-1 -f -d -h phys-schost-1
[Replace the failed disk and boot the node:]
Restore the root (/) and /usr file system using the procedure in the Solaris system administration documentation
 [Reboot:]
# reboot
[Replace the disk ID:]
# cldevice repair /dev/dsk/c0t0d0
[Re-create state database replicas:]
# metadb -c 3 -af /dev/rdsk/c0t0d0s4
[Add the node back to the metaset:]
phys-schost-2# metaset -s schost-1 -a -h phys-schost-1

Procedure如何恢复位于 Solstice DiskSuite 元设备或 Solaris Volume Manager 卷上的根 (/) 文件系统

使用此过程可恢复在执行备份时位于 Solstice DiskSuite 元设备或 Solaris Volume Manager 卷上的根 (/) 文件系统。比如在根磁盘损坏后更换新磁盘时,就可以执行此过程。不应引导正在恢复的节点。执行恢复过程之前,请确保群集正在无故障运行。


注 –

由于新磁盘的分区格式必须与故障磁盘的分区格式相同,所以在开始此过程之前,请先确定分区方案,然后再相应地重新创建文件系统。


phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。

此过程提供了 Sun Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。有关命令及其简短格式的列表,请参见附录 B

  1. 在对磁盘集具有访问权限的节点(要恢复的节点除外)上,成为超级用户或使用一个提供 solaris.cluster.modifiy RBAC 授权的角色。

    使用要恢复的节点以外的其他节点。

  2. 将要恢复的节点的主机名从所有磁盘集中删除。


    # metaset -s setname -f -d -h nodelist
    
    -ssetname

    指定元集名称。

    -f

    从磁盘集中删除最后一个主机。

    -d

    从元集中删除。

    -h nodelist

    指定要从元集中删除的节点的名称。

    -m mediator_host_list

    指定要添加或从磁盘集中删除的中介主机的名称。

  3. 替换要恢复其根 (/) 文件系统的那个节点上的故障磁盘。

    请参阅服务器所附带的文档,以了解磁盘替换过程。

  4. 引导正在恢复的节点。

    • 如果使用 Solaris OS CD,请注意以下内容:

      • SPARC:键入以下内容:


        ok boot cdrom -s
        
      • x86:将 CD 放入系统的 CD 驱动器,并通过关机随后将系统关闭再打开来引导系统。在 "Current Boot Parameters" 屏幕上,键入 bi


                             <<< Current Boot Parameters >>>
        Boot path: /pci@0,0/pci8086,2545@3/pci8086,1460@1d/pci8086,341a@
        7,1/sd@0,0:a
        Boot args:
        
        Type b [file-name] [boot-flags] <ENTER> to boot with options
        or   i <ENTER>                          to enter boot interpreter
        or   <ENTER>                            to boot with defaults
        
                         <<< timeout in 5 seconds >>>
        Select (b)oot or (i)nterpreter: b -s
        
    • 如果使用的是 Solaris JumpStartTM 服务器,请注意以下事项:

      • SPARC:键入以下内容:


        ok boot net -s
        
      • x86:将 CD 放入系统的 CD 驱动器,并通过关机随后将系统关闭再打开来引导系统。在 "Current Boot Parameters" 屏幕上,键入 bi


                             <<< Current Boot Parameters >>>
        Boot path: /pci@0,0/pci8086,2545@3/pci8086,1460@1d/pci8086,341a@
        7,1/sd@0,0:a
        Boot args:
        
        Type b [file-name] [boot-flags] <ENTER> to boot with options
        or   i <ENTER>                          to enter boot interpreter
        or   <ENTER>                            to boot with defaults
        
                         <<< timeout in 5 seconds >>>
        Select (b)oot or (i)nterpreter: b -s
        
  5. 使用 format 命令在根磁盘上创建所有分区和交换空间。

    重建故障磁盘上的原分区方案。

  6. 使用 newfs 命令创建根 (/) 文件系统和其他文件系统(根据需要)。

    重建故障磁盘上的原文件系统。


    注 –

    请确保创建 /global/.devices/node@nodeid 文件系统。


  7. 在临时挂载点上挂载根 (/) 文件系统。


    # mount device temp-mountpoint
    
  8. 使用以下命令来恢复根 (/) 文件系统。


    # cd temp-mountpoint
    # ufsrestore rvf dump-device
    # rm restoresymtable
    
  9. 在新磁盘上安装新的根块。


    # /usr/sbin/installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk 
    raw-disk-device
    
  10. 删除 /temp-mountpoint/etc/system 文件中有关 MDD 根信息的那些行。


    * Begin MDD root info (do not edit)
    forceload: misc/md_trans
    forceload: misc/md_raid
    forceload: misc/md_mirror
    forceload: misc/md_hotspares
    forceload: misc/md_stripe
    forceload: drv/pcipsy
    forceload: drv/glm
    forceload: drv/sd
    rootdev:/pseudo/md@0:0,10,blk
    * End MDD root info (do not edit)
  11. 编辑 /temp-mountpoint/etc/vfstab 文件,将 Solstice DiskSuite 元设备或 Solaris Volume Manager 卷的根条目更改为作为元设备或卷的一部分的根磁盘上各文件系统的相应正常片。


    Example: 
    Change from—
    /dev/md/dsk/d10   /dev/md/rdsk/d10    /      ufs   1     no       -
    
    Change to—
    /dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0  /      ufs   1     no       -
  12. 卸载临时文件系统并检查原始磁盘设备。


    # cd /
    # umount temp-mountpoint
    # fsck raw-disk-device
    
  13. 将要恢复的节点从磁盘集中介主机列表中删除。


    # metaset -s setname -f -d -m hostname
    
  14. 在多用户模式下重新引导节点。


    # reboot
    
  15. 替换设备 ID。


    # cldevice repair rootdisk
    
  16. 使用 metadb 命令可重新创建状态数据库副本。


    # metadb -c copies -af raw-disk-device
    
    -ccopies

    指定要创建的复本数。

    -af raw-disk-device

    在指定的原始磁盘设备上创建初始状态数据库复本。

  17. 从一个群集节点(非恢复的节点)上将恢复后的节点添加到所有磁盘集。


    phys-schost-2# metaset -s setname -a -h nodelist
    
    -a

    添加(创建)元集。

    根据 Solstice DiskSuite 文档,为根 (/) 设置元设备或卷/镜像。

    已将节点重新引导到群集模式下。群集已经就绪。


示例 12–7 恢复 Solstice DiskSuite 元设备或 Solaris Volume Manager 卷上的根 (/) 文件系统

下面的示例展示了将根 (/) 文件系统从磁带设备 /dev/rmt/0 恢复到节点 phys-schost-1 的过程。从群集中的另一节点 phys-schost-2 运行 metaset 命令,以删除节点 phys-schost-1,稍后再将它重新添加到元集 schost-1 中。所有其他命令都是从 phys-schost-1 运行的。系统在 /dev/rdsk/c0t0d0s0 上创建了一个新的引导块,在 /dev/rdsk/c0t0d0s4 上重新创建了三个状态数据库副本。


[Become superuser or assume a role that provides solaris.cluster.modify RBAC authorization on a cluster node with access to the metaset, other than the node to be restored.]
[Remove the node from the metaset:]
phys-schost-2# metaset -s schost-1 -f -d -h phys-schost-1
[Replace the failed disk and boot the node:]

从 Solaris OS CD 引导节点:


[Use format and newfs to recreate partitions and file systems
.]
[Mount the root file system on a temporary mount point:]
# mount /dev/dsk/c0t0d0s0 /a
[Restore the root file system:]
# cd /a
# ufsrestore rvf /dev/rmt/0
# rm restoresymtable
[Install a new boot block:]
# /usr/sbin/installboot /usr/platform/`uname \
-i`/lib/fs/ufs/bootblk /dev/rdsk/c0t0d0s0

[Remove the lines in / temp-mountpoint/etc/system file for MDD root information:
]
* Begin MDD root info (do not edit)
forceload: misc/md_trans
forceload: misc/md_raid
forceload: misc/md_mirror
forceload: misc/md_hotspares
forceload: misc/md_stripe
forceload: drv/pcipsy
forceload: drv/glm
forceload: drv/sd
rootdev:/pseudo/md@0:0,10,blk
* End MDD root info (do not edit)
[Edit the /temp-mountpoint/etc/vfstab file]
Example: 
Change from—
/dev/md/dsk/d10   /dev/md/rdsk/d10    /      ufs   1     no       -

Change to—
/dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0  /usr   ufs   1     no       -
[Unmount the temporary file system and check the raw disk device:]
# cd /
# umount /a
# fsck /dev/rdsk/c0t0d0s0
[Reboot:]
# reboot
[Replace the disk ID:]
# cldevice repair /dev/rdsk/c0t0d0
[Re-create state database replicas:]
# metadb -c 3 -af /dev/rdsk/c0t0d0s4
[Add the node back to the metaset:]
phys-schost-2# metaset -s schost-1 -a -h phys-schost-1

Procedure如何恢复未封装的根 (/) 文件系统 (Veritas Volume Manager(Veritas 卷管理器))

使用此过程可将未封装的根 (/) 文件系统恢复到某个节点。不应引导正在恢复的节点。执行恢复过程之前,请确保群集正在无故障运行。


注 –

由于新磁盘的分区格式必须与故障磁盘的分区格式相同,所以在开始此过程之前,请先确定分区方案,然后再相应地重新创建文件系统。


phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。

此过程提供了 Sun Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。有关命令及其简短格式的列表,请参见附录 B

  1. 替换要恢复的根文件系统所在的节点的故障磁盘。

    请参阅服务器所附带的文档,以了解磁盘替换过程。

  2. 引导正在恢复的节点。

    • 如果使用的是 Solaris OS CD,请在 OpenBoot PROM ok 提示符下键入以下命令:


      ok boot cdrom -s
      
    • 如果使用的是 Solaris JumpStart 服务器,请在 OpenBoot PROM ok 提示符下键入以下命令:


      ok boot net -s
      
  3. 使用 format 命令在根磁盘上创建所有分区和交换空间。

    重建故障磁盘上的原分区方案。

  4. 使用 newfs 命令,创建根 (/) 文件系统和相应的其他文件系统。

    重建故障磁盘上的原文件系统。


    注 –

    请确保创建 /global/.devices/node@nodeid 文件系统。


  5. 在临时挂载点上挂载根 (/) 文件系统。


    # mount device temp-mountpoint
    
  6. 从备份中恢复根 (/) 文件系统,然后卸载并检查该文件系统。


    # cd temp-mountpoint
    # ufsrestore rvf dump-device
    # rm restoresymtable
    # cd /
    # umount temp-mountpoint
    # fsck raw-disk-device
    

    此时文件系统已恢复。

  7. 在新磁盘上安装新的根块。


    # /usr/sbin/installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk raw-disk-device
    
  8. 在多用户模式下重新引导节点。


    # reboot
    
  9. 更新设备 ID。


    # cldevice repair /dev/rdsk/disk-device
    
  10. 按 Control-d 以恢复多用户模式。

    节点重新引导到群集模式下。群集已经就绪。


示例 12–8 恢复未封装的根 (/) 文件系统 (Veritas Volume Manager(Veritas 卷管理器))

以下示例说明了将未封装的根 (/) 文件系统从磁带设备 /dev/rmt/0 恢复到节点 phys-schost-1 的过程。


[Replace the failed disk and boot the node:]

从 Solaris OS CD 引导节点。在 OpenBoot PROM ok 提示符下键入以下命令:


ok boot cdrom -s
...
[Use format and newfs to create partitions and file systems]
[Mount the root file system on a temporary mount point:]
# mount /dev/dsk/c0t0d0s0 /a
[Restore the root file system:]
# cd /a
# ufsrestore rvf /dev/rmt/0
# rm restoresymtable
# cd /
# umount /a
# fsck /dev/rdsk/c0t0d0s0
[Install a new boot block:]
# /usr/sbin/installboot /usr/platform/`uname \
-i`/lib/fs/ufs/bootblk /dev/rdsk/c0t0d0s0

[Reboot:]
# reboot
[Update the disk ID:]
# cldevice repair /dev/rdsk/c0t0d0

Procedure如何恢复已封装的根 (/) 文件系统 (Veritas Volume Manager(Veritas 卷管理器))

使用此过程可将封装的根 (/) 文件系统恢复到某个节点。不应引导正在恢复的节点。执行恢复过程之前,请确保群集正在无故障运行。


注 –

由于新磁盘的分区格式必须与故障磁盘的分区格式相同,所以在开始此过程之前,请先确定分区方案,然后再相应地重新创建文件系统。


phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。

此过程提供了 Sun Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。有关命令及其简短格式的列表,请参见附录 B

  1. 替换要恢复的根文件系统所在的节点的故障磁盘。

    请参阅服务器所附带的文档,以了解磁盘替换过程。

  2. 引导正在恢复的节点。

    • 如果使用的是 Solaris OS CD,请在 OpenBoot PROM ok 提示符下键入以下命令:


      ok boot cdrom -s
      
    • 如果使用的是 Solaris JumpStart 服务器,请在 OpenBoot PROM ok 提示符下键入以下命令:


      ok boot net -s
      
  3. 使用 format 命令在根磁盘上创建所有分区和交换空间。

    重建故障磁盘上的原分区方案。

  4. 使用 newfs 命令创建根 (/) 文件系统和相应的其他文件系统。

    重建故障磁盘上的原文件系统。


    注 –

    请确保创建 /global/.devices/ node@nodeid 文件系统。


  5. 在临时挂载点上挂载根 (/) 文件系统。


    # mount device temp-mountpoint
    
  6. 从备份中恢复根 (/) 文件系统。


    # cd temp-mountpoint
    # ufsrestore rvf dump-device
    # rm restoresymtable
    
  7. 创建一个空的 install-db 文件。

    此文件会在下次重新引导节点时将其置于 VxVM 安装模式。


    # touch \
    /temp-mountpoint/etc/vx/reconfig.d/state.d/install-db
    
  8. / temp-mountpoint /etc/system 文件中删除以下条目。


    * rootdev:/pseudo/vxio@0:0
    * set vxio:vol_rootdev_is_volume=1
  9. 编辑 / temp-mountpoint /etc/vfstab 文件,用根磁盘的标准磁盘设备(例如 /dev/dsk/c0t0d0s0)替换所有的 VxVM 挂载点。


    Example: 
    Change from—
    /dev/vx/dsk/rootdg/rootvol /dev/vx/rdsk/rootdg/rootvol /      ufs   1     no -
    
    Change to—
    /dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0  / ufs   1     no       -
  10. 卸载临时文件系统并检查该文件系统。


    # cd /
    # umount temp-mountpoint
    # fsck raw-disk-device
    
  11. 在新磁盘上安装引导块。


    # /usr/sbin/installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk raw-disk-device
    
  12. 在多用户模式下重新引导节点。


    # reboot
    
  13. 使用 scdidadm(1M) 更新设备 ID。


    # cldevice repair /dev/rdsk/c0t0d0
    
  14. 运行 clvxvm 封装命令以封装磁盘并重新引导。

  15. 如果与其他系统间存在从设备号冲突,请卸载全局设备并为磁盘组重编从设备号。

    • 卸载群集节点上的全局设备文件系统。


      # umount /global/.devices/node@nodeid
      
    • 为群集节点上的 rootdg 磁盘组重编从设备号。


      # vxdg reminor rootdg 100
      
  16. 关闭并以群集模式重新引导节点。


    # shutdown -g0 -i6 -y
    

示例 12–9 恢复已封装的根 (/) 文件系统 (Veritas Volume Manager(Veritas 卷管理器))

下面的示例说明了将封装的根 (/) 文件系统从磁带设备 /dev/rmt/0 恢复到节点 phys-schost-1 的过程。


[Replace the failed disk and boot the node:]

从 Solaris OS CD 引导节点。在 OpenBoot PROM ok 提示符下键入以下命令:


ok boot cdrom -s
...
[Use format and newfs to create partitions and file systems]
[Mount the root file system on a temporary mount point:]
# mount /dev/dsk/c0t0d0s0 /a
[Restore the root file system:]
# cd /a
# ufsrestore rvf /dev/rmt/0
# rm restoresymtable
[Create an empty install-db file:]
# touch /a/etc/vx/reconfig.d/state.d/install-db
[Edit /etc/system on the temporary file system and 
remove or comment out the following entries:]
	# rootdev:/pseudo/vxio@0:0
	# set vxio:vol_rootdev_is_volume=1
[Edit /etc/vfstab on the temporary file system:]
Example: 
Change from—
/dev/vx/dsk/rootdg/rootvol /dev/vx/rdsk/rootdg/rootvol / ufs 1 no-

Change to—
/dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0  / ufs   1     no       -
[Unmount the temporary file system, then check the file system:]
# cd /
# umount /a
# fsck /dev/rdsk/c0t0d0s0
[Install a new boot block:]
# /usr/sbin/installboot /usr/platform/`uname \
-i`/lib/fs/ufs/bootblk /dev/rdsk/c0t0d0s0
[Reboot:]
# reboot
[Update the disk ID:]
# cldevice repair /dev/rdsk/c0t0d0
[Encapsulate the disk::]
# vxinstall
Choose to encapsulate the root disk.
[If a conflict  in minor number occurs, reminor the rootdg disk group:]
# umount /global/.devices/node@nodeid
# vxdg reminor rootdg 100
# shutdown -g0 -i6 -y

另请参见

有关如何镜像已封装的根磁盘的说明,请参见《Sun Cluster 软件安装指南(适用于 Solaris OS)》