6 配置基本文件系统

QFS 文件系统是所有 Oracle HSM 解决方案的基本构建块。在单独使用时,它们可以为特大文件提供高性能、有效的无限容量和支持。与 Oracle Hierarchical Storage Manager 和经过适当配置的归档存储一起使用时,它们将成为 Oracle HSM 归档文件系统。归档 QFS 文件系统和非归档 QFS 文件系统之后都可以构成更加复杂的多主机、高可用性配置的基础。因此,本章概述了在创建和配置这些文件系统时所涉及的基本任务:

配置 QFS 文件系统

创建和配置基本 QFS 文件系统是非常简单的。对于每种情况,都需要执行以下任务:

  • 准备用于支持该文件系统的磁盘设备。

  • 创建主配置文件 (mcf)。

  • 使用 /opt/SUNWsamfs/sbin/sammkfs 命令创建文件系统。

  • 通过编辑 /etc/vfstab 文件,将新文件系统添加到主机的虚拟文件系统配置中。

  • 挂载新文件系统。

执行此过程时,可以使用 Oracle HSM Manager 图形界面,也可以使用文本编辑器和命令行终端。但在示例中我们使用编辑器和命令行这种方法,使此过程的各个部分比较明晰,从而更便于理解。

在初始 Oracle HSM 配置期间为了简单和方便起见,本节中的过程将在 Solaris 虚拟文件系统的配置文件 (/etc/vfstab) 中设置文件系统挂载选项。但是,大多数选项也可以通过可选的 /etc/opt/SUNWsamfs/samfs.cmd 文件或命令行进行设置。有关详细信息,请参见 samfs.cmdmount_samfs 手册页。

准备 QFS 文件系统的磁盘存储

在开始配置过程之前,需要选择计划配置所需的磁盘资源。可以使用原始设备分片、ZFS zvol 卷或 Solaris Volume Manager 卷。

