2 稳定状态

无论您面临的是从重大文件系统故障中进行恢复还是潜在的数据丢失,第一步均应是稳定受影响的系统、最大程度地减少进一步丢失的几率,以及尽可能保留诊断信息。本章概述您需要执行的操作:

停止归档和回收过程

当您必须恢复归档文件系统或大量丢失的文件时,应首先停止文件系统的归档和回收过程。在评估状况并将一切恢复到正常状态(在理想情况下)之前,您要稳定和隔离归档。否则,正在进行的归档和回收操作有时可能会使情况更糟糕。归档和回写过程可能会传播损坏的文件。回收过程可能会删除有效数据的仅有剩余副本。

因此,请尽可能采取下列预防措施:

完成恢复操作后,您可以取消以下更改并恢复正常的文件系统行为。

停止归档

  1. root 用户身份登录到文件系统元数据服务器。

    root@solaris:~# 
    
  2. 在文本编辑器中打开 /etc/opt/SUNWsamfs/archiver.cmd 文件,向下滚动到第一个 fs(文件系统)指令。

    在示例中,我们使用 vi 编辑器:

    root@solaris:~# vi /etc/opt/SUNWsamfs/archiver.cmd
    # Configuration file for Oracle HSM archiving file systems
    #-----------------------------------------------------------------------
    # General Directives
    archivemeta = off
    examine = noscan
    #-----------------------------------------------------------------------
    # Archive Set Assignments 
    fs = hsmfs1
    logfile = /var/adm/hsmfs1.archive.log
    all .
        1 -norelease 15m
        2 -norelease 15m
    fs = hsmfs2
    logfile = /var/adm/hsmfs2.archive.log
    all .
    ...
    
  3. 如果需要停止所有文件系统上的归档,则在 archiver.cmd 中的第一个 fs 指令之前插入 wait 指令。保存 archiver.cmd 文件并关闭编辑器。

    在本示例中,我们在 hsmfs1 文件系统指令之前插入 wait 指令,其中,该指令将适用于针对归档配置的所有文件系统:

    root@solaris:~# vi /etc/opt/SUNWsamfs/archiver.cmd
    ...
    #-----------------------------------------------------------------------
    # Archive Set Assignments
    wait
    fs = hsmfs1
    logfile = /var/adm/hsmfs1.archive.log
    all .
        1 -norelease 15m
        2 -norelease 15m
        3 -norelease 15m
    fs = hsmfs2
    ...
    :wq
    root@solaris:~# 
    
  4. 如果仅需要停止一个文件系统上的归档,则在该文件系统的 fs 指令之后插入 wait 指令。保存 archiver.cmd 文件并关闭编辑器。

    在本示例中,我们停止 hsmfs1 文件系统上的归档活动:

    root@solaris:~# vi /etc/opt/SUNWsamfs/archiver.cmd
    ...
    #-----------------------------------------------------------------------
    # Archive Set Assignments
    fs = hsmfs1
    wait
    logfile = /var/adm/hsmfs1.archive.log
    all .
        1 -norelease 15m
        2 -norelease 15m
        3 -norelease 15m
    fs = hsmfs2
    ...
    :wq
    root@solaris:~# 
    
  5. 接下来,停止回收

停止回收

  1. root 用户身份登录到文件系统元数据服务器。

    root@solaris:~# 
    
  2. 请使用文本编辑器打开 /etc/opt/SUNWsamfs/recycler.cmd 文件。

    在示例中,我们使用 vi 编辑器:

    root@solaris:~# vi /etc/opt/SUNWsamfs/recycler.cmd
    # Configuration file for Oracle HSM archiving file systems
    #-----------------------------------------------------------------------
    logfile = /var/adm/recycler.log
    no_recycle tp VOL[0-9][2-9][0-9]
    library1 -hwm 95 -mingain 60
    
  3. -ignore 参数添加到 recycler.cmd 文件中的每个回收指令中。然后保存文件并关闭编辑器。

    除非已经配置了按库(而不是按归档集)回收,否则 recycler.cmd 文件不包含回收指令。但立即检查该文件。

    在本示例中,我们有一个针对磁带库 library1 的回收指令:

    root@solaris:~# vi /etc/opt/SUNWsamfs/recycler.cmd
    # Configuration file for Oracle HSM archiving file systems
    #-----------------------------------------------------------------------
    logfile = /var/adm/recycler.log
    no_recycle tp VOL[0-9][2-9][0-9]
    library1 -hwm 95 -mingain 60 -ignore
    :wq
    root@solaris:~# 
    
  4. 如果要从一个或多个归档文件系统丢失或损坏中恢复,请备份未归档文件后再继续。

  5. 如果要从服务器问题或者文件系统丢失或损坏中恢复,请保存 Oracle HSM 配置后再继续。

  6. 如果您需要恢复目录和文件,请确定您是需要保存 Oracle HSM 配置,还是直接转至第 5 章 恢复丢失和已损坏的文件

保留未归档数据

未归档文件可能留在损坏的归档文件系统的磁盘高速缓存中。归档中不存在这些文件的副本。因此,如果可以,请立即将其备份至恢复点文件。执行如下操作:

