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

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
    

示例 11–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)
...