配置通用 ms 文件系统

  1. root 用户身份登录到文件系统主机。登录全局区域(如果主机已配置区域)。

    root@solaris:~# 
    
  2. 创建文件 /etc/opt/SUNWsamfs/mcf

    mcf主配置文件)是一个表,该表包含以空格分隔的六个列,每个列表示一个用于定义 QFS 文件系统的参数:Equipment IdentifierEquipment OrdinalEquipment TypeFamily SetDevice StateAdditional Parameters。表中的行表示文件系统设备,这包括存储设备和设备组(系列集)。

    要创建 mcf 文件,可以通过在 Oracle HSM Manager 图形用户界面中选择选项来完成,也可以使用文本编辑器。在下面的示例中,我们使用 vi 文本编辑器:

    root@solaris:~# vi /etc/opt/SUNWsamfs/mcf
    ~                                                                               
    ~                                                                               
    "/etc/opt/SUNWsamfs/mcf"  [New File]
    
  3. 为清晰起见,输入列标题作为注释。

    注释行以井号 (#) 开头:

    # Equipment          Equipment  Equipment  Family     Device   Additional
    # Identifier         Ordinal    Type       Set        State    Parameters
    #-----------------   ---------  ---------  ---------  ------   ----------------
    
  4. 在第一行的 Equipment Identifier 字段(第一列)中,输入新文件系统的名称。

    在本示例中,文件系统名为 qfsms

    # Equipment          Equipment  Equipment  Family     Device   Additional
    # Identifier         Ordinal    Type       Set        State    Parameters
    #-----------------   ---------  ---------  ---------  ------   ----------------
    qfsms
    
  5. Equipment Ordinal 字段(第二列)中,输入一个用于唯一标识该文件系统的编号。

    设备序号可唯一标识由 Oracle HSM 控制的所有设备。在本示例中,我们用 100 代表 qfsms 文件系统:

    # Equipment          Equipment  Equipment  Family     Device   Additional
    # Identifier         Ordinal    Type       Set        State    Parameters
    #-----------------   ---------  ---------  ---------  ------   ----------------
    qfsms                100
    
  6. Equipment Type 字段(第三列)中,输入通用 QFS 文件系统的设备类型 (ms):

    # Equipment          Equipment  Equipment  Family     Device   Additional
    # Identifier         Ordinal    Type       Set        State    Parameters
    #-----------------   ---------  ---------  ---------  ------   ----------------
    qfsms                100        ms
    
  7. Family Set 字段(第四列)中,输入文件系统的名称。

    Family Set 参数用于定义配置在一起构成一个单元的设备组,例如,机械装置磁带库及其驻留磁带机或者文件系统及其组件磁盘设备。

    # Equipment          Equipment  Equipment  Family     Device   Additional
    # Identifier         Ordinal    Type       Set        State    Parameters
    #-----------------   ---------  ---------  ---------  ------   ----------------
    qfsms                100        ms         qfsms
    
  8. Device State 列中输入 on,并将 Additional Parameters 列留空。

    此行已完成:

    # Equipment          Equipment  Equipment  Family     Device   Additional
    # Identifier         Ordinal    Type       Set        State    Parameters
    #-----------------   ---------  ---------  ---------  ------   ----------------
    qfsms                100        ms         qfsms      on
    
  9. 开始新行。在 Equipment Identifier 字段(第一列)中,输入所选的其中一个磁盘设备的标识符,然后在 Equipment Ordinal 字段(第二列)中输入唯一编号。

    在示例中,我们缩进了设备行,以强调设备是 qfsms 文件系统系列集的一部分,然后通过递增系列集的设备编号来创建设备编号,在本例中为 101

    # Equipment          Equipment  Equipment  Family     Device   Additional
    # Identifier         Ordinal    Type       Set        State    Parameters
    #-----------------   ---------  ---------  ---------  ------   ----------------
    qfsms                100        ms         qfsms      on
      /dev/dsk/c1t3d0s3   101
    
  10. 在磁盘设备行的 Equipment Type 字段(第三列)中,输入磁盘设备的设备类型 md

    # Equipment          Equipment  Equipment  Family     Device   Additional
    # Identifier         Ordinal    Type       Set        State    Parameters
    #-----------------   ---------  ---------  ---------  ------   ----------------
    qfsms                100        ms         qfsms      on
      /dev/dsk/c1t3d0s3   101        md
    
  11. 在磁盘设备行的 Family Set 字段(第四列)中输入文件系统的系列集名称,在 Device State 字段(第五列)中输入 on,然后将 Additional Parameters 字段(第六列)留空。

    系列集名称 qfsms 用于标识磁盘设备是文件系统硬件的一部分。

    # Equipment          Equipment  Equipment  Family     Device   Additional
    # Identifier         Ordinal    Type       Set        State    Parameters
    #-----------------   ---------  ---------  ---------  ------   ----------------
    qfsms                100        ms         qfsms      on
      /dev/dsk/c1t3d0s3   101        md         qfsms      on
    
  12. 接下来添加任何剩余磁盘设备的条目,然后保存文件并退出编辑器。

    # Equipment          Equipment  Equipment  Family     Device   Additional
    # Identifier         Ordinal    Type       Set        State    Parameters
    #-----------------   ---------  ---------  ---------  ------   ----------------
    qfsms                100        ms         qfsms      on
      /dev/dsk/c1t3d0s3   101        md         qfsms      on
      /dev/dsk/c1t4d0s5   102        md         qfsms      on
    :wq
    root@solaris:~# 
    
  13. 运行 sam-fsd 命令检查 mcf 文件是否存在错误。

    sam-fsd 命令会读取 Oracle HSM 配置文件并初始化文件系统。该命令会在遇到以下错误时停止:

    root@solaris:~# sam-fsd
    
  14. 如果 sam-fsd 命令在 mcf 文件中找到错误,请编辑该文件以更正错误,并按照前一步骤中的描述重新检查。

    在下面的示例中,sam-fsd 报告设备中出现的未指定问题:

    root@solaris:~# sam-fsd
    Problem in mcf file /etc/opt/SUNWsamfs/mcf for filesystem qfsms
    sam-fsd: Problem with file system devices.
    

    通常,这样的错误是不经意的键入错误导致的。此处,在编辑器中打开 mcf 文件后,发现在设备 102(第二个 md 设备)设备名称的分片编号中键入了一个字符 o 而非 0:

    qfsms                100        ms         qfsms      on       
      /dev/dsk/c0t0d0s0   101        md         qfsms      on
      /dev/dsk/c0t3d0so   102        md         qfsms      on
    
  15. 如果 sam-fsd 命令运行时未出错,则表明 mcf 文件正确。继续执行下一步。

    以下示例是无误输出的部分列表:

    root@solaris:~# sam-fsd
    Trace file controls:
    sam-amld      /var/opt/SUNWsamfs/trace/sam-amld
                  cust err fatal ipc misc proc date
                  size    10M  age 0
    sam-archiverd /var/opt/SUNWsamfs/trace/sam-archiverd
                  cust err fatal ipc misc proc date module
                  size    10M  age 0
    sam-catserverd /var/opt/SUNWsamfs/trace/sam-catserverd
                  cust err fatal ipc misc proc date module
                  size    10M  age 0
    ...
    Would start sam-archiverd()
    Would start sam-stagealld()
    Would start sam-stagerd()
    Would start sam-amld()
    
  16. 为新文件系统创建挂载点目录,并为挂载点设置访问权限。

    用户必须具有执行 (x) 权限才能转到挂载点目录并访问挂载的文件系统中的文件。在示例中,创建 /qfsms 挂载点目录并将权限设置为 755 (-rwxr-xr-x):

    root@solaris:~# mkdir /qfsms
    root@solaris:~# chmod 755 /qfsms
    
  17. 指示 Oracle HSM 软件重新读取 mcf 文件并相应地重新配置自身。使用命令 samd config

    root@solaris:~# samd config
    Configuring SAM-FS
    root@solaris:~# 
    
  18. 如果 samd config 命令失败并显示消息 You need to run /opt/SUNWsamfs/util/SAM-QFS-post-install,则表示您在安装软件时忘记了运行安装后脚本。请立即运行此脚本。

    root@solaris:~# /opt/SUNWsamfs/util/SAM-QFS-post-install
    - The administrator commands will be executable by root only (group bin).
    If this is the desired value, enter "y".  If you want to change
    the specified value enter "c".
    ...
    root@solaris:~# 
    
  19. 使用 /opt/SUNWsamfs/sbin/sammkfs 命令和文件系统的系列集名称创建文件系统。

    对于 md 设备,Oracle HSM 软件使用双重分配和默认磁盘分配单元 (Disk Allocation Unit, DAU) 大小。对于通用文件系统来说,这是一个很好的选择,因为它可以容纳大文件和小文件以及 I/O 请求。在示例中,我们接受默认值:

    root@solaris:~# sammkfs qfsms
    Building 'qfsms' will destroy the contents of devices:
      /dev/dsk/c1t3d0s3
      /dev/dsk/c1t4d0s5
    Do you wish to continue? [y/N]yes
    total data kilobytes       = ...
    

    如果我们使用的是指定更符合我们的 I/O 需求的非默认 DAU 大小所需的 mr 设备,则可以将 sammkfs 命令与 -a 选项结合使用来实现此目的:

    root@solaris:~# sammkfs -a 16 qfs2ma 
    

    有关其他信息,请参见 sammkfs 手册页。

  20. 备份操作系统的 /etc/vfstab 文件。

    root@solaris:~# cp /etc/vfstab /etc/vfstab.backup
    
  21. 将新文件系统添加到操作系统的虚拟文件系统配置。在文本编辑器中打开此文件,并为 qfsms 系列集设备添加一行:

    #File
    #Device    Device   Mount     System  fsck  Mount    Mount
    #to Mount  to fsck  Point     Type    Pass  at Boot  Options
    #--------  -------  --------  ------  ----  -------  -------------------------
    /devices   -        /devices  devfs   -     no       -
    /proc      -        /proc     proc    -     no       -
    ...
    qfsms      -        /qfsms    samfs   -    
    
  22. /etc/vfstab 文件的第六列 Mount at Boot 中,输入 no(适用于大多数情况)。

    root@solaris:~# vi /etc/vfstab
    # File
    #Device    Device   Mount     System  fsck  Mount    Mount
    #to Mount  to fsck  Point     Type    Pass  at Boot  Options
    #--------  -------  --------  ------  ----  -------  -------------------------
    /devices   -        /devices  devfs   -     no       -
    ...
    qfsms      -        /qfsms    samfs   -     no
    
  23. 要指定循环分配,请添加 stripe=0 挂载选项:

    #File
    #Device    Device   Mount     System  fsck  Mount    Mount
    #to Mount  to fsck  Point     Type    Pass  at Boot  Options
    #--------  -------  --------  ------  ----  -------  -------------------------
    /devices   -        /devices  devfs   -     no       -
    /proc      -        /proc     proc    -     no       -
    ...
    qfsms      -        /qfsms    samfs   -     no       stripe=0
    
  24. 要指定分散读写分配,请添加 stripe=stripe-width 挂载选项,其中 stripe-width 是应写入分散读写中的每个磁盘的磁盘分配单元 (Disk Allocation Unit, DAU) 数目。

    在示例中,我们将分散读写宽度设置为一个 DAU:

    #File
    #Device    Device   Mount     System  fsck  Mount    Mount
    #to Mount  to fsck  Point     Type    Pass  at Boot  Options
    #--------  -------  --------  ------  ----  -------  -------------------------
    /devices   -        /devices  devfs   -     no       -
    /proc      -        /proc     proc    -     no       -
    ...
    qfsms      -        /qfsms    samfs   -     no       stripe=1
    

    这里,stripe=1 选项用于指定分散读写宽度为 1 个 DAU 且写入大小为两个 DAU。因此,当文件系统同时写入两个 DAU 时,它会向 qfsms 系列集中的每个 md 磁盘设备(共两个)各写入一个 DAU。

  25. /etc/vfstab 文件进行所需的其他更改。

    例如,如果元数据服务器没有响应,要在后台挂载文件系统,则应将 bg 挂载选项添加到 Mount Options 字段:

    #File
    #Device    Device   Mount     System  fsck  Mount    Mount
    #to Mount  to fsck  Point     Type    Pass  at Boot  Options
    #--------  -------  --------  ------  ----  -------  -------------------------
    /devices   -        /devices  devfs   -     no       -
    /proc      -        /proc     proc    -     no       -
    ...
    qfsms      -        /qfsms    samfs   -     no       stripe=1,bg
    
  26. 保存 vfstab 文件并关闭编辑器。

    ...
    qfsms      -        /qfsms    samfs   -     no       stripe=1
    :wq
    root@solaris:~# 
    
  27. 挂载新文件系统:

    root@solaris:~# mount /qfsms 
    
  28. 文件系统现已完成,可以使用了。

    从此处执行以下各操作并参考相应的内容:

配置高性能 ma 文件系统

在文件系统主机上安装 Oracle HSM 软件之后,可按以下所述对 ma 文件系统进行配置。

  1. root 用户身份登录到文件系统主机。登录全局区域(如果主机已配置区域)。

    root@solaris:~# 
    
  2. 选择用于存储元数据的磁盘设备。

  3. 选择用于存储数据的磁盘设备。

  4. 创建 mcf 文件。

    要创建 mcf 文件,可以通过在 Oracle HSM Manager 图形用户界面中选择选项来完成,也可以使用文本编辑器。在下面的示例中,我们使用 vi 文本编辑器:

    root@solaris:~# vi /etc/opt/SUNWsamfs/mcf
    ~                                                                               
    "/etc/opt/SUNWsamfs/mcf"  [New File]
    
  5. 为清晰起见,输入列标题作为注释。

    注释行以井号 (#) 开头:

    # Equipment           Equipment  Equipment  Family  Device   Additional
    # Identifier          Ordinal    Type       Set     State    Parameters
    #------------------   ---------  ---------  ------  ------   -----------------
    
  6. 为文件系统系列集创建一个条目。

    在本示例中,我们将文件系统标识为 qfsma,将设备序号递增到 200,将设备类型设置为 ma,将系列集名称设置为 qfsma,并将设备状态设置为 on

    # Equipment           Equipment  Equipment  Family  Device   Additional
    # Identifier          Ordinal    Type       Set     State    Parameters
    #------------------   ---------  ---------  ------  ------   -----------------
    qfsma          200        ma         qfsma   on
    
  7. 为每个元数据设备添加一个条目。在设备标识符列中输入所选磁盘设备的标识符,设置设备序号,并将设备类型设置为 mm

    添加足够的元数据设备,以存储文件系统大小所需的元数据。在示例中,我们添加单个元数据设备:

    # Equipment           Equipment  Equipment  Family  Device   Additional
    # Identifier          Ordinal    Type       Set     State    Parameters
    #------------------   ---------  ---------  ------  ------   -----------------
    qfsma                 200        ma         qfsma   on
      /dev/dsk/c0t0d0s0    201        mm         qfsma   on
    
  8. 接下来添加数据设备的条目,然后保存文件并退出编辑器。

    这些可以是 mdmr 或分散读写组 (gXXX) 设备。在本示例中,我们将指定 md 设备:

    # Equipment          Equipment  Equipment  Family  Device   Additional
    # Identifier         Ordinal    Type       Set     State    Parameters
    #------------------  ---------  ---------  ------  ------   -----------------
    qfsma                200        ma         qfsma   on
      /dev/dsk/c0t0d0s0   201        mm         qfsma   on
      /dev/dsk/c0t3d0s0   202        md         qfsma   on
      /dev/dsk/c0t3d0s1   203        md         qfsma   on
    :wq
    root@solaris:~# 
    
  9. 运行 sam-fsd 命令检查 mcf 文件是否存在错误。

    sam-fsd 命令会读取 Oracle HSM 配置文件并初始化文件系统。该命令会在遇到以下错误时停止:

    root@solaris:~# sam-fsd
    
  10. 如果 sam-fsd 命令在 mcf 文件中找到错误,请编辑该文件以更正错误,并按照前一步骤中的描述重新检查。

    在下面的示例中,sam-fsd 报告设备中出现的未指定问题:

    root@solaris:~# sam-fsd
    Problem in mcf file /etc/opt/SUNWsamfs/mcf for filesystem qfsma
    sam-fsd: Problem with file system devices.
    

    通常,这样的错误是不经意的键入错误导致的。此处,在编辑器中打开 mcf 文件后,发现在设备 202(第一个 md 设备)的设备名称的分片编号部分中键入了一个感叹号 ! 而非 1:

    sharefs1              200         ma         qfsma   on       
      /dev/dsk/c0t0d0s0    201         mm         qfsma   on
      /dev/dsk/c0t0d0s!    202         md         qfsma   on
      /dev/dsk/c0t3d0s0    203         md         qfsma   on
    
  11. 如果 sam-fsd 命令运行时未出错,则表明 mcf 文件正确。继续执行下一步。

    以下示例是无误输出的部分列表:

    root@solaris:~# sam-fsd
    Trace file controls:
    sam-amld      /var/opt/SUNWsamfs/trace/sam-amld
                  cust err fatal ipc misc proc date
                  size    10M  age 0
    sam-archiverd /var/opt/SUNWsamfs/trace/sam-archiverd
                  cust err fatal ipc misc proc date module
                  size    10M  age 0
    sam-catserverd /var/opt/SUNWsamfs/trace/sam-catserverd
                  cust err fatal ipc misc proc date module
                  size    10M  age 0
    ...
    Would start sam-archiverd()
    Would start sam-stagealld()
    Would start sam-stagerd()
    Would start sam-amld()
    
  12. 使用 /opt/SUNWsamfs/sbin/sammkfs 命令和文件系统的系列集名称创建文件系统。

    在示例中,我们按以下方式创建文件系统:对具有 md 设备的 ma 文件系统使用默认磁盘分配单元 (Disk Allocation Unit, DAU) 大小(即 64 千字节):

    root@solaris:~# sammkfs qfsma
    Building 'qfsma' will destroy the contents of devices:
      /dev/dsk/c0t0d0s0
      /dev/dsk/c0t3d0s0
      /dev/dsk/c0t3d0s1
    Do you wish to continue? [y/N]yes
    total data kilobytes       = ...
    

    默认磁盘分配单元大小是一个很好的通用选择。但是,如果文件系统主要是用于支持较小的文件或读写数据量较少的应用程序,则我们也可以将 DAU 大小指定为 1632 千字节。要指定 16 千字节 DAU,需将 sammkfs 命令与 -a 选项结合使用:

    root@solaris:~# sammkfs -a 16 qfsma 
    

    mr 设备和 gXXX 分散读写组的 DAU 在范围 8-65528 千字节内完全可调(增量为 8 千字节)。对于 mr 设备,默认值为 64 千字节;对于 gXXX 分散读写组,默认值为 256 千字节。有关其他详细信息,请参见 sammkfs 手册页。

  13. 备份操作系统的 /etc/vfstab 文件。

    root@solaris:~# cp /etc/vfstab /etc/vfstab.backup
    
  14. 将新文件系统添加到操作系统的虚拟文件系统配置。在文本编辑器中打开 /etc/vfstab 文件,并为 qfsma 系列集添加一行。

    root@solaris:~# vi /etc/vfstab
    # File
    #Device    Device   Mount     System  fsck  Mount    Mount
    #to Mount  to fsck  Point     Type    Pass  at Boot  Options
    #--------  -------  --------  ------  ----  -------  -------------------------
    /devices   -        /devices  devfs   -     no       -
    ...
    qfsma      -        /qfsma    samfs   -
    
  15. /etc/vfstab 文件的第六列 Mount at Boot 中,输入 no

    root@solaris:~# vi /etc/vfstab
    # File
    #Device    Device   Mount     System  fsck  Mount    Mount
    #to Mount  to fsck  Point     Type    Pass  at Boot  Options
    #--------  -------  --------  ------  ----  -------  -------------------------
    /devices   -        /devices  devfs   -     no       -
    ...
    qfsma      -        /qfsma    samfs   -     no
      
    
  16. 要指定循环分配,请添加 stripe=0 挂载选项:

    #File
    #Device    Device   Mount     System  fsck  Mount    Mount
    #to Mount  to fsck  Point     Type    Pass  at Boot  Options
    #--------  -------  --------  ------  ----  -------  -------------------------
    /devices   -        /devices  devfs   -     no       -
    ...
    qfsma      -        /qfsma    samfs   -     no       stripe=0
    
  17. 要指定分散读写分配,请添加 stripe=stripe-width 挂载选项,其中 stripe-width[1-255] 范围内的一个整数,表示应写入分散读写中的每个磁盘的磁盘分配单元 (Disk Allocation Unit, DAU) 数目。

    指定分散读写分配时,数据将并行写入设备。因此,为获得最佳性能,在选择分散读写宽度时应确保充分利用存储硬件所提供的带宽。请注意,给定分散读写宽度传输的数据量取决于硬件的配置情况。对于在单个磁盘卷上实施的 md 设备,当分散读写宽度为 1 时,将向每个磁盘(共两个)写入一个 64 千字节的 DAU(共计 128 千字节)。对于在 3+1 RAID 5 卷组上实施的 md 设备,使用这一相同的分散读写宽度时,将向每个设备(共两个)上的每个数据磁盘(共三个)传输一个 64 千字节的 DAU(每次传输共计六个 DAU 或 384 千字节)。在示例中,我们将分散读写宽度设置为一个 DAU:

    #File
    #Device    Device   Mount     System  fsck  Mount    Mount
    #to Mount  to fsck  Point     Type    Pass  at Boot  Options
    #--------  -------  --------  ------  ----  -------  -------------------------
    /devices   -        /devices  devfs   -     no       -
    ...
    qfsma      -        /qfsma    samfs   -     no       stripe=1
    
  18. 可以尝试调整分散读写宽度,以更好地利用可用的硬件。在文件系统的 Mount Options 字段中,设置 stripe=n 挂载选项,其中 n 是为文件系统指定的 DAU 大小的倍数。测试文件系统的 I/O 性能,并根据需要重新调整设置。

    设置 stripe=0 时,Oracle HSM 会使用循环分配将文件写入设备。系统会将每个文件尽可能分配在一个设备上,直至填满该设备为止。循环分配是共享文件系统和多流环境的首选设置。

    在示例中,我们已确定分散读写宽度为一时 RAID-5 卷组的带宽并未充分利用,因此我尝试 stripe=2

    #File
    #Device    Device   Mount     System  fsck  Mount    Mount
    #to Mount  to fsck  Point     Type    Pass  at Boot  Options
    #--------  -------  --------  ------  ----  -------  -------------------------
    /devices   -        /devices  devfs   -     no       -
    /proc      -        /proc     proc    -     no       -
    ...
    qfsma      -        /qfsma    samfs   -     no       ...,stripe=2
    
  19. 否则保存 vfstab 文件。

    ...
    qfsma      -        /qfsma    samfs   -     no       stripe=1
    :wq
    root@solaris:~# 
    
  20. 挂载新文件系统:

    root@solaris:~# mount /qfsms 
    

    基本文件系统现已完成,可以使用了。

  21. 如果要使用 Oracle Hierarchical Storage Manager 设置归档文件系统,请参见配置 Oracle HSM 归档文件系统

  22. 如果需要在文件系统上启用 WORM(Write Once Read Many,一写多读)功能,请参见启用对一次写入多次读取 (Write Once Read Many, WORM) 文件的支持

  23. 如果需要与使用 LTFS 的系统交互,或者需要在远程站点之间传输大量数据,请参见启用对 Linear Tape File System (LTFS) 的支持

  24. 如果有其他需求(例如,多主机文件系统访问或高可用性配置),请参见进阶知识

  25. 否则,请转至配置通知和日志记录

配置 Oracle HSM 归档文件系统

归档文件系统将一个或多个 QFS mams 类型的文件系统与归档存储和 Oracle HSM 软件组合在一起。Oracle HSM 软件将辅助磁盘存储和/或可移除介质集成到基本文件系统操作之中,因此文件可在各种不同的介质上保留多个副本。这种冗余不但可提供连续数据保护,还可以为超大文件提供策略驱动的保留和有效的存储。

将磁盘归档文件系统添加到 Oracle HSM 主机配置

在 Oracle HSM 主机上创建任何所需的磁盘归档文件系统并将本地和远程磁盘归档文件添加到主机配置。使用下面列出的过程:

创建本地文件系统以用作磁盘归档

如果您要将 Oracle HSM 服务器上的文件系统用作磁盘归档,请执行如下操作。

  1. 为 Oracle HSM 服务器上本地挂载的每个磁盘归档卷创建 QFS、ZFS 或 UFS 文件系统。

    请勿使用必须与其他应用程序共享的现有通用文件系统。

  2. 如果将一个或多个 QFS 文件系统配置为磁盘归档卷,则应为每个文件系统分配一个系列集名称和一组用于将其明确标识为归档存储卷的设备序号。

    明确区分 QFS 归档存储文件系统与其他 Oracle HSM 主文件系统可以使配置更易于理解和维护。在本示例中,新文件系统的名称 DISKVOL1 表明了它的功能。在 mcf 文件中,此名称和设备序号 800 将该磁盘归档与 samms100 区别开来(后者是我们在后续示例中创建归档 Oracle HSM 文件系统时要使用的系列集名称和序号):

    # Archiving file systems:
    #
    # Equipment              Equipment Equipment Family    Device Additional
    # Identifier             Ordinal   Type      Set       State  Parameters
    #----------------------- --------- --------- --------- ------ -----------------
    
    # Archival storage for copies:
    #
    # Equipment              Equipment Equipment Family    Device Additional
    # Identifier             Ordinal   Type      Set       State  Parameters
    #----------------------- --------- --------- --------- ------ -----------------
    DISKVOL1                  800       ms       DISKVOL1  on
     /dev/dsk/c6t0d1s7         801       md       DISKVOL1  on
     /dev/dsk/c4t0d2s7         802       md       DISKVOL1  on
    
  3. 接下来,将磁盘归档添加到 Oracle HSM 主机系统配置。

将磁盘归档添加到 Oracle HSM 主机配置

  1. 在 Oracle HSM 主机上,创建一个父目录,用于存放磁盘归档卷的挂载点,就像在物理磁带库中存放归档磁带卷一样。

    在示例中,我们创建目录 /diskvols

    root@solaris:~# mkdir /diskvols
    
  2. 在父目录中,为每个归档文件系统创建一个挂载点目录。

    在示例中,我们创建挂载点目录 DISKVOL1DISKVOL2DISKVOL15

    root@solaris:~# mkdir /diskvols/DISKVOL1
    root@solaris:~# mkdir /diskvols/DISKVOL2
    ...
    root@solaris:~# mkdir /diskvols/DISKVOL15
    
  3. 在 Oracle HSM 主机上,备份 /etc/vfstab 文件。

    root@solaris:~# cp /etc/vfstab /etc/vfstab.backup
    
  4. 在编辑器中打开 /etc/vfstab 文件。

    root@solaris:~# vi /etc/vfstab 
    
  5. 为用作磁盘归档的每个本地 QFS 文件系统添加一个条目。使用 samfs 文件系统类型标识每个条目并添加挂载选项 nosam(除非您希望 Oracle HSM 归档该归档)。

    nosam 挂载选项可确保存储在 QFS 文件系统上的归档副本本身不进行归档。

    在本示例中,使用 vi 编辑器为一个本地 QFS 文件系统 DISKVOL1 添加条目。

    root@solaris:~# vi /etc/vfstab 
    #File
    #Device           Device   Mount               System  fsck  Mount    Mount
    #to Mount         to fsck  Point               Type    Pass  at Boot  Options
    #--------         -------  ------------------  ------  ----  -------  ---------
    /devices          -        /devices            devfs   -     no       -
    ...
    DISKVOL1          -        /diskvols/DISKVOL1  samfs   -     no       nosam
    
  6. 为用作磁盘归档的每个 NFS 文件系统添加条目。使用 nfs 文件系统类型标识每个条目。

    在本示例中,使用 vi 编辑器添加条目 DISKVOL2DISKVOL15,其中 nfs1 是托管磁盘归档 DISKVOL2DISKVOL13 的 NFS 服务器,oscsa1 是托管其余磁盘归档的 Oracle 存储云软件设备主机的名称:

    root@solaris:~# vi /etc/vfstab 
    #File
    #Device           Device   Mount               System  fsck  Mount    Mount
    #to Mount         to fsck  Point               Type    Pass  at Boot  Options
    #--------         -------  ------------------  ------  ----  -------  ---------
    /devices          -        /devices            devfs   -     no       -
    ...
    DISKVOL1          -        /diskvols/DISKVOL1  samfs   -     no       nosam
    nfs1:/DISKVOL2    -        /diskvols/DISKVOL2  nfs     -     yes      -
    nfs1:/DISKVOL3    -        /diskvols/DISKVOL3  nfs     -     yes      -
    ...
    oscsa1:/DISKVOL14 -        /diskvols/DISKVOL3  nfs     -     yes      -
    oscsa1:/DISKVOL15 -        /diskvols/DISKVOL15 nfs     -     yes      -
    
    
  7. 保存 /etc/vfstab 文件并关闭编辑器。

    ...
    oscsa1:/DISKVOL14 -        /diskvols/DISKVOL3  nfs     -     yes      -
    oscsa1:/DISKVOL15 -        /diskvols/DISKVOL15 nfs     -     yes      -
    :wq
    root@solaris:~# 
    
  8. 在 Oracle HSM 主机上,挂载磁盘归档文件系统。

    在示例中,我们挂载 DISKVOL1DISKVOL2DISKVOL15

    root@solaris:~# mount /diskvols/DISKVOL1
    root@solaris:~# mount /diskvols/DISKVOL2
    ...
    root@solaris:~# mount /diskvols/DISKVOL14
    root@solaris:~# mount /diskvols/DISKVOL15
    
  9. 现在,准备可移除介质库和驱动器

准备可移除介质库和驱动器

本节介绍以下任务:

配置 Oracle StorageTek ACSLS 网络连接自动化库

如果您有 Oracle StorageTek ACSLS 网络连接库,则可以按以下步骤进行配置,也可以使用 Oracle HSM Manager图形用户界面来自动发现和配置此库(有关使用 Oracle HSM Manager 的说明,请参见联机帮助)。

执行如下操作:

  1. root 用户身份登录到 Oracle HSM 服务器主机。

    root@solaris:~# 
    
  2. 转到 /etc/opt/SUNWsamfs 目录。

    root@solaris:~# cd /etc/opt/SUNWsamfs
    
  3. 在文本编辑器中,使用与要配置的网络连接库的类型相对应的名称创建一个新文件。

    在示例中,我们为 Oracle StorageTek ACSLS 网络连接库创建一个参数文件:

    root@solaris:~# vi /etc/opt/SUNWsamfs/acsls1params
    # Configuration File for an ACSLS Network-Attached Tape Library 1
    
  4. 输入 Oracle HSM 软件在与 ACSLS 连接库进行通信时将使用的参数和值。

    Oracle HSM 软件使用以下 Oracle StorageTek Automated Cartridge System 应用编程接口 (Automated Cartridge System Application Programming Interface, ACSAPI) 参数来控制 ACSLS 管理库(有关更多信息,请参见 stk 手册页):

    • access=user-id 指定用于访问控制的可选用户标识值。默认情况下,没有基于用户标识的访问控制。

    • hostname=hostname 指定运行 StorageTek ACSLS 接口的服务器的主机名。

    • portnum=portname 指定用于在 ACSLS 和 Oracle HSM 软件之间进行通信的端口号。

    • ssihost=hostname 指定标识连接到 ACSLS 主机的网络的多宿主 Oracle HSM 服务器的主机名。其默认值为本地主机的名称。

    • ssi_inet_port=ssi-inet-port 指定 ACSLS 服务器系统接口必须用于传入 ACSLS 响应的固定防火墙端口。指定 0 或 [1024-65535] 范围内的一个值。默认值为 0,即允许动态端口分配。

    • csi_hostport=csi-port 指定 ACSLS 服务器上 Oracle HSM 将其 ACSLS 请求发送到的客户机系统接口端口号。指定 0 或 [1024-65535] 范围内的一个值。默认值为 0,表示系统将在 ACSLS 服务器上的端口映射器中查询端口。

    • capid=(acs=acsnum, lsm=lsmnum, cap=capnum) 指定磁带存取口 (cartridge access port, CAP) 的 ACSLS 地址,其中 acsnum 是库的 Automated Cartridge System (ACS) 编号,lsmnum 是用于存放 CAP 的模块的库存储模块 (Library Storage Module, LSM) 编号,capnum 是所需 CAP 的标识号。整个地址用括号括起来。

    • capacity=(index-value-list) 指定可移除介质磁带的容量,其中 index-value-list 是以逗号分隔的 index=value 对的列表。此列表中的每个 index 是 ACSLS 定义的介质类型的索引,每个 value 是相应的卷容量(以 1024 字节为单位)。

      ACSLS 文件 /export/home/ACSSS/data/internal/mixed_media/media_types.dat 定义介质类型索引。通常,只有对于新磁带类型或者需要覆盖所支持的容量时,才需要提供容量条目。

    • device-path-name=(acs=ACSnumber, lsm=LSMnumber, panel=Panelnumber, drive=Drivenumber)[shared] 指定附加到客户机的驱动器的 ACSLS 地址,其中 device-path-name 标识 Oracle HSM 服务器上的设备,acsnum 是库的 Automated Cartridge System (ACS) 编号,lsmnum 是控制驱动器的模块的库存储模块 (Library Storage Module, LSM) 编号,Panelnumber 是安装驱动器的面板的标识号,Drivenumber 是驱动器的标识号。整个地址用括号括起来。

      在 ACSLS 地址后面添加可选 shared 关键字将允许两个或更多 Oracle HSM 服务器共享驱动器,但每个服务器均保留对各自介质的独占控制。默认情况下,共享驱动器中的磁带可以在卸载之前空闲 60 秒。

    在示例中,我们将 acslserver1 标识为 ACSLS 主机,限制 sam_user 的访问权限,指定动态端口分配,并映射一个磁带存取口和两个驱动器:

    root@solaris:~# vi /etc/opt/SUNWsamfs/acsls1params
    # Configuration File for an ACSLS Network-Attached Tape Library 1
    hostname = acslserver1
    portnum = 50014
    access = sam_user
    ssi_inet_port = 0
    csi_hostport = 0
    capid = (acs=0, lsm=1, cap=0)
    /dev/rmt/0cbn = (acs=0, lsm=1, panel=0, drive=1)
    /dev/rmt/1cbn = (acs=0, lsm=1, panel=0, drive=2) 
    
  5. 保存文件并关闭编辑器。

    root@solaris:~# vi /etc/opt/SUNWsamfs/acsls1params
    # /etc/opt/SUNWsamfs/acslibrary1
    # Configuration File for an ACSLS Network-Attached Tape Library
    ...
    /dev/rmt/0cbn = (acs=0, lsm=1, panel=0, drive=1)
    /dev/rmt/1cbn = (acs=0, lsm=1, panel=0, drive=2) 
    :wq
    root@solaris:~# 
    
  6. 如果库或应用程序软件对带有条码的可移除介质使用非标准标签,则现在配置标记行为

  7. 如果已知驱动器或应用程序软件与 Oracle HSM 默认值兼容,则现在设置驱动器计时值

  8. 否则,请转至配置归档文件系统

为带有条码的可移除介质配置标记行为

默认情况下,如果库中包含条码读取器和带条码的介质,则 Oracle HSM 软件会自动使用条码中的前六位字符来标记卷。但是,您可以配置 Oracle HSM 以使卷标签基于条码的替代读取。为此,请执行如下操作:

  1. root 用户身份登录 Oracle HSM 主机。

    root@solaris:~# 
    
  2. 如果您需要非默认行为或者之前覆盖了默认值并需要重置该默认值,请在文本编辑器中打开 /etc/opt/SUNWsamfs/defaults.conf 文件。

    在示例中,用 vi 编辑器打开文件:

    root@solaris:~# vi /opt/SUNWsamfs/examples/defaults.conf
    ...
    
  3. 找到行 labels =(如果存在),否则请添加此行。

    在示例中,添加指令:

    root@solaris:~# vi /etc/opt/SUNWsamfs/defaults.conf
    # These are the defaults.
    ...
    labels = 
    
  4. 要重新启用基于条码前六位字符的默认自动标记行为,请将 labels 指令的值设置为 barcodes。保存文件并关闭编辑器。

    现在,Oracle HSM 软件会自动使用磁带条码的前六位字符作为标签来重新标记无标签磁带:

    root@solaris:~# vi /etc/opt/SUNWsamfs/defaults.conf
    ...
    labels = barcodes
    :wq
    root@solaris:~# 
    
  5. 要启用基于磁盘上条码的后六位字符的自动标记行为,请将 labels 指令的值设置为 barcodes_low。保存文件并关闭编辑器。

    labels 指令设置为 barcodes_low 时,Oracle HSM 软件会自动使用磁带条码的后六位字符作为标签来重新标记无标签磁带:

    root@solaris:~# vi /etc/opt/SUNWsamfs/defaults.conf
    ...
    labels = barcodes_low
    :wq
    root@solaris:~# 
    
  6. 要禁用自动标记并将 Oracle HSM 配置为从磁带读取标签,请将 labels 指令的值设置为 read。保存文件并关闭编辑器。

    labels 指令设置为 read 值时,Oracle HSM 软件将无法自动重新标记磁带:

    root@solaris:~# vi /etc/opt/SUNWsamfs/defaults.conf
    ...
    labels = read
    idle_unload = 0
    ...
    :wq
    root@solaris:~# 
    
  7. 如果已知驱动器或应用程序软件与 Oracle HSM 默认值兼容,则现在设置驱动器计时值

  8. 否则,请转至配置归档文件系统

设置驱动器计时值

默认情况下,Oracle HSM 软件按以下方式设置驱动器计时参数:

  • 指定设备类型卸载介质之前必须经过的最短时间是 60 秒。

  • Oracle HSM 软件在向库(将响应 SCSI unload 命令)发出新命令之前所等待的时间为 15 秒。

  • Oracle HSM 软件在卸载空闲驱动器之前所等待的时间为 600 秒(即 10 分钟)。

  • Oracle HSM 软件在卸载由两个或更多 Oracle HSM 服务器共享的空闲驱动器之前所等待的时间为 600 秒(即 10 分钟)。

要更改默认计时值,请执行如下操作:

  1. 如果尚未登录,请以 root 用户身份登录到 Oracle HSM 主机。

    root@solaris:~# 
    
  2. 在文本编辑器中打开 /etc/opt/SUNWsamfs/defaults.conf 文件。

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

    root@solaris:~# vi /etc/opt/SUNWsamfs/defaults.conf
    # These are the defaults.  To change the default behavior, uncomment the
    # appropriate line (remove the '#' character and change the value.
    ...
    
  3. 如果需要,指定特定设备类型在卸载介质之前必须经历的最短时间。在 defaults.conf 文件中,添加一个 equipment-type_delay = number-of-seconds 形式的指令,其中 equipment-type 是标识所配置驱动器类型的双字符 Oracle HSM 代码,number-of-seconds 是一个表示该设备类型的默认秒数的整数。

    有关设备类型代码和相应设备的列表,请参见附录 A 设备类型词汇表。在示例中,我们将 LTO 驱动器(设备类型 li)的卸载延迟从默认值(60 秒)更改为 90 秒:

    root@solaris:~# vi /etc/opt/SUNWsamfs/defaults.conf
    # These are the defaults.  To change the default behavior, uncomment the
    # appropriate line (remove the '#' character and change the value.
    ...
    li_delay = 90
    
  4. 如果需要,指定 Oracle HSM 软件在向库(将响应 SCSI unload 命令)发出新命令之前所等待的时间。在 defaults.conf 文件中,添加一个 equipment-type_unload = number-of-seconds 形式的指令,其中 equipment-type 是标识所配置驱动器类型的双字符 Oracle HSM 代码,number-of-seconds 是一个表示该设备类型的秒数的整数。

    有关设备类型代码和相应设备的列表,请参见附录 A 设备类型词汇表。设置在最糟糕情况下响应 unload 命令时库可能需要的最长时间。在示例中,我们将 LTO 驱动器(设备类型 li)的卸载延迟从默认值(15 秒)更改为 35 秒:

    root@solaris:~# vi /etc/opt/SUNWsamfs/defaults.conf
    # These are the defaults.  To change the default behavior, uncomment the
    # appropriate line (remove the '#' character and change the value.
    ...
    li_delay = 90
    li_unload = 35
    
  5. 如果需要,指定 Oracle HSM 在卸载空闲驱动器之前所等待的时间。在 defaults.conf 文件中,添加一个 idle_unload = number-of-seconds 形式的指令,其中 number-of-seconds 是一个表示指定秒数的整数。

    指定 0 可禁用此功能。在示例中,我们通过将默认值(600 秒)更改为 0 来禁用此功能:

    root@solaris:~# vi /etc/opt/SUNWsamfs/defaults.conf
    # These are the defaults.  To change the default behavior, uncomment the
    # appropriate line (remove the '#' character and change the value.
    ...
    li_delay = 90
    li_unload = 35
    idle_unload = 0
    
  6. 如果需要,指定 Oracle HSM 软件在卸载共享空闲驱动器之前所等待的时间。在 defaults.conf 文件中,添加一个 shared_unload = number-of-seconds 形式的指令,其中 number-of-seconds 是一个表示指定秒数的整数。

    您可以将 Oracle HSM 服务器配置为共享可移除介质驱动器。当拥有所装入介质的服务器并未实际使用驱动器时,该指令会释放驱动器,以供其他服务器使用。指定 0 可禁用此功能。在示例中,我们通过将默认值(600 秒)更改为 0 来禁用此功能:

    root@solaris:~# vi /etc/opt/SUNWsamfs/defaults.conf
    # These are the defaults.  To change the default behavior, uncomment the
    # appropriate line (remove the '#' character and change the value.
    ...
    idle_unload = 600
    li_delay = 90
    li_unload = 35
    idle_unload = 0
    shared_unload = 0
    
  7. 保存文件并关闭编辑器。

    root@solaris:~# vi /etc/opt/SUNWsamfs/defaults.conf
    # These are the defaults.  To change the default behavior, uncomment the
    # appropriate line (remove the '#' character and change the value.
    ...
    idle_unload = 600
    li_delay = 90
    li_unload = 35
    idle_unload = 0
    shared_unload = 0
    :wq
    root@solaris:~# 
    
  8. 现在,配置归档文件系统

配置归档文件系统

创建归档文件系统的过程与创建非归档文件系统的过程相同,不同之处在于我们添加了用于存储额外数据文件副本的设备:

  1. 首先配置 QFS 文件系统。可以配置通用 ms高性能 ma 文件系统。

    虽然可以使用 Oracle HSM Manager 图形用户界面来创建文件系统,但在本节的示例中,我们使用 vi 编辑器。在这里,我们使用系列集名称 samms 和设备序号 100 创建一个通用的 ms 文件系统:

    root@solaris:~# vi /etc/opt/SUNWsamfs/mcf 
    # Archiving file systems:
    #
    # Equipment              Equipment Equipment Family  Device Additional
    # Identifier             Ordinal   Type      Set     State  Parameters
    #----------------------- --------- --------- ------  ------ -------------------
    samms                    100       ms        samms   on
     /dev/dsk/c1t3d0s3        101       md        samms   on
     /dev/dsk/c1t3d0s4        102       md        samms   on 
    
  2. 要添加归档磁带存储,请先添加一个库条目。在设备标识符字段中,输入库的设备 ID 并分配设备序号:

    在本示例中,库设备标识符为 /dev/scsi/changer/c1t0d5。我们将设备序号设置为 900(即所选磁盘归档范围的下一个范围):

    # Archival storage for copies:
    #
    # Equipment              Equipment Equipment Family    Device Additional
    # Identifier             Ordinal   Type      Set       State  Parameters
    #----------------------- --------- --------- --------- ------ -----------------
    DISKVOL1                 800       ms        DISKVOL1  on
     /dev/dsk/c6t0d1s7        801       md        DISKVOL1  on
     /dev/dsk/c4t0d2s7        802       md        DISKVOL1  on
    /dev/scsi/changer/c1t0d5 900
    
  3. 将设备类型设置为 rb(一个通用 SCSI 连接磁带库),为磁带库系列集提供一个名称,并将设备状态设置为 on

    在本示例中,我们将使用库 library1

    # Archival storage for copies:
    #
    # Equipment              Equipment Equipment Family    Device Additional
    # Identifier             Ordinal   Type      Set       State  Parameters
    #----------------------- --------- --------- --------- ------ -----------------
    DISKVOL1                 800       ms        DISKVOL1  on
     /dev/dsk/c6t0d1s7        801       md        DISKVOL1  on
     /dev/dsk/c4t0d2s7        802       md        DISKVOL1  on
    /dev/scsi/changer/c1t0d5 900       rb        library1  on
    
  4. (可选)在 Additional Parameters 列中,输入将用于存储库目录的路径。

    如果未选择提供目录路径,则软件将会为您设置一个默认路径。

    请注意,由于文档布局的限制,示例中缩写了库目录的长路径 var/opt/SUNWsamfs/catalog/library1cat

    # Archival storage for copies:
    #
    # Equipment              Equipment Equipment Family    Device Additional
    # Identifier             Ordinal   Type      Set       State  Parameters
    #----------------------- --------- --------- --------- ------ -----------------
    DISKVOL1                 800       ms        DISKVOL1  on
     /dev/dsk/c6t0d1s7        801       md        DISKVOL1  on
     /dev/dsk/c4t0d2s7        802       md        DISKVOL1  on
    /dev/scsi/changer/c1t0d5 900       rb        library1  on     ...catalog/library1cat
    
  5. 接下来,为属于库系列集的每个磁带机添加一个条目。按照在库中的实际安装顺序添加每个驱动器。

    请遵循在确定驱动器在库中的安装顺序中创建的驱动器映射文件中所列的驱动器顺序。在示例中,附加到 Solaris /dev/rmt/1/dev/rmt/0/dev/rmt/2/dev/rmt/3 的驱动器分别是库中的驱动器 1234。因此,/dev/rmt/1mcf 文件中列出的第一个磁带机(作为设备 901)。tp 设备类型指定通用 SCSI 连接磁带机:

    # Archival storage for copies:
    #
    # Equipment              Equipment Equipment Family    Device Additional
    # Identifier             Ordinal   Type      Set       State  Parameters
    #----------------------- --------- --------- --------  ------ -----------------
    DISKVOL1                  800       ms        DISKVOL1 on
     /dev/dsk/c6t0d1s7         801       md        DISKVOL1 on
     /dev/dsk/c4t0d2s7         802       md        DISKVOL1 on
    /dev/scsi/changer/c1t0d5  900       rb        library1  on     ...catalog/library1cat
     /dev/rmt/1cbn             901       tp        library1  on
     /dev/rmt/0cbn             902       tp        library1  on
     /dev/rmt/2cbn             903       tp        library1  on
     /dev/rmt/3cbn             904       tp        library1  on
    
  6. 最后,如果您希望自行配置 Oracle HSM 历史记录,请使用设备类型 hy 添加一个条目。在系列集和设备状态列中输入一个连字符,并在附加参数列中输入历史记录目录的路径。

    历史记录是一个虚拟库,用于对已从归档中导出的卷进行编录。如果您未配置历史记录,则软件会使用指定的最高设备序号增加一来自动创建一个历史记录。

    请注意,由于页面布局的限制,我们在示例中缩写了历史记录目录的长路径。完整路径是 /var/opt/SUNWsamfs/catalog/historian_cat

    # Archival storage for copies:
    #
    # Equipment              Equipment Equipment Family    Device Additional
    # Identifier             Ordinal   Type      Set       State  Parameters
    #----------------------- --------- --------- --------- ------ -----------------
    DISKVOL1                 800       ms        DISKVOL1  on
     /dev/dsk/c6t0d1s7        801       md        DISKVOL1  on
     /dev/dsk/c4t0d2s7        802       md        DISKVOL1  on
    /dev/scsi/changer/c1t0d5 900       rb        library1  on     ...catalog/SL150cat
     /dev/rmt/0cbn            901       tp        library1  on
     /dev/rmt/1cbn            902       tp        library1  on
     /dev/rmt/2cbn            903       tp        library1  on
     /dev/rmt/3cbn            904       tp        library1  on
    historian                999       hy        -         -      ...catalog/historian_cat
    
  7. 保存 mcf 文件并关闭编辑器。

    ...
     /dev/rmt/3cbn            904       tp        library1  on
    historian                999       hy         -      -      ...catalog/historian_cat
    :wq
    root@solaris:~# 
    
  8. 运行 sam-fsd 命令检查 mcf 文件是否存在错误。更正发现的任何错误。

    sam-fsd 命令会读取 Oracle HSM 配置文件并初始化文件系统。该命令会在遇到以下错误时停止:

    root@solaris:~# sam-fsd
    Trace file controls:
    ...
    Would start sam-archiverd()
    Would start sam-stagealld()
    Would start sam-stagerd()
    Would start sam-amld()
    root@solaris:~# 
    
  9. 如果要使用一个或多个文件系统作为归档存储卷,请在文本编辑器中创建 /etc/opt/SUNWsamfs/diskvols.conf 文件,并为每个文件系统分配一个卷序列号 (volume serial number, VSN)。对于每个文件系统,创建一个新行,该行包含所需的卷序列号、空格和文件系统挂载点的路径。然后保存文件。

    在示例中,我们有三个基于磁盘的归档卷:DISKVOL1 是我们本地创建的专用于此目的的 QFS 文件系统。DISKVOL2DISKVOL15 是 UFS 文件系统。全部都挂载在 /diskvols/ 目录中:

    root@solaris:~# vi /etc/opt/SUNWsamfs/diskvols.conf
    # Volume 
    # Serial     Resource
    # Number     Path       
    # ------     ---------------------
    DISKVOL1     /diskvols/DISKVOL1
    DISKVOL2     /diskvols/DISKVOL2
    ...
    DISKVOL15     /diskvols/DISKVOL3
    
  10. 为新文件系统创建挂载点目录,并为挂载点设置访问权限。

    用户必须具有执行 (x) 权限才能转到挂载点目录并访问挂载的文件系统中的文件。在示例中,创建 /samms 挂载点目录并将权限设置为 755 (-rwxr-xr-x):

    root@solaris:~# mkdir /samms
    root@solaris:~# chmod 755 /samms
    
  11. 指示 Oracle HSM 软件重新读取 mcf 文件并相应地重新配置自身。更正报告的任何错误并根据需要重复

    root@solaris:~# /opt/SUNWsamfs/sbin/samd config
    Configuring SAM-FS
    root@solaris:~# 
    
  12. 接下来,挂载归档文件系统

挂载归档文件系统

  1. root 用户身份登录到文件系统主机。登录全局区域(如果主机已配置区域)。

  2. 备份 Solaris /etc/vfstab 文件,然后在文本编辑器中将其打开。

    在示例中,使用 vi 编辑器。

    root@solaris:~# cp /etc/vfstab /etc/vfstab.backup
    root@solaris:~# vi /etc/vfstab 
    #File
    #Device    Device   Mount     System  fsck  Mount    Mount
    #to Mount  to fsck  Point     Type    Pass  at Boot  Options
    #--------  -------  --------  ------  ----  -------  -------------------------
    /devices   -        /devices  devfs   -     no       -
    ...
    samms      -        /samms    samfs   -     yes      -
    
  3. 设置上限,即导致 Oracle HSM 从磁盘中释放先前归档文件的磁盘高速缓存利用率百分比。在 Oracle HSM 文件系统条目的最后一列中,输入挂载选项 high=percentage,其中 percentage 是 [0-100] 范围内的一个数字。

    根据磁盘存储容量、平均文件大小以及在任意给定时间所访问的估计文件数量设置该值。您希望确保始终有足够的高速缓存空间用于存储用户创建的新文件以及用户需要访问的归档文件。但您还希望尽量减少回写操作,以避免产生与挂载可移除介质卷相关的开销。

    如果使用最新高速磁盘或固态设备来实施主高速缓存,请将上限值设置为 95%。否则使用 80-85%。在示例中,我们将上限设置为 85%:

    root@solaris:~# cp /etc/vfstab /etc/vfstab.backup
    root@solaris:~# vi /etc/vfstab 
    #File
    #Device    Device   Mount     System  fsck  Mount    Mount
    #to Mount  to fsck  Point     Type    Pass  at Boot  Options
    #--------  -------  --------  ------  ----  -------  -------------------------
    /devices   -        /devices  devfs   -     no       -
    ...
    samms      -        /samms    samfs   -     yes      high=85
    
  4. 设置下限,即导致 Oracle HSM 从磁盘中停止释放先前归档文件的磁盘高速缓存利用率百分比。在 Oracle HSM 文件系统条目的最后一列中,输入挂载选项 low=percentage,其中 percentage 是 [0-100] 范围内的一个数字。

    根据磁盘存储容量、平均文件大小以及在任意给定时间所访问的估计文件数量设置该值。出于性能原因,您希望尽量将最近的活动文件保留在高速缓存中,特别是在经常请求和修改文件的情况下。这样可以将与回写相关的开销降至最低。但您不希望先前高速缓存的文件占用新文件所需的空间以及必须从归档副本回写到磁盘的新访问文件所需的空间。

    如果使用最新高速磁盘或固态设备来实施主高速缓存,请将下限值设置为 90%。否则使用 70-75%。在示例中,我们根据本地要求将上限设置为 75%:

    root@solaris:~# cp /etc/vfstab /etc/vfstab.backup
    root@solaris:~# vi /etc/vfstab 
    #File
    #Device    Device   Mount     System  fsck  Mount    Mount
    #to Mount  to fsck  Point     Type    Pass  at Boot  Options
    #--------  -------  --------  ------  ----  -------  -------------------------
    /devices   -        /devices  devfs   -     no       -
    ...
    samms      -        /samms    samfs   -     yes      high=85,low=75
    
  5. 如果在从磁盘释放先前归档的文件时用户需要将某些文件数据保留在磁盘中,请在 Oracle HSM 文件系统条目的最后一列中输入部分释放挂载选项。

    部分释放可以使 Oracle HSM 在释放归档文件以恢复磁盘空间时将指定文件的第一部分保留在磁盘高速缓存中。该方法将使应用程序能够即时访问文件开始部分的数据,而其余内容将从归档介质(如磁带)进行回写。以下挂载选项用于控制部分释放:

    • maxpartial=value 设置在文件部分释放到 value 时可以保留在磁盘高速缓存中的最大文件数据量,其中 value 是范围在 0-2097152 范围内的千字节数(为 0 时将禁用部分释放)。默认值为 16

    • partial=value 设置将某个文件部分释放到 value 之后仍位于磁盘高速缓存内的默认文件数据量,其中 value 是一个介于 [0-maxpartial] 范围内的千字节数。默认值为 16。但请注意,某个文件的保留部分始终使用一个至少等于一个磁盘分配单元 (Disk Allocation Unit, DAU) 的千字节数。

    • partial_stage=value 设置将整个部分释放的文件回写到 value 之前必须读取的最低文件数据量,其中 value 是一个介于 [0-maxpartial] 范围内的千字节数。默认值为 -o partial 指定的值(如果设置)或 16

    • stage_n_window=value 设置可在任何时间从文件(直接从磁带介质中读取该文件)中读取而无需自动回写的最大数据量。指定的 value 是一个介于 [64-2048000] 范围内的千字节数。默认值为 256

      有关从磁带介质中直接读取的文件的更多信息,请参见 stage 手册页 -n 下面的 OPTIONS(选项)一节。

    在示例中,基于应用程序的特征,我们将 maxpartial 设置为 128,将 partial 设置为 64;否则接受默认值:

    root@solaris:~# vi /etc/vfstab 
    #File
    #Device    Device   Mount     System  fsck  Mount    Mount
    #to Mount  to fsck  Point     Type    Pass  at Boot  Options
    #--------  -------  --------  ------  ----  -------  -------------------------
    /devices   -        /devices  devfs   -     no       -
    ...
    samms      -        /samms    samfs   -     yes      ... maxpartial=128,partial=64
    
  6. 如果需要从归档中排除 QFS 文件系统,请将 nosam 挂载选项添加到每个 QFS 文件的 /etc/vfstab 条目。

    在本示例中,我们为 DISKVOL1 文件系统(此为磁盘归档)设置了 nosam 选项。在此处,nosam 挂载选项可确保归档副本不会对自身进行归档:

    #File
    #Device           Device   Mount               System  fsck  Mount    Mount
    #to Mount         to fsck  Point               Type    Pass  at Boot  Options
    #--------         -------  ------------------  ------  ----  -------  ---------
    /devices          -        /devices            devfs   -     no       -
    ...
    samms             -        /samms              samfs   -     yes      ... ,partial=64
    DISKVOL1          -        /diskvols/DISKVOL1  samfs   -     yes      nosam
    server:/DISKVOL2  -        /diskvols/DISKVOL2  nfs     -     yes    
    ...  
    server:/DISKVOL15 -        /diskvols/DISKVOL15 nfs     -     yes
    
  7. 保存 /etc/vfstab 文件并关闭编辑器。

    ...
    server:/DISKVOL15 -        /diskvols/DISKVOL15 nfs     -     yes
    :wq
    root@solaris:~# 
    
  8. 挂载 Oracle HSM 归档文件系统

    root@solaris:~# mount /samms
    
  9. 接下来,配置归档过程

配置归档过程

创建并挂载归档文件系统后,通常只需完成少量的其他配置即可满足您的所有或大多数归档要求。在大多数情况下,您只需创建一个文本文件 archiver.cmd,该文件可标识文件系统,为您指定各个归档副本数量并为每个副本分配介质卷。

虽然 Oracle HSM 归档过程提供了许多可调参数,但如果没有定义明确的特殊要求,则通常应接受默认设置。这些默认设置均经过仔细挑选,可以在尽可能广泛的情况下最大限度减少介质挂载数量,最大限度提高介质利用率以及优化端到端归档性能。因此,如果需要进行调整,请特别注意会不必要地限制归档程序自由安排工作和选择介质的任何更改。如果尝试对存储操作进行微观管理,有时可能会大幅降低性能和总体效率。

但是,几乎在所有情况下,您都应启用归档日志记录。默认情况下不启用归档日志记录,因为日志文件如未得到妥善管理,可能会过大(在《Oracle Hierarchical Storage Manager and StorageTek QFS Software 维护和管理指南》中介绍了如何管理日志文件)。但是,如果文件系统损坏或丢失,归档日志文件可帮助您恢复文件,而您通常无法通过其他方式轻松恢复此类文件。如果您配置文件系统保护,则恢复点文件中的文件系统元数据可帮助您基于归档副本中存储的数据快速重新构建一个文件系统。但是,在文件系统损坏或丢失之前但在最后一个恢复点生成之后,不可避免地会归档几个文件。在这种情况下,归档介质会保留有效副本,但如果缺少文件系统元数据,则无法自动定位这些副本。由于文件系统的归档日志中记录了保留每个归档副本的介质的卷序列号以及每个卷内相应 tar 文件的位置,因此可使用 tar 实用程序来恢复这些文件并完全恢复文件系统。

要创建 archiver.cmd 文件并配置归档过程,请执行如下操作:

  1. root 用户身份登录主机。

    root@solaris:~# 
    
  2. 在文本编辑器中打开新的 /etc/opt/SUNWsamfs/archiver.cmd 文件。

    archiver.cmd 中的每一行都由通过空格分隔的一个或多个字段组成(忽略前导空格)。

    在示例中,使用 vi 编辑器打开该文件并输入一条注释:

    root@solaris:~# vi /etc/opt/SUNWsamfs/archiver.cmd
    # Configuration file for archiving file systems
    
  3. archiver.cmd 文件的开头,输入所需的任何常规归档指令。

    常规指令在第二个字段内包含等号 (=) 字符或不包含其他字段。在大多数情况下,您可以使用默认值而无需设置常规指令(有关详细信息,请参见 archiver.cmd 手册页的 GENERAL DIRECTIVES SECTION(常规指令部分))。

    在示例中,虽然可以将此部分留空,但我们还是输入了两个常规指令的默认值以便说明此类指令的格式:

    • archivemeta = off 指令告知归档过程不应归档元数据。

    • examine = noscan 指令告知归档过程当文件系统报告文件被更改时检查需要归档的文件(默认值)。

      早期版本的 Oracle HSM 会定期扫描整个文件系统。通常,您不应更改此指令,除非为与先前 Oracle HSM 配置相兼容而必须这样做。

    # Configuration file for archiving file systems
    #-----------------------------------------------------------------------
    # General Directives
    archivemeta = off                                              # default
    examine = noscan                                               # default
    
  4. 输入所需的所有常规归档指令后,着手将文件分配到归档集。在一个新行上,输入分配指令 fs = filesystem-name,其中 filesystem-name/etc/opt/SUNWsamfs/mcf 文件中定义的某个文件系统的系列集名称。

    分配指令将指定文件系统中的一组文件映射到归档介质上的一组副本。一组文件既可以像所有文件系统那样大,也可以像几个文件那样小。但为获得最佳性能和效率,不应过度指定。所创建的归档集数量不应多于实际需求量,否则会导致过多的介质挂载量、不必要的介质重新定位以及较低的总体介质利用率。在大多数情况下,只需为每个文件系统分配一个归档集。

    在示例中,我们针对归档文件系统 samms 启动归档集分配指令:

    # Configuration file for archiving file systems
    #-----------------------------------------------------------------------
    # General Directives
    archivemeta = off                                              # default
    examine = noscan                                               # default
    #-----------------------------------------------------------------------
    # Archive Set Assignments 
    fs = samms                                       # Archiving File System
    
  5. 在下一行上,启用归档日志记录。输入 logfile = path/filename 指令,其中 path/filename 用于指定位置和文件名。

    如上文所述,归档日志数据对完全恢复丢失的文件系统至关重要。因此,将 Oracle HSM 配置为向一个非 Oracle HSM 指令(例如 /var/adm/)写入归档程序日志并定期保存副本。虽然您可以创建一个全局 archiver.log 为所有文件系统一起记录归档程序活动,但分别为每个文件系统配置一个日志更便于在文件恢复过程中搜索相关日志。因此,在示例中,使用文件系统分配指令来指定 /var/adm/samms.archiver.log

    root@solaris:~# vi /etc/opt/SUNWsamfs/archiver.cmd
    ...
    #-----------------------------------------------------------------------
    # Archive Set Assignments 
    fs = samms                                       # Archiving File System
    logfile = /var/adm/samms.archiver.log
    
  6. 在下一行上,将此文件系统中的文件分配到归档集。针对需要创建的每个归档集,输入指令 archiveset-name starting-directory expression,其中:

    • archiveset-name 是您为新归档集选择的名称。

    • starting-directory 是 Oracle HSM 从中开始搜索文件的目录的路径(相对于文件系统挂载点而言)。

    • expression 是由 Solaris find 命令定义的一个布尔型表达式。

    在大多数情况下,应使归档集定义尽可能宽泛而简单。但请注意,如遇特殊情况,可通过指定其他更加严格的限定符(例如用户或组文件拥有权、文件大小、文件日期/时间戳和文件名(使用正则表达式))对归档集成员加以限制。有关完整信息,请参见 archiver.cmd 手册页。

    在示例中,我们将在 samms 文件系统中找到的所有文件都输入到一个名为 allsamms 的归档集中。我们使用一个点 (.) 来指定路径,以便在自身挂载点目录 (/samms) 中进行搜索。

    ...
    #-----------------------------------------------------------------------
    # Archive Set Assignments 
    fs = samms                                       # Archiving File System
    logfile = /var/adm/samms.archiver.log
    allsamms .
    
  7. 接下来,为 samms 文件系统的 allsamms 归档集添加复制指令。针对每个副本,以一个或多个空格开始行输入,然后输入指令 copy-number -release -norelease archive-age unarchive-age,其中:

    • copy-number 是一个整数。

    • -release-norelease 是可选参数,用于控制进行复制后如何控制磁盘高速缓存空间。生成相应副本之后,-release 会自行释放磁盘空间。生成设有 -norelease所有副本运行释放程序进程之前,-norelease 会自行阻止磁盘空间释放。生成设有 -norelease 的所有副本之后,-release-norelease 会联合自动释放磁盘高速缓存空间。

    • archive-age 是从文件上次修改时间到文件归档之前必须经过的时间。将时间表示为整数和标识符 s(秒)、m(分)、h(小时)d(天)、w(周)和y(年)的任意组合。默认设置为 4m

    • unarchive-age 是从文件上次修改时间到文件可取消归档之前必须经过的时间。默认值为从不取消归档副本。

    为实现完全冗余,始终至少为每个归档集指定两个副本(最多四个)。在示例中,我们指定三个副本,其中每个副本都设有 -norelease,直到该副本达到归档时间(15 分钟)。将使用磁盘归档卷生成副本 1,而副本 2 和副本 3 则生成到磁带介质:

    ...
    #-----------------------------------------------------------------------
    # Archive Set Assignments 
    fs = samms                                       # Archiving File System
    logfile = /var/adm/samms.archiver.log
    allsamms .
        1 -norelease 15m
        2 -norelease 15m
        3 -norelease 15m
    
  8. 为所有剩余文件系统定义归档集。

    在示例中,我们将 QFS 文件系统 DISKVOL1 配置为复制过程的归档介质。因此,我们为 fs = DISKVOL1 启动一个条目。但我们不希望生成归档副本的归档副本。所以我们不指定日志文件,我们使用一个名为 no_archive 的特殊归档集,以阻止归档此文件系统中的文件:

    ...
    #-----------------------------------------------------------------------
    # Archive Set Assignments 
    fs = samms                                       # Archiving File System
    logfile = /var/adm/samms.archiver.log
    allsamms .
        1 -norelease 15m
        2 -norelease 15m
        3 -norelease 15m
    fs = DISKVOL1                          # QFS File System (Archival Media)
    no_archive .
    
  9. 接下来,我们输入一些用于控制副本创建方式的指令。在一个新行上,通过输入关键字 params 开始复制参数部分。

    ...
    fs = DISKVOL1                          # QFS File System (Archival Media)
    no_archive .
    #-----------------------------------------------------------------------
    # Copy Parameter Directives
    params 
    
  10. 如果您需要设置适用于所有归档集的所有副本的任何通用复制参数,请按以下格式输入一行:allsets -param value ...。其中,allsets 是代表所有已配置归档集的特殊归档集,-param value ... 代表通过空格分隔的一个或多个参数/值对。

    有关参数及参数值的完整说明,请参见 archiver.cmd 手册页的 ARCHIVE SET COPY PARAMETERS SECTION(归档集复制参数部分)一节。

    示例中的指令对于大多数文件系统而言都是最理想的选择。特殊 allsets 归档集可确保统一处理所有归档集,从而获得最佳性能并简化管理。-sort path 参数可确保适用于所有归档集的所有副本的磁带归档 (tar) 文件按路径进行排序,这样一来,位于相同目录中的文件在归档介质上仍然保存在一起。-offline_copy stageahead 参数可在归档脱机文件时改善性能:

    ...
    #-----------------------------------------------------------------------
    # Copy Parameter Directives
    params
    allsets -sort path -offline_copy stageahead
    
  11. 如果您需要为所有归档集中的特定副本设置复制参数,请按以下格式输入一行:allfiles.copy-number -param value ...。其中,allsets 是代表所有已配置归档集的特殊归档集,copy-number 是该指令将应用到的副本的数量,-param value ... 代表通过空格分隔的一个或多个参数/值对。

    有关参数及参数值的完整说明,请参见 archiver.cmd 手册页的 ARCHIVE SET COPY PARAMETERS SECTION(归档集复制参数部分)一节。

    在示例中,指令 allfiles.1 -startage 10m -startsize 500M -drives 10 -archmax 1G 可优化磁盘卷的副本 1。当为归档选择的第一个文件已等待 10 分钟,或所有等待文件的总大小至少为 500 兆字节时,该指令开始归档。最多可使用 10 个驱动器生成副本,并且副本中的每个 tar 文件不得大于一千兆字节。

    其余两个指令 allfiles.2 -startage 24h -startsize 20G -drives 2 -archmax 24G -reserve setallfiles.3 -startage 48h -startsize 20G -drives 2 -archmax 24G -reserve set 可分别优化磁带介质的副本 2 和副本 3。当为归档选择的第一个文件已分别等待 24 或 48 小时,或所有等待文件的总大小至少为 20 千兆字节时,这两个指令开始归档。最多可使用 2 个驱动器生成这些副本(可根据您的基础结构调整此数值),并且副本中的每个 tar 文件不得大于 24 千兆字节。-reserve set 可确保使用磁带介质生成每个归档集的副本 2 和副本 3,并且仅包含来自同一个归档集的副本:

    ...
    #-----------------------------------------------------------------------
    # Copy Parameter Directives
    params
    allsets -sort path -offline_copy stageahead
    allfiles.1 -startage 10m -startsize 500M -drives 10 -archmax 1G
    allfiles.2 -startage 24h -startsize 20G -drives 2 -archmax 24G -reserve set
    allfiles.3 -startage 48h -startsize 20G -drives 2 -archmax 24G -reserve set
    

    请注意,本节中的示例假定使用磁盘卷进行归档。如果只使用磁带卷,请指定两个副本并且更加频繁地归档到磁带。根据您的基础结构调整指定的驱动器数量之后,以下配置对于大多数文件系统而言都是最理想的选择:

    allsets -sort path -offline_copy stageahead -reserve set
    allfiles.1 -startage 8h -startsize 8G -drives 2 -archmax 10G
    allfiles.2 -startage 24h -startsize 20G -drives 2 -archmax 24G
    
  12. 如果您需要为特定归档集设置一个指令并复制,请按以下格式输入一行:archive-set-name.copy-number -param value ...。其中,archive-set-name 是用于该归档集的名称,copy-number 是该指令将应用到的副本的数量,-param value ... 代表通过空格分隔的一个或多个参数/值对。

    有关参数及参数值的完整说明,请参见 archiver.cmd 手册页的 ARCHIVE SET COPY PARAMETERS SECTION(归档集复制参数部分)一节。

    在以下示例中,我们为 corpfs 文件系统定义了两个归档集:hqbranches。请注意,hq.1hq.2 的复制指令仅适用于归档集 hq。归档集 branches 不受影响:

    #-----------------------------------------------------------------------
    # Archive Set Assignments 
    fs = corpfs
    logfile = /var/adm/corporatefs.archive.log
    hq /corpfs/hq/
        1 -norelease 15m
        2 -norelease 15m
    branches /corpfs/branches/
        1 -norelease 15m
        2 -norelease 15m
    #-----------------------------------------------------------------------
    # Copy Parameter Directives
    params
    hq.1 -drives 4 
    hq.2 -drives 2 
    
  13. 设置完所有所需的复制参数之后,通过在一个新行上输入 endparams 关键字来关闭复制参数列表:

    root@solaris:~# vi /etc/opt/SUNWsamfs/archiver.cmd
    ...
    #-----------------------------------------------------------------------
    # Copy Parameter Directives
    params
    allsets -sort path -offline_copy stageahead
    allfiles.1 -startage 10m -startsize 500M -drives 10 -archmax 1G
    allfiles.2 -startage 24h -startsize 20G -drives 2 -archmax 24G -reserve set
    allfiles.3 -startage 48h -startsize 20G -drives 2 -archmax 24G -reserve set
    endparams
    
  14. 或者,您也可以通过输入 vsnpools 关键字和以下格式的一个或多个指令来定义介质池:pool-name media-type volumes。其中,pool-name 是您为该介质池分配的名称,media-type 是在附录 A 设备类型词汇表中定义的一个介质类型代码,volumes 是一个与一个或多个卷序列号 (Volume Serial Number, VSN) 相匹配的正则表达式。使用 endvsnpools 关键字关闭指令列表。

    介质池可选,而且您通常不希望限制可供归档过程使用的介质。因此,在这些示例中,我们不定义介质池。有关更多信息,请参见 archiver.cmd 手册页的 VSN POOL DEFINITIONS SECTION(VSN 池定义部分)。

  15. 接下来,开始标识归档集副本应使用的归档介质。在一个新行上,输入关键字 vsns

    ...
    #-----------------------------------------------------------------------
    # Copy Parameter Directives
    params
    allsets -sort path -offline_copy stageahead
    allfiles.1 -startage 10m -startsize 500M -drives 10 -archmax 1G
    allfiles.2 -startage 24h -startsize 20G -drives 2 -archmax 24G -reserve set
    allfiles.3 -startage 48h -startsize 20G -drives 2 -archmax 24G -reserve set
    endparams
    #-----------------------------------------------------------------------
    # VSN Directives
    vsns
    
  16. 通过以 archive-set-name.copy-number media-type volumes 格式输入一行来指定每个归档集副本的介质,其中,archive-set-name.copy-number 指定指令所应用于的归档集和副本,media-type 是在附录 A 设备类型词汇表中定义的介质类型代码之一,volumes 是与一个或多个卷序列号 (volume serial number, VSN) 相匹配的正则表达式。

    为实现完全冗余,始终将每个归档集副本分配给不同的介质范围,以便两个副本永不驻留在同一物理卷上。如果可能,始终将至少一个副本分配给可移除介质(如磁带)。

    在示例中,我们将每个归档集的第一个副本发送到卷序列号介于 DISKVOL1DISKVOL15 范围内的归档磁盘介质(类型 dk)。我们将每个归档集的第二个副本发送到卷序列号介于 VOL000VOL199 范围内的磁带介质(类型 tp),将第三个副本发送到卷序列号介于 VOL200VOL399 范围内的磁带介质(类型 tp):

    ...
    #-----------------------------------------------------------------------
    # Copy Parameter Directives
    params
    allsets -sort path -offline_copy stageahead
    allfiles.1 -startage 10m -startsize 500M -drives 10 -archmax 1G
    allfiles.2 -startage 24h -startsize 20G -drives 2 -archmax 24G -reserve set
    allfiles.3 -startage 48h -startsize 20G -drives 2 -archmax 24G -reserve set
    endparams
    #-----------------------------------------------------------------------
    # VSN Directives
    vsns
    allfiles.1 dk DISKVOL[1-15] 
    allfiles.2 tp VOL[0-1][0-9][0-9]
    allfiles.2 tp VOL[2-3][0-9][0-9]
    
  17. 指定所有归档集副本的介质后,通过在一个新行上输入 endvsns 关键字来关闭 vsns 指令。保存文件并关闭编辑器。

    ...
    #-----------------------------------------------------------------------
    # Copy Parameter Directives
    params
    allsets -sort path -offline_copy stageahead
    allfiles.1 -startage 10m -startsize 500M -drives 10 -archmax 1G
    allfiles.2 -startage 24h -startsize 20G -drives 2 -archmax 24G -reserve set
    allfiles.3 -startage 48h -startsize 20G -drives 2 -archmax 24G -reserve set
    endparams
    #-----------------------------------------------------------------------
    # VSN Directives
    vsns
    allfiles.1 dk DISKVOL[1-15] 
    allfiles.2 tp VOL[0-1][0-9][0-9]
    allfiles.2 tp VOL[2-3][0-9][0-9]
    endvsns
    :wq
    root@solaris:~# 
    
  18. 检查 archiver.cmd 文件中的错误。使用命令 archiver -lv

    archiver -lv 命令将 archiver.cmd 文件输出到屏幕,如果未发现错误将生成一个配置报告。否则,将记录所有错误并停止。示例中有一个错误:

    root@solaris:~# archiver -lv
    Reading '/etc/opt/SUNWsamfs/archiver.cmd'.
    ...
    13: #   File System Directives
    14: #
    15: fs = samms
    16: logfile = /var/adm/samms.archiver.log
    17: all .
    18:     1 -norelease 15m
    19:     2 -norelease 15m
    20: fs=DISKVOL1                           # QFS File System (Archival Media)
    21: 
    ...
    42: endvsns
    DISKVOL1.1 has no volumes defined
    1 archive set has no volumes defined
    root@solaris:~# 
    
  19. 如果在 archiver.cmd 文件中发现错误,请对其进行更正,然后重新检查该文件。

    在上面的示例中,我们忘记将 no_archive 指令输入到文件系统指令 DISKVOL1 中(即配置为磁盘归档的 QFS 文件系统)。更正该疏忽后,archiver -lv 运行且无错误:

    root@solaris:~# archiver -lv
    Reading '/etc/opt/SUNWsamfs/archiver.cmd'.
    ...
    20: fs=DISKVOL1                           # QFS File System (Archival Media)
    21: no_archive .
    ...
    42: endvsns
    Notify file: /etc/opt/SUNWsamfs/scripts/archiver.sh
    ...
    allfiles.1
        startage: 10m startsize: 500M drives 10: archmax: 1G
     Volumes:  
      DISKVOL1 (/diskvols/DISKVOL15)
      ...
      DISKVOL15 (/diskvols/DISKVOL3)
     Total space available:   150T
    allfiles.2
        startage: 24h startsize: 20G drives: 2 archmax: 24G reserve: set
     Volumes:
       VOL000
    ...
       VOL199
     Total space available:  300T
    allfiles.3
        startage: 48h startsize: 20G drives: 2 archmax: 24G reserve: set
     Volumes:
       VOL200
    ...
       VOL399
     Total space available:  300T
    root@solaris:~# 
    
  20. 指示 Oracle HSM 软件重新读取 archiver.cmd 文件并相应地重新配置自身。使用 samd config 命令。

    root@solaris:~# /opt/SUNWsamfs/sbin/samd config
    Configuring SAM-FS
    root@solaris:~# 
    
  21. 在文本编辑器中打开 /etc/opt/SUNWsamfs/releaser.cmd 文件,添加 list_size = 300000 行,保存文件并关闭编辑器。

    list_size 指令将可从文件系统同时释放的文件数设置为一个介于 [10-2147483648] 范围内的整数。如果 .inodes 文件中有足够的空间供一百万个 inode 使用(每个 inode 允许 512 个字节),默认值则为 100000。否则,默认值为 30000。将此数字增加到 300000 可以更好地符合包含大量小文件的典型文件系统。

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

    root@solaris:~# vi /etc/opt/SUNWsamfs/releaser.cmd
    #       releaser.cmd
    logfile = /var/opt/SUNWsamfs/releaser.log
    list_size = 300000
    :wq
    root@solaris:~# 
    
  22. 在文本编辑器中打开 /etc/opt/SUNWsamfs/stager.cmd 文件,添加 maxactive = stage-requests 行,其中,在 RAM 大于等于 8 千兆字节和小于 8 千兆字节的主机上,stage-requests 分别为 500000100000。保存文件并关闭编辑器。

    maxactive 指令将可同时激活的最大回写请求数设置为一个介于 [1-500000] 范围内的整数。默认情况是允许每千兆字节主机内存 5000 个回写请求。

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

    root@solaris:~# vi /etc/opt/SUNWsamfs/stager.cmd
    #       stager.cmd
    logfile = /var/opt/SUNWsamfs/stager.log
    maxactive = 300000
    :wq
    root@solaris:~# 
    
  23. 默认情况下不启用回收。因此,如果需要回收可移除介质卷,请转到配置回收过程

  24. 如果归档 Oracle HSM 文件系统的 mcf 文件在归档设备部分中包括网络连接磁带库,请转到存储在网络连接磁带库中的目录归档介质

  25. 如果您需要具备验证归档磁带卷完整性的能力,请转到配置归档介质验证

  26. 否则,配置文件系统保护

配置回收过程

当可移除介质卷包含的有效归档集少于用户指定的有效归档集时,回收程序将合并其他卷上的有效数据,以便原始卷可以导出以供长期存储或可重新添加标签以供重新使用。可通过两种方式之一配置回收:

  • 配置按归档集回收

    按归档集回收介质时,会将回收指令添加到 archiver.cmd 文件中。您可以精确地指定如何回收每个归档集中的介质。回收条件的应用范围更小,因为仅考虑归档集成员。

    如果可能,请按归档集而非库回收介质。在 Oracle HSM 归档文件系统中,从逻辑上看,回收属于文件系统操作而非库管理的一部分。回收补充归档、释放和回写。因此,可以将其配置为归档过程的一部分。请注意,如果您的配置包括磁盘归档卷和/或 SAM-Remote,则必须按归档集配置回收。

  • 配置按库回收

    按库回收介质时,会将回收指令添加到 recycler.cmd 文件中。因此,您可以为指定的库中包含的所有介质设置公共回收参数。回收指令适用于库中的所有卷,因此,它们的固有细化程度低于归档集特定指令。您可以从检查中显式排除指定的卷序列号 (volume serial number, VSN)。但在其他方面,回收过程只寻找包含未识别为当前有效归档文件的卷。

    因此,按库进行回收会销毁不是待回收文件系统组成部分的文件。如果回收指令未显式排除它们,有用数据(例如,来自其他文件系统的归档日志和库目录或归档介质的备份副本)可能面临风险。为此,如果您使用的是 SAM-Remote,则无法按库进行回收。库中由 SAM-Remote 服务器控制的卷包含客户机而非服务器所拥有的外部归档文件。

配置按归档集回收

  1. root 用户身份登录到 Oracle HSM 文件系统主机。

    root@solaris:~# 
    
  2. 在文本编辑器中打开 /etc/opt/SUNWsamfs/archiver.cmd 文件,向下滚动到副本 params 部分。

    在示例中,使用 vi 编辑器。

    root@solaris:~# vi /etc/opt/SUNWsamfs/archiver.cmd
    ...
    #-----------------------------------------------------------------------
    # Copy Parameter Directives
    params
    allsets -sort path -offline_copy stageahead
    allfiles.1 -startage 6h  -startsize 6G  -startcount 500000
    allfiles.2 -startage 24h -startsize 20G -startcount 500000 -drives 5
    
  3. archiver.cmd 文件的 params 部分中,按归档集输入您的回收程序指令,格式为 archive-set directive-list,其中,archive-set 是其中一个归档集,directive-list 是指令名称/值对的空格分隔列表(有关回收指令的列表,请参见 archiver.cmd 手册页)。然后保存文件并关闭编辑器。

    在示例中,我们为归档集 allfiles.1allfiles.2 添加回收指令。-recycle_mingain 30-recycle_mingain 90 指令不回收卷,除非可分别恢复至少 30% 和 90% 的卷容量。当可移除介质的已用容量达到 60% 时,-recycle_hwm 60 指令开始回收。

    root@solaris:~# vi /etc/opt/SUNWsamfs/archiver.cmd
    ...
    #-----------------------------------------------------------------------
    # Copy Parameters Directives
    params
    allsets -sort path -offline_copy stageahead
    allfiles.1 -startage 6h  -startsize 6G -startcount 500000
    allfiles.1 -recycle_mingain 30 -recycle_hwm 60
    allfiles.2 -startage 6h -startsize 6G -startcount 500000 
    allfiles.2 -recycle_mingain 90 -recycle_hwm 60
    endparams
    #-----------------------------------------------------------------------
    # VSN Directives
    vsns
    allfiles.1 dk DISKVOL1
    allfiles.2 tp VOL0[0-1][0-9] 
    endvsns
    :wq
    [root@solaris:~# 
    
  4. 检查 archiver.cmd 文件中的错误。使用命令 archiver -lv

    archiver -lv 命令读取 archiver.cmd,如果未发现错误将生成一个配置报告。否则,将记录所有错误并停止。在本示例中,该文件不包含任何错误:

    root@solaris:~# archiver -lv
    Reading '/etc/opt/SUNWsamfs/archiver.cmd'.
    ...
       VOL399
     Total space available:  300T
    root@solaris:~# 
    
  5. 如果在 archiver.cmd 文件中发现错误,请对其进行更正,然后重新检查该文件。

  6. 在文本编辑器中创建 recycler.cmd 文件。指定回收程序日志的路径和文件名。然后保存文件并关闭编辑器。

    配置 Oracle HSM 以将日志写入到非 Oracle HSM 目录,例如 /var/adm/。在示例中,使用 vi 编辑器并指定 /var/adm/recycler.log

    root@solaris:~# vi /etc/opt/SUNWsamfs/recycler.cmd
    logfile = /var/adm/recycler.log
    :wq
    root@solaris:~# 
    
  7. 在文本编辑器中打开 /etc/opt/SUNWsamfs/scripts/recycler.sh 脚本,然后输入用于处理已回收的可移除介质卷的 shell 命令。

    当回收过程标识已耗尽有效归档副本的可移除介质卷时,将调用 recycler.sh 文件(用于处理已回收介质的 C-shell 脚本)。

    编辑该文件以执行所需任务,从通知管理员卷已准备就绪可进行回收到重新为卷设置标签以供重新使用或从库导出卷以便长期历史保留。

    默认情况下,脚本提醒 root 用户设置该脚本。

  8. 如果归档 Oracle HSM 文件系统的 mcf 文件在归档设备部分中包括网络连接磁带库,请转到存储在网络连接磁带库中的目录归档介质

  9. 否则,请转至配置文件系统保护

配置按库回收

  1. root 用户身份登录到 Oracle HSM 文件系统主机。

    root@solaris:~# 
    
  2. 在文本编辑器中创建 /etc/opt/SUNWsamfs/recycler.cmd 文件。

    在示例中,使用 vi 编辑器。

    root@solaris:~# vi /etc/opt/SUNWsamfs/recycler.cmd
    # Configuration file for archiving file systems
    #-----------------------------------------------------------------------
    
  3. 使用 logfile 指令指定回收程序日志的路径和文件名。

    配置 Oracle HSM 以将日志写入到非 Oracle HSM 目录,例如 /var/adm/。在示例中,我们指定 /var/adm/recycler.log

    root@solaris:~# vi /etc/opt/SUNWsamfs/recycler.cmd
    # Configuration file for archiving file systems
    #-----------------------------------------------------------------------
    logfile = /var/adm/recycler.log
    
  4. 如果归档介质库中存在任何不得回收的卷,请输入指令 no_recycle media-type volumes,其中,media-type 是在附录 A 设备类型词汇表中定义的介质类型代码之一,volumes 是与一个或多个卷序列号 (volume serial number, VSN) 相匹配的正则表达式。

    在示例中,我们对 [VOL020-VOL999] 范围内的卷禁用回收:

    root@solaris:~# vi /etc/opt/SUNWsamfs/recycler.cmd
    # Configuration file for archiving file systems
    #-----------------------------------------------------------------------
    logfile = /var/adm/recycler.log
    no_recycle tp VOL[0-9][2-9][0-9]
    
  5. 在一个新行上,输入指令 library parameters,其中,library/etc/opt/SUNWsamfs/mcf 文件分配给可移除介质库的系列集名称,parameters 是从以下列表提取的参数/值对的空格分隔列表:

    • -dataquantity size 将可计划用于同时重新归档的最大数据量设置为 size,其中,size 是字节数。默认值为 1 GB。

    • -hwm percent 设置库的上限(触发回收时已用的总介质容量百分比)。上限以 percent([0-100] 范围内的数字)指定。默认值为 95

    • -ignore 防止回收此库,因此您可以对 recycler.cmd 文件进行无损测试。

    • -mail addressaddress 发送回收消息,其中,address 是有效电子邮件地址。默认情况下,不发送任何消息。

    • -mingain percent 将回收限制为可至少按最小量增加可用空间的卷,以总容量的百分比表示。最小增益以 percent([0-100] 范围内的一个数字)指定。对于总容量低于 200 千兆字节的卷,默认值为 60;对于容量大于等于 200 千兆字节的卷,默认值则为 90

    • -vsncount count 将可计划用于同时重新归档的最大卷数设置为 count。默认值为 1

    在示例中,我们将库 library1 的上限设置为 95%,而且要求每个磁带的最小容量增益为 60%:

    root@solaris:~# vi /etc/opt/SUNWsamfs/recycler.cmd
    # Configuration file for archiving file systems
    #-----------------------------------------------------------------------
    logfile = /var/adm/recycler.log
    no_recycle tp VOL[0-9][2-9][0-9]
    library1 -hwm 95 -mingain 60
    
  6. 对 Oracle HSM 配置中的任何其他库重复之前步骤。然后保存 recycler.cmd 文件并关闭编辑器。

    root@solaris:~# vi /etc/opt/SUNWsamfs/recycler.cmd
    # Configuration file for archiving file systems
    #-----------------------------------------------------------------------
    logfile = /var/adm/recycler.log
    no_recycle tp VOL[0-9][2-9][0-9]
    library1 -hwm 95 -mingain 60
    :wq
    root@solaris:~# 
    
  7. 如果归档 Oracle HSM 文件系统的 mcf 文件在归档设备部分中包括网络连接磁带库,请转到存储在网络连接磁带库中的目录归档介质

  8. 否则,请转至配置文件系统保护

存储在网络连接磁带库中的目录归档介质

挂载文件系统后,Oracle HSM 软件会为 mcf 文件中配置的每个自动化库创建目录。不过,如果您具有网络连接库,则必须执行一些额外的步骤以填充其目录。

执行如下操作:

  1. root 用户身份登录到文件系统主机。

    root@solaris:~# 
    
  2. 如果归档文件系统使用 Oracle StorageTek ACSLS 连接磁带库,请从库的临时池提取所需 Oracle HSM 归档介质并自动生成目录。使用 samimport -c volumes -s pool 命令,其中,volumes 是所需卷数,pool 是为库定义的临时介质池的名称。在此处停止。

    在示例中,我们请求从名为 scratch 的池提取 20 个磁带卷:

    root@solaris:~# samimport -c 20 -s scratch
    
  3. 如果归档文件系统使用配置为单个非共享逻辑库的 IBM 3494 网络连接库,请将所需磁带卷置于库中转槽中并让库自动为其创建目录。在此处停止。

    mcf 文件的 Additional Parameters 字段指定 access=private 时,IBM 3494 库被配置为单个逻辑库。如果 access=shared,IBM 3494 库则分成多个逻辑库,而且您必须使用下面指定的方法。

  4. 否则,如果归档文件系统使用共享 IBM 3494 网络连接库或任何其他网络连接库,请使用文本编辑器创建目录输入文件。

    在示例中,使用 vi 编辑器创建文件 input3494cat

    root@solaris:~# vi input3494cat
    ~
    "~/input3494cat" [New File]
    
  5. 通过输入记录 index 来启动记录。始终针对第一条记录输入 0(零),然后递增每个后续记录的索引。输入空格以指示字段的结尾。

    行定义 build_cat 输入文件中的记录和空格分隔字段。第一个字段 index 的值只是一个从 0 开始的连续整数,用于标识 Oracle HSM 目录内的记录。在示例中,这是第一条记录,因此我们输入 0

    0 
    ~
    "~/input3494cat" [New File]
    
  6. 在记录的第二个字段中,输入磁带卷的卷序列号 (volume serial number, VSN);如果没有 VSN,请输入一个 ?(问号)。然后输入空格以指示字段的结尾。

    将包含空格字符(如果有)的值用双引号括住:"VOL 01"。在本示例中,第一个卷的 VSN 不包含空格:

    0 VOL001 
    ~
    "~/input3494" [New File]
    
  7. 在第三个字段中,输入卷的条形码(如果与卷序列号不同)、卷序列号;如果没有卷序列号,请输入字符串 NO_BAR_CODE。然后输入空格以指示字段的结尾。

    在示例中,第一个卷的条形码与 VSN 的值相同:

    0 VOL001 VOL001 
    ~
    "~/input3494cat" [New File]
    
  8. 最后,在第四个字段中,输入卷的介质类型。然后输入空格以指示字段的结尾。

    介质类型为双字母代码,如 li(对于 LTO 介质)(有关介质设备类型的综合列表,请参见附录 A 设备类型词汇表)。在示例中,使用包含 LTO 磁带机的 IBM 3494 网络连接磁带库,因此我们输入 li (包含终止空格):

    0 VOL001 VOL001 li 
    ~
    "~/input3494cat" [New File]
    
  9. 针对要与 Oracle HSM 配合使用的每个卷,重复步骤 3-6 以创建其他记录。然后保存文件。

    0 VOL001 VOL001 li 
    1 VOL002 VOL002 li 
    ...
    13 VOL014 VOL014 li 
    :wq
    root@solaris:~# 
    
  10. 使用 build_cat input-file catalog-file 命令创建目录,其中,input-file 是输入文件的名称,catalog-file 是库目录的完整路径。

    如果已在 mcf 文件的 Additional Parameters 字段中指定目录名称,请使用该名称。否则,如果未创建目录,Oracle HSM 软件将使用文件名 family-set-name/var/opt/SUNWsamfs/catalog/ 目录中创建默认目录,其中,family-set-name 是您在 mcf 文件中用于库的设备名称。在示例中,使用系列集 i3494

    root@solaris:~# build_cat input_vsns /var/opt/SUNWsamfs/catalog/i3494
    
  11. 如果归档文件系统已共享,请对每个潜在元数据服务器重复之前步骤。

    归档文件系统现已完成,可以使用了。

  12. 接下来,配置文件系统保护

配置文件系统保护

为了保护文件系统,需要做两件事:

  • 必须保护存储数据的文件。

  • 必须保护文件系统本身,以便能够使用、组织、查找、访问及管理数据。

在 Oracle HSM 归档文件系统中,由归档程序自动保护文件数据:修改的文件会自动复制到归档存储介质(例如磁带)上。但如果您只备份了文件,之后磁盘设备或 RAID 组遇到不可恢复的故障,您虽有数据但很难使用它。您必须创建替代文件系统、标识每个文件、确定其在新文件系统中的适当位置、获取新文件系统,并重新创建其与用户、应用程序及其他文件之间丢失的关系。这种恢复即使是在最好的情况下也是一个艰巨且冗长的过程。

因此,为了快速、高效恢复,必须主动保护能够使文件和归档副本可用的文件系统元数据。必须备份归档在可移除介质上的副本的目录路径、inode、访问控制、符号链接及指针。

可通过安排恢复点和保存归档日志保护 Oracle HSM 文件系统元数据。恢复点是一个压缩文件,存储 Oracle HSM 文件系统的元数据时间点备份副本。发生数据丢失时(从用户文件的意外删除到整个文件系统的灾难性丢失),都可以通过找到文件或文件系统保持完好的最后恢复点,将文件或文件系统几乎立刻恢复到最后已知正常状态,然后,可恢复在该时间点记录的元数据,并将元数据中指示的文件从归档介质回写到磁盘高速缓存中,或者(更适合)让文件系统按需回写文件,以供用户和应用程序访问这些文件。

与任何时间点备份副本一样,恢复点很少是出现故障时文件系统状态的完整记录。在完成一个恢复点之后和创建下一个恢复点之前,至少会创建和更改一些文件,这是不可避免的。您可以且应该通过恰当安排来最大限度消除这种问题,即频繁创建恢复点并在文件系统不使用时创建恢复点。但实际上这种安排只能是一种折中策略,因为文件系统总会处于使用状态。

因此,还必须保存归档程序日志文件的时间点副本。归档每个数据文件时,日志文件将记录归档介质的卷序列号、归档集和副本份数、归档 (tar) 文件在介质上的位置以及 tar 文件内数据文件的路径和名称。有了这些信息,可以使用 Solaris 或 Oracle HSM tar 实用程序恢复在恢复点中缺失的文件。但这些信息具有易失性。与多数系统日志一样,归档程序日志会快速增长,因此必定会经常被覆盖。如果不定期生成副本来补充恢复点信息,在需要时就没有日志信息可用。

因此,需要对文件系统保护进行一些规划。另一方面,恢复点和日志文件副本的创建最好足够频繁,而且保留时间足够长,以便您能够尽可能恢复丢失或损坏的文件和文件系统。另一方面,不需要在数据文件主动发生更改时创建恢复点和日志文件副本,而需要知道它们使用的磁盘空间(恢复点文件和日志非常大)。本节会相应地建议一种广泛适用的配置,该配置可以在不经过修改的情况下用于许多文件系统配置。需要进行更改时,建议的配置会说明一些问题并可作为良好的起点。本节其余部分提供创建和管理恢复点的说明。包含以下小节:

创建用于存储恢复点文件和归档程序日志副本的位置

对于已配置的各个归档文件系统,请执行如下操作:

  1. root 用户身份登录到文件系统主机。

    root@solaris:~# 
    
  2. 为恢复点文件选择存储位置。选择可挂载在文件系统主机上的独立文件系统。

  3. 请确保选定文件系统具有足够的空间来存储新的恢复点文件以及计划在任何给定时间保留的恢复点文件数。

    恢复点文件非常大,必须存储大量此类文件,具体取决于这些文件的创建频率以及保留时间。

  4. 确保所选文件系统未与归档文件系统共享任何物理设备。

    请勿将恢复点文件存储在用于起保护作用的文件系统中。请勿将恢复点文件存储在也托管归档文件系统的物理设备的逻辑设备(如分区或 LUN)上。

  5. 在选定的文件系统中,创建用于保存恢复点文件的目录。使用命令 mkdir mount-point/path,其中 mount-point 是所选独立文件系统的挂载点,path 是所选目录的路径和名称。

    请勿在一个 catch-all 目录中存储多个归档文件系统的恢复点文件。为每个恢复点文件创建一个单独的目录,以便组织恢复点文件并在必要时轻松找到它们。

    在示例中,要为归档文件系统 /samms 配置恢复点。因此,在独立文件系统 /zfs1 上创建了目录 /zfs1/samms_recovery

    root@solaris:~# mkdir /zfs1/samms_recovery
    
  6. 如果文件系统未与归档文件系统共享任何物理设备,则为文件系统创建用于存储归档程序日志的时间点副本的子目录。

    在示例中,我们选择在主机根文件系统的 /var 目录中存储日志副本。我们为归档文件系统 /samms 配置文件系统保护。因此,创建目录 /var/samms_archlogs

    root@solaris:~# mkdir /var/samms_archlogs
    
  7. 接下来,自动创建恢复点并保存归档程序日志

自动创建恢复点并保存归档程序日志

虽然通过在 crontab 文件中创建条目或者通过使用 Oracle HSM Manager 图形用户界面的调度功能可以自动创建元数据恢复点文件,但后一种方法不会自动保存归档程序日志数据。因此,本节重点介绍 crontab 方法。如果您希望使用该图形用户界面来调度恢复点,请参阅 Manager 联机帮助。

以下过程将创建两个每天运行的 crontab 条目:一条用于删除过时的恢复点文件,然后创建新恢复点;另一条用于保存归档程序日志。对于已配置的各个归档文件系统,请执行如下操作:

  1. root 用户身份登录到文件系统主机。

    root@solaris:~# 
    
  2. 打开 root 用户的 crontab 文件进行编辑。使用命令 crontab -e

    crontab 命令可在 EDITOR 环境变量指定的文本编辑器中打开 root 用户 crontab 文件的可编辑副本(有关完整的详细信息,请参见 Solaris crontab 手册页)。在示例中,使用 vi 编辑器:

    root@solaris:~# crontab -e
    ...
    # The root crontab should be used to perform accounting data collection.
    10 3 * * * /usr/sbin/logadm
    15 3 * * 0 [ -x /usr/lib/fs/nfs/nfsfind ] && /usr/lib/fs/nfs/nfsfind
    30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
    30 0,9,12,18,21 * * * /usr/lib/update-manager/update-refresh.sh
    
  3. 首先,创建用于删除过期恢复点文件并创建新恢复点的条目。在新行中,指定工作的完成时间。输入 minutes hour * * *,其中:

    • minutes 是一个介于 [0-59] 范围内的整数,用于指定作业开始时的分钟。

    • hour 是一个介于 [0-23] 范围内的整数,用于指定作业开始时的小时。

    • *(星号)指定未使用的值。

      对于每天运行的任务,不使用月中日期 [1-31]、月份 [1-12] 以及星期几 [0-6] 的值。

    • 空格用于分隔时间规范中的字段。

    • minutes hour 用于指定未创建或修改文件的时间。

      在文件系统活动量最少时创建恢复点文件可确保文件尽可能准确完整地反映归档状态。理想情况下,所有新文件和修改的文件都将在指定的时间之前进行归档。

    在示例中,我们将工作安排在每天凌晨 2:10 开始:

    ...
    30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
    30 0,9,12,18,21 * * * /usr/lib/update-manager/update-refresh.sh
    10 2 * * *  
    
  4. 继续在同一行中,输入用来清理旧恢复点文件的 shell 命令。输入文本 ( find directory -type f -mtime +retention -print | xargs -l1 rm -f;,其中:

    • ((左括号)标记 crontab 条目将执行的命令序列开始。

    • directory 是存储恢复点文件的目录的路径和目录名,因此,也是 Solaris find 命令的搜索起点。

    • -type f 是用于指定文本文件(与块特殊文件、字符特殊文件、目录、管道等相对)的 find 命令选项。

    • -mtime +retention 是用于指定超过 retention(一个整数,表示恢复点文件保留的小时数)还未加以修改的文件的 find 命令选项。

    • -print 是用于将找到的所有文件进行标准输出的 find 命令选项。

    • |xargs -l1 rm -f 可将输出从 -print 通过管道传输到 Solaris 命令 xargs -l1,该命令每次将一行作为参数发送到 Solaris 命令 rm -f,进而删除找到的所有文件。

    • ;(分号)标记命令行结尾。

    在示例中,crontab 条目在目录 /zfs1/samms_recovery 中搜索至少 72 小时(3 天)未进行修改的所有文件并将找到的所有文件删除。请注意,crontab 条目仍是单行-使用反斜杠对换行符进行转义:

    # The root crontab should be used to perform accounting data collection.
    10 3 * * * /usr/sbin/logadm
    15 3 * * 0 [ -x /usr/lib/fs/nfs/nfsfind ] && /usr/lib/fs/nfs/nfsfind
    30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
    30 0,9,12,18,21 * * * /usr/lib/update-manager/update-refresh.sh
    10 2 * * * ( find /zfs1/samms_recovery -type f -mtime +72 -print | \ 
    xargs -l1 rm -f; 
    
  5. 继续在同一行中,输入用来切换到要创建恢复点的目录的 shell 命令。输入文本 cd mount-point;,其中,mount-point 是归档文件系统的根目录,分号 (;) 标记命令行的结尾。

    用于创建恢复点文件的命令 samfsdump 可对当前目录及所有子目录中的所有文件的元数据进行备份。在本示例中,我们转至 /samms 目录,这是我们要保护的文件系统的挂载点:

    # The root crontab should be used to perform accounting data collection.
    10 3 * * * /usr/sbin/logadm
    15 3 * * 0 [ -x /usr/lib/fs/nfs/nfsfind ] && /usr/lib/fs/nfs/nfsfind
    30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
    30 0,9,12,18,21 * * * /usr/lib/update-manager/update-refresh.sh
    10 2 * * * ( find /zfs1/samms_recovery -type f -mtime +72 -print | \ 
    xargs -l1 rm -f; cd /samms;
    
  6. 继续在同一行中,输入用来每天创建新恢复点的 shell 命令。输入文本 /opt/SUNWsamfs/sbin/samfsdump -f directory/'date +\%y\%m\%d'),其中:

    • /opt/SUNWsamfs/sbin/samfsdump 是用于创建恢复点的命令(有关完整的详细信息,请参见手册页)。

    • -f 是用于指定将保存恢复点文件的位置的 samfsdump 命令选项。

    • directory 是我们创建的用于保存该文件系统恢复点的目录。

    • 'date +\%y\%m\%d' 是 Solaris date 命令和格式化模板,用于创建恢复点文件的名称:YYMMDD,其中 YYMMDD 是当前年份的最后两位数、当前月份的两位数编号以及两位数的日期(例如 150122 表示 2015 年 1 月 22 日)。

    • ;(分号)标记命令行结尾。

    • )(右括号)标记 crontab 条目将执行的命令序列的结尾。

    在示例中,我们指定上面创建的恢复点目录 /zfs1/samms_recovery。请注意,crontab 条目仍是单行-使用反斜杠对换行符进行转义:

    # The root crontab should be used to perform accounting data collection.
    10 3 * * * /usr/sbin/logadm
    15 3 * * 0 [ -x /usr/lib/fs/nfs/nfsfind ] && /usr/lib/fs/nfs/nfsfind
    30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
    30 0,9,12,18,21 * * * /usr/lib/update-manager/update-refresh.sh
    10 2 * * * ( find /zfs1/samms_recovery -type f -mtime +72 -print | \ 
    xargs -l1 rm -f; cd /samms ; /opt/SUNWsamfs/sbin/samfsdump \ 
    -f /zfs1/samms_recovery/'date +\%y\%m\%d')
    
  7. 现在创建用于保存归档程序日志的条目。在一个新行中输入 minutes hour * * * 来指定工作的完成时间,其中:

    • minutes 是一个介于 [0-59] 范围内的整数,用于指定作业开始时的分钟。

    • hour 是一个介于 [0-23] 范围内的整数,用于指定作业开始时的小时。

    • *(星号)指定未使用的值。

      对于每天运行的任务,不使用月中日期 [1-31]、月份 [1-12] 以及星期几 [0-6] 的值。

    • 空格用于分隔时间规范中的字段。

    • minutes hour 用于指定未创建或修改文件的时间。

    在示例中,我们将工作安排在每个星期天的凌晨 3:15 开始:

    ...
    30 0,9,12,18,21 * * * /usr/lib/update-manager/update-refresh.sh
    10 2 * * * ( find /zfs1/samms_recovery -type f -mtime +72 -print | \ 
    xargs -l1 rm -f; cd /samms ; /opt/SUNWsamfs/sbin/samfsdump \ 
    -f /zfs1/samms_recovery/'date +\%y\%m\%d')
    15 3 * * 0 
    
  8. 继续在同一行中,输入用来将当前归档程序日志移动到某个备份位置并为其指定唯一名称的 shell 命令。输入文本 ( mv /var/adm/samms.archive.log /var/samms_archlogs/"date +%y%m%d";

    此步骤将保存活动日志文件中将被覆盖的日志条目。在本示例中,我们将 samms 文件系统的归档程序日志移动到我们选择的位置 /var/samms_archlogs/ 并将其重命名为 YYMMDD,其中 YYMMDD 是当前年份的最后两位数、当前月份的两位数编号以及两位数的日期(例如 150122 表示 2015 年 1 月 22 日):

    ...
    30 0,9,12,18,21 * * * /usr/lib/update-manager/update-refresh.sh
    10 2 * * * ( find /samms_recovery/dumps -type f -mtime +72 -print | xargs -l1 rm -f; \ cd /samms ; /opt/SUNWsamfs/sbin/samfsdump -f /zfs1/samms_recovery/'date +\%y\%m\%d') 
    15 3 * * 0 ( mv /var/adm/samms.archiver.log /var/samms_archlogs/"date +%y%m%d";
    
  9. 继续在同一行中,输入用来对归档程序日志文件重新初始化的 shell 命令。输入文本 touch /var/adm/samms.archive.log )

    在本示例中,请注意,crontab 条目仍是单行-使用反斜杠对换行符进行转义:

    ...
    30 0,9,12,18,21 * * * /usr/lib/update-manager/update-refresh.sh
    10 2 * * * ( find /samms_recovery/dumps -type f -mtime +72 -print | xargs -l1 rm -f; \ cd /samms ; /opt/SUNWsamfs/sbin/samfsdump -f /zfs1/samms_recovery/'date +\%y\%m\%d') 
    15 3 * * 0 ( mv /var/adm/samms.archive.log /var/samms_archlogs/"date +%y%m%d";\ 
    touch /var/adm/samms.archiver.log ) 
    
  10. 保存文件并关闭编辑器。

    # The root crontab should be used to perform accounting data collection.
    10 3 * * * /usr/sbin/logadm
    15 3 * * 0 [ -x /usr/lib/fs/nfs/nfsfind ] && /usr/lib/fs/nfs/nfsfind
    30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
    30 0,9,12,18,21 * * * /usr/lib/update-manager/update-refresh.sh
    10 2 * * * ( find /samms_recovery/dumps -type f -mtime +72 -print | xargs -l1 rm -f; \ cd /samms ; /opt/SUNWsamfs/sbin/samfsdump -f /zfs1/samms_recovery/'date +\%y\%m\%d') 
    15 3 * * 0 ( mv /var/adm/samms.archive.log /var/samms_archlogs/"date +%y%m%d";\ touch /var/adm/samms.archive.log ) 
    :wq
    root@solaris:~# 
    
  11. 如果需要在文件系统上启用 WORM(Write Once Read Many,一写多读)功能,请参见启用对一次写入多次读取 (Write Once Read Many, WORM) 文件的支持

  12. 如果需要与使用 LTFS 的系统交互,或者需要在远程站点之间传输大量数据,请参见启用对 Linear Tape File System (LTFS) 的支持

  13. 如果您需要具备验证归档磁带卷完整性的能力,请转到配置归档介质验证

  14. 如果有其他需求(例如,多主机文件系统访问或高可用性配置),请参见进阶知识

  15. 否则,请转至配置通知和日志记录

配置归档介质验证

介质验证是一种使用 SCSI verify 命令对磁带介质的数据完整性进行评估的技术。主机上的 SCSI 驱动程序可计算其写入驱动器的逻辑数据块的 CRC 校验和并发送 verify 命令。驱动器读取数据块、计算其自己的校验和并将结果与驱动程序提供的值进行比较。如果存在差异,则返回错误。只要校验和完成,驱动器便会放弃所读取的数据,因此,主机上不会有与 I/O 相关的额外开销。

Oracle HSM 支持以两种方式进行介质验证:

配置 Oracle HSM 以支持数据完整性验证 (Data Integrity Validation, DIV)

数据完整性验证 (Data Integrity Validation, DIV) 是 Oracle StorageTek 磁带机的一项功能,可与 Oracle HSM 软件配合使用来确保存储数据的完整性。启用该功能时(div = ondiv = verify),服务器主机和驱动器都会在 I/O 期间计算并比较校验和。写入操作期间,服务器计算每个数据块的四字节校验和,并将该校验和连同数据一起传递到驱动器。磁带机随后重新计算校验和并将结果与服务器提供的值进行比较。如果值一致,驱动器便将数据块和校验和写入磁带。在读取操作期间,驱动器和主机从磁带读取数据块及其关联校验和。每一项都会对数据块中的校验和进行重新计算,然后将结果与存储的校验和进行比较。如果校验和在任何时间都不匹配,驱动器会通知应用程序软件出现了错误。

div = verify 选项可在写入数据时提供附加保护层。完成写入操作后,主机会要求磁带机重新验证数据。因此,驱动器会重新扫描数据、重新计算校验和,然后将结果与磁带上存储的校验和进行比较。驱动器在内部执行所有操作,不需要额外的 I/O(放弃数据),因此,主机系统没有额外的开销。也可以使用 Oracle HSM tpverify(磁带检验)命令根据需要执行此步骤。

要配置数据完整性验证,请执行如下操作:

  1. root 用户身份登录到 Oracle HSM 服务器。

    在示例中,元数据服务器名为 samfs-mds

    [samfs-mds]root@solaris:~#  
    
  2. 确保元数据服务器运行的是 Oracle Solaris 11 或更高版本。

    [samfs-mds]root@solaris:~# uname -r
    5.11
    [samfs-mds]root@solaris:~# 
    
  3. 请确保 Oracle HSM mcf 文件中定义的归档存储设备包含兼容的磁带机:StorageTek T10000C(最低固件级别为 1.53.315)或 T10000D。

  4. 使所有归档进程(如果有)闲置。使用命令 samcmd aridle

    此命令将允许当前的归档和回写操作完成,但不会启动任何新作业:

    [samfs-mds]root@solaris:~# samcmd aridle
    [samfs-mds]root@solaris:~# 
    
  5. 使所有回写进程(如果有)闲置。使用命令 samcmd stidle

    此命令将允许当前的归档和回写操作完成,但不会启动任何新作业:

    [samfs-mds]root@solaris:~# samcmd stidle
    [samfs-mds]root@solaris:~# 
    
  6. 等待任何活动的归档作业完成。使用命令 samcmd a 检查归档进程的状态。

    当归档进程为 Waiting for :arrun 时,归档进程处于空闲状态:

    [samfs-mds]root@solaris:~# samcmd a
    Archiver status samcmd     6.0 14:20:34 Feb 22 2015
    samcmd on samfs-mds
    sam-archiverd:  Waiting for :arrun
    sam-arfind: ...
    Waiting for :arrun
    
  7. 等待任何活动的回写作业完成。使用命令 samcmd u 检查回写进程的状态。

    当回写进程为 Waiting for :strun 时,回写进程处于空闲状态:

    [samfs-mds]root@solaris:~# samcmd u
    Staging queue samcmd      6.0 14:20:34 Feb 22 2015
    samcmd on solaris.demo.lan
    Staging queue by media type: all
    sam-stagerd:  Waiting for :strun
    root@solaris:~# 
    
  8. 在继续操作之前,使所有可移除的介质驱动器停工。针对每个驱动器,使用命令 samcmd equipment-number idle,其中 equipment-number 是在 /etc/opt/SUNWsamfs/mcf 文件中分配给驱动器的设备序号。

    此命令将允许当前的归档和回写作业在驱动器关闭之前完成,但不会启动任何新作业。在示例中,使序号分别为 801802803804 的四个驱动器闲置:

    [samfs-mds]root@solaris:~# samcmd 801 idle
    [samfs-mds]root@solaris:~# samcmd 802 idle
    [samfs-mds]root@solaris:~# samcmd 803 idle
    [samfs-mds]root@solaris:~# samcmd 804 idle
    [samfs-mds]root@solaris:~# 
    
  9. 等待正在运行的作业完成。

    可以使用命令 samcmd r 检查驱动器的状态。当所有驱动器都处于 notrdyempty 时,已准备好继续。

    [samfs-mds]root@solaris:~# samcmd r
    Removable media samcmd     6.0 14:20:34 Feb 22 2015
    samcmd on samqfs1host
    ty   eq   status      act  use  state  vsn
    li  801   ---------p    0   0%  notrdy
              empty
    li  802   ---------p    0   0%  notrdy
              empty
    li  803   ---------p    0   0%  notrdy
              empty
    li  804   ---------p    0   0%  notrdy
              empty
    [samfs-mds]root@solaris:~# 
    
  10. 当归档程序和回写程序进程处于空闲状态,并且磁带机都处于 notrdy 时,停止磁带库控制守护进程。使用命令 samd stop

    [samfs-mds]root@solaris:~# samd stop
    [samfs-mds]root@solaris:~# 
    
  11. 在文本编辑器中打开 /etc/opt/SUNWsamfs/defaults.conf 文件。如果需要,取消注释 #div = off 行,如果它不存在,则添加该行。

    默认情况下,div(数据完整性验证)设置为 off(禁用)。

    在示例中,在 vi 编辑器中打开文件并取消注释该行:

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/defaults.conf 
    # These are the defaults.  To change the default behavior, uncomment the
    # appropriate line (remove the '#' character from the beginning of the line)
    # and change the value.
    ...
    div = off
    
  12. 要启用数据完整性验证的读取、写入和验证操作,请将行 #div = off 更改为 div = on 并保存文件。

    在写入和读取各个块时,将对数据进行验证,但在完整的文件副本归档后,Oracle HSM 归档程序软件将不对其进行验证。

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/defaults.conf 
    # These are the defaults.  To change the default behavior, uncomment the
    # appropriate line (remove the '#' character from the beginning of the line)
    # and change the value.
    ...
    div = on
    :wq
    [samfs-mds]root@solaris:~# 
    
  13. 要启用数据完整性验证功能的写入后验证选项,请将行 #div = off 更改为 div = verify 并保存文件。

    在写入或读取各个块时,主机和驱动器会执行数据完整性验证。此外,只要将完整的归档请求写出磁带,驱动器便会重新读取新存储的数据和校验和、重新计算并比较存储结果与计算结果。

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/defaults.conf 
    # These are the defaults.  To change the default behavior, uncomment the
    # appropriate line (remove the '#' character from the beginning of the line)
    # and change the value.
    ...
    div = verify
    :wq
    [samfs-mds]root@solaris:~# 
    
  14. 指示 Oracle HSM 软件重新读取 defaults.conf 文件并相应地重新配置自身。使用 samd config 命令。

    [samfs-mds]root@solaris:~# /opt/SUNWsamfs/sbin/samd config
    
  15. 如果在之前的步骤中已将 Oracle HSM 操作停止,现在可使用 samd start 命令将其重新启动。

    [samfs-mds]root@solaris:~# samd start
    [samfs-mds]root@solaris:~# 
    

    现在已配置数据完整性验证。

  16. 如果需要自动执行数据完整性验证,请转到配置 Oracle HSM 定期介质验证

  17. 如果需要在文件系统上启用 WORM(Write Once Read Many,一写多读)功能,请参见启用对一次写入多次读取 (Write Once Read Many, WORM) 文件的支持

  18. 如果需要与使用 LTFS 的系统交互,或者需要在远程站点之间传输大量数据,请参见启用对 Linear Tape File System (LTFS) 的支持

  19. 如果有其他需求(例如,多主机文件系统访问或高可用性配置),请参见进阶知识

配置 Oracle HSM 定期介质验证

可以为 Oracle HSM 归档文件系统设置定期介质验证 (Periodic Media Verification, PMV)。定期介质验证会自动检查文件系统中可移除介质的数据完整性。该功能使用 StorageTek 数据完整性验证来检查 StorageTek T10000 介质,使用广受支持的 SCSI verify(6) 命令来检查其他驱动器。

定期介质验证功能添加了 Oracle HSM 守护进程 verifyd,用于定期应用 tpverify 命令、记录检测到的所有错误、通知管理员以及自动执行指定的恢复操作。通过设置配置文件 verifyd.cmd 中的策略指令来配置定期介质验证。策略可以指定验证扫描的运行时间、扫描类型、可以使用的磁带库和驱动器、应当扫描的磁带卷,以及在检测到错误时 Oracle HSM 采取的操作。例如,Oracle HSM 可以自动重新归档包含错误的文件和/或回收包含错误的磁带卷。

  1. root 用户身份登录到 Oracle HSM 服务器。

    在示例中,元数据服务器名为 samfs-mds

    [samfs-mds]root@solaris:~#  
    
  2. 如果您尚未执行此操作,则配置 Oracle HSM 以支持数据完整性验证 (Data Integrity Validation, DIV),然后再继续

  3. 确保元数据服务器运行的是 Oracle Solaris 11 或更高版本。

    [samfs-mds]root@solaris:~# uname -r
    5.11
    [samfs-mds]root@solaris:~# 
    
  4. 在文本编辑器中打开 /etc/opt/SUNWsamfs/verifyd.cmd 文件。

    在示例中,用 vi 编辑器打开文件:

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/verifyd.cmd
    # For additional information about the format of the verifyd.cmd file,
    # type "man verifyd.cmd".
    # Enable Oracle HSM Periodic Media Validation (PMV)
    pmv = off
    
  5. 要启用定期介质验证,请输入行 pmv = on

    默认情况下,定期介质验证设置为 off。在示例中,我们将其设置为 on

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/verifyd.cmd
    # For additional information about the format of the verifyd.cmd file,
    # type "man verifyd.cmd".
    # Enable Oracle HSM Periodic Media Validation (PMV)
    pmv = on
    
  6. 设置运行时间。输入行 run_time = always 可连续运行验证,或者输入 run_time = HHMM hhmm DD dd,其中,HHMMhhmm 分别是开始时间和结束时间,而 DD dd 是可选的开始日期和结束日期。

    HHhh 是一天中的小时,介于 00-24 范围内;MMmm 是分钟数,介于 00-60 范围内;DDdd 是一周中的星期几,介于 [0-6] 范围内,其中 0 表示星期日,6 表示星期六。默认值为 2200 0500 6 0

    但是,验证具有更为重要的文件系统操作,因而不具有竞争力。验证过程会自动产生归档程序和回写程序所需的磁带卷和/或驱动器。因此,在示例中,我们将运行时间设置为 always

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/verifyd.cmd
    # For additional information about the format of the verifyd.cmd file,
    # type "man verifyd.cmd".
    # Enable Oracle HSM Periodic Media Validation (PMV)
    pmv = on
    # Run all of the time.  PMV will yield VSNs and drives when
    # resources are wanted by the SAM-QFS archiver and stager.
    run_time = always
    
  7. 指定验证方法。输入行 pmv_method = specified-method,其中 specified-method 是下列选项之一:

    • standard 方法专用于 Oracle StorageTek T10000C 和更高版本的磁带机。standard 方法在速度方面经过优化,可对介质的边缘、开头、结尾和前 1,000 个块进行验证。

    • complete 方法也用于 Oracle StorageTek T10000C 和更高版本的磁带机。该方法验证介质上每个块的介质纠错码 (error correction code, ECC)。

    • complete plus 方法也用于 Oracle StorageTek T10000C 和更高版本的磁带机。该方法验证介质上每个块的介质纠错码 (error correction code, ECC) 和数据完整性验证校验和(请参见配置 Oracle HSM 以支持数据完整性验证 (Data Integrity Validation, DIV))。

    • legacy 方法可用于其他所有磁带机,当介质在目录中标记为损坏以及磁带机不支持 verifyd.cmd 文件中指定的方法时,系统会自动使用该方法。该方法运行 6 字节固定块模式 SCSI Verify 命令,从而跳过之前记录的缺陷。找到新的永久性介质错误时,legacy 方法会跳到下一个文件,并将新发现的错误记录到介质缺陷数据库中。

    • mir rebuild 方法可在 Oracle StorageTek 盒式磁带的介质信息区域 (media information region, MIR) 缺失或损坏时重新构建 MIR。它适用于介质目录中标记为已损坏的介质,并且会在检测到 MIR 损坏时自动指定。

    在示例中,使用 LTO 驱动器,因此我们指定 legacy

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/verifyd.cmd
    ...
    # resources are wanted by the SAM-QFS archiver and stager.
    run_time = always
    pmv_method = legacy
    
  8. 要使用所有可用磁带库和驱动器进行验证,请输入行 pmv_scan = all

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/verifyd.cmd
    ...
    pmv_method = legacy
    pmv_scan = all
    
  9. 要使用指定磁带库中所有可用驱动器进行验证,请输入行 pmv_scan = library equipment-number,其中 equipment-number 是在文件系统的 mcf 文件中分配给磁带库的设备编号。

    在示例中,我们让验证过程使用磁带库 800 中的所有驱动器。

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/verifyd.cmd
    ...
    pmv_method = legacy
    pmv_scan = library 800 
    
  10. 要对验证过程可使用的指定磁带库中的驱动器数量进行限制,请输入行 pmv_scan = library equipment-number max_drives number,其中 equipment-number 是在文件系统的 mcf 文件中分配给磁带库的设备编号,而 number 是可以使用的最大驱动器数量。

    在示例中,我们让验证过程最多使用磁带库 800 中的 2 个驱动器。

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/verifyd.cmd
    ...
    pmv_method = legacy
    pmv_scan = library 800 max_drives 2 
    
  11. 要指定验证过程可使用的指定磁带库中的驱动器,请输入行 pmv_scan = library equipment-number drive drive-numbers,其中 equipment-number 是在文件系统的 mcf 文件中分配给磁带库的设备编号,而 drive-numbers 是在 mcf 文件中分配给指定驱动器的以空格分隔的设备编号列表。

    在示例中,我们让验证过程使用磁带库 900 中的驱动器 903904

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/verifyd.cmd
    ...
    pmv_method = legacy
    pmv_scan = library 900 drive 903 904 
    
  12. 要指定验证过程可使用的两个或多个磁带库中的驱动器,请输入行 pmv_scan = library-specification library-specification...,其中 equipment-number 是在文件系统的 mcf 文件中分配给磁带库的设备编号,而 drive-numbers 是在 mcf 文件中分配给指定驱动器的以空格分隔的设备编号列表。

    在示例中,我们让验证过程最多使用磁带库 800 中的 2 个驱动器,以及磁带库 900 中的驱动器 903904

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/verifyd.cmd
    ...
    pmv_method = legacy
    pmv_scan = library 800 max_drives 2 library 900 drive 903 904 
    
  13. 要禁用定期介质验证并防止其使用任何设备,请输入行 pmv_scan = off

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/verifyd.cmd
    ...
    pmv_method = legacy
    pmv_scan = off
    
  14. 要在定期介质验证检测到指定数量的永久性错误时自动标记介质进行回收,请输入行 action = recycle perms number-errors,其中 number-errors 是错误的数量。

    在示例中,我们将 Oracle HSM 配置为在检测到 10 个错误后将介质标记为进行回收:

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/verifyd.cmd
    ...
    pmv_scan = all
    action = recycle perms 10 
    
  15. 要在错误累积了指定时间段后自动对包含错误块的文件进行重新归档,请输入行 action = rearch age time,其中 time 是以空格分隔的 SECONDSsMINUTESmHOURShDAYSd 和/或 YEARSy 的任意组合的列表,并且 SECONDSMINUTESHOURSDAYSYEARS 为整数。

    在对文件系统进行扫描以查找需要归档的文件之前,最早的介质缺陷必须已经过指定的一段时间。在示例中,我们将重新归档时限设置为 1(一)分钟:

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/verifyd.cmd
    ...
    pmv_scan = all
    action = rearch age 1m  
    
  16. 要在定期介质验证检测到永久介质错误时将介质标记为损坏但不执行任何操作,请执行行 action = none

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/verifyd.cmd
    ...
    pmv_scan = all
    action = none 
    
  17. 指定应定期验证的磁带卷。输入行 pmv_vsns = selection-criterion,其中 selection-criterionall 或指定一个或多个卷序列号 (volume serial number, VSN) 的以空格分隔的正则表达式列表。

    缺省值为 all。在示例中,我们提供三个正则表达式:ˆVOL0[01][0-9]ˆVOL23[0-9] 指定两组卷,这两组卷的卷序列号范围分别介于 VOL000VOL019VOL230VOL239,而 VOL400 指定具有特定卷序列号的卷:

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/verifyd.cmd
    ...
    pmv_scan = all
    action = none
    pmv_vsns = ˆVOL0[01][0-9] ˆVOL23[0-9] VOL400
    

    在以下情况下,Oracle HSM 不会尝试对卷进行验证:卷需要审计、已计划进行回收、不可用、外部(非 Oracle HSM)卷或不包含数据。此外,也不会对清洗磁带、无标签的卷以及卷序列号重复的卷进行验证。

  18. 定义所需的验证策略。输入行 pmv_policy = verified age vertime [modified age modtime] [mounted age mnttime],其中:

    • verified age 指定自上次验证卷以来必须经过的最短时间。

    • modified age(可选)指定自上次修改卷以来必须经过的最短时间。

    • mounted age(可选)指定自上次挂载卷以来必须经过的最短时间。

    • 参数值 vertimemodtimemnttime 是非负整数和以下时间单位的组合:y(年)、m(月)、d(天)、H(小时)、M(分钟)和 S(秒)。

    Oracle HSM 将根据卷上次验证后所经过的时间(还可以选择根据卷上次修改和/或挂载后所经过的时间)来识别候选卷并对其进行排名。默认策略为单一参数 verified age 6m(六个月)。在示例中,我们将上次验证时限设置为三个月,将上次修改时限设置为十五个月:

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/verifyd.cmd
    ...
    pmv_scan = all
    action = none
    pmv_vsns = ˆVOL0[01][0-9] ˆVOL23[0-9] VOL400
    pmv_policy = verified age 3m modified age 15m   
    
  19. 保存 /etc/opt/SUNWsamfs/verifyd.cmd 文件,然后关闭编辑器。

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/verifyd.cmd
    ...
    pmv_vsns = ˆVOL0[01][0-9] ˆVOL23[0-9] VOL400
    pmv_policy = verified age 3m modified age 15m
    :wq
    root@solaris:~# 
    
  20. 通过输入 tpverify -x 命令,检查 verifyd.cmd 文件中的错误。更正发现的任何错误。

    tpverify -x 命令读取 verifyd.cmd 并在遇到错误时停止:

    root@solaris:~# tpverify -x
    Reading '/etc/opt/SUNWsamfs/verifyd.cmd'.
    PMV: off
         Run-time:
         Start Time: 2200
    End Time: 0500
    PMV Scan: all
    PMV Method: legacy
    STA Scan: off
    Action: none
    PMV VSNs: all
    PMV Policy:
         Last Verified Age: 6m
    root@solaris:~# 
    
  21. 使用新的 verifyd.cmd 文件重新启动验证服务。输入命令 tpverify -r

    root@solaris:~# tpverify -r
    root@solaris:~# 
    

    您已完成对定期介质验证的配置。

  22. 如果需要在文件系统上启用 WORM(Write Once Read Many,一写多读)功能,请参见启用对一次写入多次读取 (Write Once Read Many, WORM) 文件的支持

  23. 如果需要与使用 LTFS 的系统交互,或者需要在远程站点之间传输大量数据,请参见启用对 Linear Tape File System (LTFS) 的支持

  24. 如果有其他需求(例如,多主机文件系统访问或高可用性配置),请参见进阶知识

  25. 否则,请转至配置通知和日志记录

启用对一次写入多次读取 (Write Once Read Many, WORM) 文件的支持

出于法律和归档原因,要在许多应用程序中使用一次写入多次读取 (Write-once read-many, WORM) 文件。启用 WORM 的 Oracle HSM 文件系统支持默认的和可定制的文件保持期、数据和路径的不可更改性以及 WORM 设置的子目录继承性。您可以使用以下两种 WORM 模式之一:

  • 标准符合性模式(默认)

    标准 WORM 模式在用户设置对目录或不可执行文件 (chmod 4000 directory|file) 的 UNIX setuid 权限时开始 WORM 保留期。由于对可执行文件设置 setuid在执行时设置用户 ID)会带来安全风险,因此无法使用此模式保留同时具有 UNIX 执行权限的文件。

  • 仿真模式

    WORM 仿真模式在用户使可写入文件或目录变为只读 (chmod 444 directory|file) 时开始 WORM 保持期,因此可以保留可执行文件。

标准模式和仿真模式都有严格 WORM 实施和不太严格的轻量级 (lite) 实施,后者会放松对 root 用户的一些限制。在触发了对文件或目录的保留之后,严格实施和轻量级实施都不允许更改数据或路径。严格实施不允许在保持期结束之前缩短指定的保持期(默认为 43,200 分钟/30 天)或者删除文件或目录。严格实施也不允许使用 sammkfs 来删除存放当前保留的文件和目录的卷。因此,严格实施适用于满足法律和法规遵从性要求。轻量级实施允许 root 用户使用文件系统创建命令 sammkfs 缩短保持期、删除文件和目录。当数据完整性和灵活管理均为主要要求时,轻量级实施可能是更好的选择。

在选择 WORM 实施和启用文件保留时需要格外谨慎。通常,使用可满足要求的限制最少的选项。您不能从标准模式更改为仿真模式,反之亦然。因此,请谨慎选择。如果管理灵活性是优先的或者保留要求以后可能会发生变化,请选择轻量级实施。您可以从 WORM 模式的轻量级版本升级到严格版本(如果以后有必要)。但您不能从严格实施更改为轻量级实施。一旦严格的 WORM 实施生效后,文件就必须在整个指定保持期内都保留。因此,请将保持期设置为可满足需求的最小值。

在 Oracle HSM 文件系统上启用 WORM 支持

使用挂载选项在文件系统上启用 WORM 支持。请执行如下操作。

  1. root 用户身份登录。

    root@solaris:~# 
    
  2. 备份操作系统的 /etc/vfstab 文件。

    root@solaris:~# cp /etc/vfstab /etc/vfstab.backup
    
  3. 在文本编辑器中打开 /etc/vfstab 文件并找到要启用 WORM 支持的 Oracle HSM 文件系统的条目。

    在示例中,我们在 vi 编辑器中打开 /etc/vfstab 文件并找到归档文件系统 worm1

    root@solaris:~# vi /etc/vfstab 
    #File
    #Device   Device  Mount    System fsck Mount   Mount
    #to Mount to fsck Point    Type   Pass at Boot Options
    #-------- ------- -------- ------ ---- ------- -------------------------
    /devices  -       /devices devfs  -    no      -
    /proc     -       /proc    proc   -    no      -
    ...
    worm1     -       /worm1   samfs  -    yes     -
    
  4. 要启用标准 WORM 符合性模式的严格实施,请在 vfstab 文件的 Mount Options 列中输入 worm_capable 选项。

    #File
    #Device   Device  Mount    System fsck Mount   Mount
    #to Mount to fsck Point    Type   Pass at Boot Options
    #-------- ------- -------- ------ ---- ------- -------------------------
    /devices  -       /devices devfs  -    no      -
    /proc     -       /proc    proc   -    no      -
    ...
    worm1     -       /worm1   samfs  -    yes     worm_capable
    
  5. 要启用标准 WORM 符合性模式的轻量级实施,请在 vfstab 文件的 Mount Options 列中输入 worm_lite 选项。

    #File
    #Device   Device  Mount    System fsck Mount   Mount
    #to Mount to fsck Point    Type   Pass at Boot Options
    #-------- ------- -------- ------ ---- ------- -------------------------
    /devices  -       /devices devfs  -    no      -
    /proc     -       /proc    proc   -    no      -
    ...
    worm1     -       /worm1   samfs  -    yes     worm_lite
    
  6. 要启用 WORM 仿真模式的严格实施,请在 vfstab 文件的 Mount Options 列中输入 worm_emul 选项。

    #File
    #Device   Device  Mount    System fsck Mount   Mount
    #to Mount to fsck Point    Type   Pass at Boot Options
    #-------- ------- -------- ------ ---- ------- -------------------------
    /devices  -       /devices devfs  -    no      -
    /proc     -       /proc    proc   -    no      -
    ...
    worm1     -       /worm1   samfs  -    yes     worm_emul
    
  7. 要启用 WORM 仿真模式的轻量级实施,请在 vfstab 文件的 Mount Options 列中输入 emul_lite 选项。

    #File
    #Device   Device  Mount    System fsck Mount   Mount
    #to Mount to fsck Point    Type   Pass at Boot Options
    #-------- ------- -------- ------ ---- ------- -------------------------
    /devices  -       /devices devfs  -    no      -
    /proc     -       /proc    proc   -    no      -
    ...
    worm1     -      /worm1    samfs  -    yes     emul_lite
    
  8. 要更改未显式分配保持期的文件的默认保持期,请将 def_retention=period 选项添加到 vfstab 文件的 Mount Options 列,其中 period 采用下一段介绍的其中一种形式。

    period 的值可采用以下三种形式中的任意一种:

    • permanent0 指定永久保留。

    • YEARSyDAYSdHOURShMINUTESm,其中 YEARSDAYSHOURSMINUTES 为非负整数并且可以忽略说明符。因此,举例来说,5y3d1h4m2y12h365d 都是有效的。

    • MINUTES,其中 MINUTES 为介于 [1-2147483647] 范围内的整数。

    如果您必须设置超过 2038 年的保持期,请设置默认保持期。UNIX 实用程序(如 touch)使用带符号的 32 位整数将时间表示为自 1970 年 1 月 1 日以来的秒数。32 位整数可表示的最大秒数可转换为 2038 年 1 月 18 日晚上 10 点 14 分

    如果未提供值,则 def_retention 默认为 43200 分钟(30 天)。在示例中,我们将具有标准 WORM 功能的文件系统的保持期设置为 777600 分钟(540 天):

    #File
    #Device   Device  Mount    System fsck Mount   Mount
    #to Mount to fsck Point    Type   Pass at Boot Options
    #-------- ------- -------- ------ ---- ------- -------------------------
    /devices  -       /devices devfs  -    no      -
    /proc     -       /proc    proc   -    no      -
    ...
    worm1     -       /worm1   samfs  -    no     worm_capable,def_retention=777600
    
  9. 保存 vfstab 文件并关闭编辑器。

    文件系统已启用 WORM 功能。一旦一个或多个 WORM 文件驻留在文件系统中,Oracle HSM 软件就会更新文件系统超级块以反映 WORM 功能。如果文件系统已使用严格的 worm_capableworm_emul 挂载选项挂载,则随后通过 sammkfs 重新构建文件系统的任何尝试都将失败。

  10. 如果需要与使用 LTFS 的系统交互,或者需要在远程站点之间传输大量数据,请参见启用对 Linear Tape File System (LTFS) 的支持

  11. 如果有其他需求(例如,多主机文件系统访问或高可用性配置),请参见进阶知识

  12. 否则,请转至配置通知和日志记录

启用对 Linear Tape File System (LTFS) 的支持

Oracle HSM 可从 Linear Tape File System (LTFS) 卷导入数据,也可以将数据导出到 LTFS 卷。此功能有助于与使用 LTFS 作为标准磁带格式的系统进行互操作。此外,当典型的广域网 (Wide Area Network, WAN) 连接太慢或对于任务来说成本过高时,它还能方便地在远程 Oracle HSM 站点之间传输大量数据。

请注意,Oracle HSM 软件支持但不包括 LTFS 功能。要使用 LTFS 文件系统,主机的 Solaris 操作系统必须包括 SUNWltfs 软件包。如果需要,请先下载和安装 SUNWltfs 软件包,然后再继续。

有关使用和管理 LTFS 卷的信息,请参见 samltfs 手册页和《Oracle Hierarchical Storage Manager and StorageTek QFS Software 维护和管理指南》。

要启用 Oracle HSM LTFS 支持,请执行如下操作:

  1. root 用户身份登录到 Oracle HSM 元数据服务器。

    [samfs-mds]root@solaris:~# 
    
  2. 使所有归档进程(如果有)闲置。使用命令 samcmd aridle

    此命令将允许当前的归档和回写操作完成,但不会启动任何新作业:

    [samfs-mds]root@solaris:~# samcmd aridle
    [samfs-mds]root@solaris:~# 
    
  3. 使所有回写进程(如果有)闲置。使用命令 samcmd stidle

    此命令将允许当前的归档和回写操作完成,但不会启动任何新作业:

    [samfs-mds]root@solaris:~# samcmd stidle
    [samfs-mds]root@solaris:~# 
    
  4. 等待任何活动的归档作业完成。使用命令 samcmd a 检查归档进程的状态。

    当归档进程为 Waiting for :arrun 时,归档进程处于空闲状态:

    [samfs-mds]root@solaris:~# samcmd a
    Archiver status samcmd     6.0 14:20:34 Feb 22 2015
    samcmd on samfs-mds
    sam-archiverd:  Waiting for :arrun
    sam-arfind: ...
    Waiting for :arrun
    
  5. 等待任何活动的回写作业完成。使用命令 samcmd u 检查回写进程的状态。

    当回写进程为 Waiting for :strun 时,回写进程处于空闲状态:

    [samfs-mds]root@solaris:~# samcmd u
    Staging queue samcmd      6.0 14:20:34 Feb 22 2015
    samcmd on solaris.demo.lan
    Staging queue by media type: all
    sam-stagerd:  Waiting for :strun
    root@solaris:~# 
    
  6. 在继续操作之前,使所有可移除的介质驱动器停工。针对每个驱动器,使用命令 samcmd equipment-number idle,其中 equipment-number 是在 /etc/opt/SUNWsamfs/mcf 文件中分配给驱动器的设备序号。

    此命令将允许当前的归档和回写作业在驱动器关闭之前完成,但不会启动任何新作业。在示例中,使序号分别为 801802803804 的四个驱动器闲置:

    [samfs-mds]root@solaris:~# samcmd 801 idle
    [samfs-mds]root@solaris:~# samcmd 802 idle
    [samfs-mds]root@solaris:~# samcmd 803 idle
    [samfs-mds]root@solaris:~# samcmd 804 idle
    [samfs-mds]root@solaris:~# 
    
  7. 等待正在运行的作业完成。

    可以使用命令 samcmd r 检查驱动器的状态。当所有驱动器都处于 notrdyempty 时,已准备好继续。

    [samfs-mds]root@solaris:~# samcmd r
    Removable media samcmd     6.0 14:20:34 Feb 22 2015
    samcmd on samqfs1host
    ty   eq   status      act  use  state  vsn
    li  801   ---------p    0   0%  notrdy
              empty
    li  802   ---------p    0   0%  notrdy
              empty
    li  803   ---------p    0   0%  notrdy
              empty
    li  804   ---------p    0   0%  notrdy
              empty
    [samfs-mds]root@solaris:~# 
    
  8. 当归档程序和回写程序进程处于空闲状态,并且磁带机都处于 notrdy 时,停止磁带库控制守护进程。使用命令 samd stop

    [samfs-mds]root@solaris:~# samd stop
    [samfs-mds]root@solaris:~# 
    
  9. 在文本编辑器中打开 /etc/opt/SUNWsamfs/defaults.conf

    在示例中,用 vi 编辑器打开文件:

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/defaults.conf 
    # These are the defaults.  To change the default behavior, uncomment the
    # appropriate line (remove the '#' character from the beginning of the line)
    # and change the value.
    ...
    
  10. defaults.conf 文件中,添加行 ltfs = mountpoint workers volumes,其中挂载点为应挂载 LTFS 文件系统的主机文件系统中的目录,workers 为要用于 LTFS 的最大驱动器数(可选),volumes 为每个驱动器的最大磁带卷数(可选)。然后保存文件并关闭编辑器。

    在示例中,我们指定 LTFS 挂载点 /mnt/ltfs 并接受其他参数的默认值:

    [samfs-mds]root@solaris:~# vi /etc/opt/SUNWsamfs/defaults.conf 
    # These are the defaults.  To change the default behavior, uncomment the
    # appropriate line (remove the '#' character from the beginning of the line)
    # and change the value.
    ...
    ltfs = /mnt/ltfs
    :wq
    [samfs-mds]root@solaris:~# 
    
  11. 指示 Oracle HSM 软件重新读取 defaults.conf 文件并相应地重新配置自身。更正报告的任何错误并根据需要重复。

    [samfs-mds]root@solaris:~# /opt/SUNWsamfs/sbin/samd config
    
  12. 如果在之前的步骤中已将 Oracle HSM 操作停止,现在可使用 samd start 命令将其重新启动。

    [samfs-mds]root@solaris:~# samd start
    
  13. 现在已启用 Oracle HSM 对 LTFS 的支持。如果有其他需求(例如,多主机文件系统访问或高可用性配置),请参见进阶知识

  14. 否则,请转至配置通知和日志记录

进阶知识

至此,Oracle HSM 文件系统的基本安装和配置已经完成。目前,您已设置了功能全面的文件系统,并已针对各种用途进行了最优配置。

本书的其他章节将满足更专业的需要。因此,在您开始执行下面所述的其他调整和功能实施任务之前,请仔细评估您的需求。之后,如果您需要其他功能,例如,高可用性或共享文件系统配置,则可以从基本配置开始审慎地实施其他功能。但是,如果您发现目前所做的工作能够满足您的需要,则执行额外的更改可能不会有任何改善,而只会使维护和管理工作更为复杂。