备份未归档文件

  1. root 用户身份登录到文件系统元数据服务器。

    root@solaris:~# 
    
  2. 为恢复点选择安全存储位置。

    在本示例中,在初始配置期间为恢复点创建的目录之下创建一个子目录 unarchived//zfs 文件系统与 /hsmfs1(我们要恢复的文件系统)没有共同的设备:

    root@solaris:~# mkdir /zfs1/hsmfs_recovery/unarchived/
    root@solaris:~# 
    
  3. 转到文件系统的根目录。

    在本示例中,转到挂载点目录 /hsmfs1

    root@solaris:~# cd /hsmfs1
    root@solaris:~# 
    
  4. 备份留在磁盘高速缓存中的所有未归档文件。使用命令 samfsdump -u -f recovery-point,其中 recovery-point 是输出文件的路径和文件名。

    -u 选项会使 samfsdump 命令备份所有尚未归档的数据文件。在本示例中,我们将恢复点文件 20150325 保存到远程目录 /zfs1/hsmfs_recovery/unarchived/

    root@solaris:~# samfsdump -u -f /zfs1/hsmfs_recovery/unarchived/20150325
    root@solaris:~# 
    
  5. 如果要从服务器问题或者文件系统丢失或损坏中恢复,请保存 Oracle HSM 配置后再继续。

  6. 如果您需要恢复目录和文件,请确定您是需要保存 Oracle HSM 配置,还是直接转至第 5 章 恢复丢失和已损坏的文件

保留配置和状态信息

即使您已安全存储用于恢复 Oracle HSM 软件和文件系统所需的全部配置文件和脚本的备份副本,保留故障系统的当前状态(如果可以)也将很有意义。留存下来的配置文件和脚本可能包含自上次完整配置备份以来所实现的更改。这可能意味着将系统恢复到接近其故障前的精确状态和仅关闭之间的差异。日志和跟踪文件包含的信息有助于恢复文件并明确故障的原因。因此,在您进行其他任何操作之前,首先应保留任何剩余内容。

保存 Oracle HSM 配置

  1. 如有可能,请以 root 用户身份登录到文件系统元数据服务器。

    root@solaris:~# 
    
  2. 运行 samexplorer 命令,创建 SAMreport,并将该报告保存在包含您的备份配置信息的目录中。使用命令 samexplorer path/hostname.YYYYMMDD.hhmmz.tar.gz,其中 path 是所选目录的路径,hostname 是 Oracle HSM 文件系统主机的名称,YYYYMMDD.hhmmz 是日期和时间戳。

    默认文件名是 /tmp/SAMreport.hostname.YYYYMMDD.hhmmz.tar.gz。在本示例中,我们已经拥有用于保存 SAMreport 的目录,即 /zfs1/sam_config/。因此,我们在该目录中创建报告(请注意,下面的命令是作为单行输入的-使用反斜杠字符对换行符进行转义):

    root@solaris:~# samexplorer \ /zfs1/sam_config/explorer/server1.20150325.1659MST.tar.gz
         Report name:     /zfs1/sam_config/explorer/samhost1.20150325.1659MST.tar.gz
         Lines per file:  1000
         Output format:   tar.gz (default) Use -u for unarchived/uncompressed.
     
         Please wait.............................................
         Please wait.............................................
         Please wait......................................
     
         The following files should now be ftp'ed to your support provider
         as ftp type binary.
     
         /zfs1/sam_config/explorer/samhost1.20150325.1659MST.tar.gz
    
  3. 将尽可能多的 Oracle HSM 配置文件复制到独立文件系统中。其中包括:

    /etc/opt/SUNWsamfs/
         mcf
         archiver.cmd
         defaults.conf 
         diskvols.conf 
         hosts.family-set-name
         hosts.family-set-name.local
         preview.cmd
         recycler.cmd
         releaser.cmd
         rft.cmd
         samfs.cmd
         stager.cmd
         inquiry.conf
         samremote                  # SAM-Remote server configuration file
         family-set-name            # SAM-Remote client configuration file
         network-attached-library   # Parameters file
         scripts/*                  # Back up all locally modified files
    /var/opt/SUNWsamfs/
    
  4. 备份所有留存下来的库目录,包括历史记录目录。对于每个目录,使用命令 dump_cat -V catalog-file,其中 catalog-file 是目录文件的路径和名称。将输出重定向到新位置中的 dump-file

    我们将使用 dump_cat 文件的输出在替换系统上重建目录(使用命令 build_cat)。在本示例中,我们将 library1 的目录数据转储到已挂载 NFS 的独立文件系统 zfs1 上的目录中的文件 library1cat.dump(请注意,下面的命令是作为单行输入的-使用反斜杠字符对换行符进行转义):

    root@solaris:~# dump_cat -V /var/opt/SUNWsamfs/catalog/library1cat > \ /zfs1/sam_config/20150325/catalogs/library1cat.dump
    
  5. 将在 Oracle HSM 安装和配置过程中修改的系统配置文件复制到独立文件系统中。其中可能包括:

    /etc/
         syslog.conf
         system
         vfstab
    /kernel/drv/
         sgen.conf
         samst.conf
         samrd.conf
         sd.conf
         ssd.conf
         st.conf
    /usr/kernel/drv/dst.conf
    
  6. 将作为 Oracle HSM 配置的一部分而创建的任何定制 shell 脚本和 crontab 条目复制到独立文件系统中。

    例如,如果创建了 crontab 条目来管理恢复点创建,现在就保存其副本。

  7. 创建用于记录当前安装的软件修订版级别的 readme 文件。包含 Oracle Oracle HSM、Solaris 和 Solaris Cluster(如果适用)。将该文件与其他恢复信息一起保存在独立文件系统中。

  8. 如果可能,将下载的 Oracle Oracle HSM、Solaris 和 Solaris Cluster 软件包的副本保存在独立文件系统中。

    如果这些软件包已经可用,则可以在必要时快速恢复软件。

  9. 如果您要从丢失的 Oracle HSM 服务器主机中恢复,请转至第 3 章 恢复 Oracle HSM 配置

  10. 如果您需要恢复一个或多个 Oracle HSM 文件系统,请转至第 4 章 恢复文件系统

  11. 如果您需要恢复目录和文件,请转至第 5 章 恢复丢失和已损坏的文件