| Oracle® Hierarchical Storage Manager and StorageTek QFS Software 维护和管理指南 发行版 6.0 E56775-02 |
|
![]() 上一页 |
![]() 下一页 |
要将归档文件从旧介质迁移至新介质,需要标识将迁移的文件,将其回写到磁盘高速缓存,然后将其写入新介质,这不会影响正常的 Oracle Hierarchical Storage Manager 文件系统操作。本章介绍该过程中的以下阶段:
在开始移动数据之前,需要执行以下任务。
实际数据迁移过程的细节很大程度上取决于两个因素:可用的磁盘存储量和可用的可移除介质驱动器数量。在介质迁移过程中,Oracle HSM 回写程序将旧可移除卷装入可以读取旧介质格式的驱动器并将归档的文件恢复到磁盘高速缓存中。然后 Oracle HSM 归档程序使用可以写入新介质格式的驱动器将文件重新归档至新的可移除卷。因此,理想情况下,一次性将任何给定磁带卷上的所有文件回写到磁盘上,然后直接将其归档到新介质。
为此,必须在迁移期间准备充足的专用资源:
与整个磁带容量相当的磁盘空间
一个专用的读取旧磁带格式的驱动器
一个专用的写入新格式的驱动器。
如果您可以停止文件系统直到迁移完成,则上述各项不是问题。但在生产设置下迁移数据,而不过多干扰正在进行的文件系统和归档操作,还需要考虑一些细节。如果可用磁盘空间或磁带机不足,需要确定可以为迁移准备的合理备用资源,然后调整迁移过程。因此执行如下操作:
估算可以用于迁移但不会影响正常的文件系统操作的磁盘高速缓存量。
估算可以专供迁移的磁带机数量。
如果可用磁带机数量有限,需要计划减少回写和归档进程,以免迁移过程影响正常的操作。
根据上面的估算结果,确定回写和归档参数。确定可用磁盘空间在任何时刻可以容纳的最大迁移文件数,以及允许文件从高速缓存移出并移入新介质的最大速率。
估算完资源后,计划旧介质的迁移后处理。
在数据迁移后,您可能需要保留旧介质,也可能不需要。因此,现在先确定您的需求并计划介质的处理,然后再开始数据迁移过程。
如果您有在迁移之前使用 samfsdump 创建的恢复点文件,转储文件中的文件系统元数据仍引用旧磁带卷。如果无法访问原介质上的数据,无法将文件系统恢复至这些恢复点。因此,至少应将旧介质保留到您确定不再需要将文件系统恢复到创建较旧恢复点文件时刻的状态时。当您重新运行 samfsdump 创建引用新卷的恢复点足够多次后,可以处理旧卷。
所有当前恢复点文件都指向新介质后,根据介质类型,可以从机械装置磁带库导出旧卷,也可以更新旧卷并重新设置标签以便重新使用。例如,您可能只是想导出 DLT 介质进行处理。但您可能要对较旧的 Oracle StorageTek T10000C 驱动器中的介质重新设置标签,并将其用于较新的 T10000D 驱动器。
确定了如何处理旧介质后,即可以开始配置迁移归档过程。
在迁移过程中,需要修改归档程序配置文件 archiver.cmd 以包含新的替换介质类型以及要替换的类型。
archiver.cmd 文件修改 archiver.cmd 文件,以便将第二个归档副本发送至新介质。没有必要添加其他归档副本。
在文本编辑器中打开 /etc/opt/SUNWsamfs/archiver.cmd 文件。
归档策略指定两个副本,两者都写入要替换的介质类型。在示例中,用 vi 编辑器打开文件。此处要替换 DLT 磁带(键入 lt):
root@solaris: vi /etc/opt/SUNWsamfs/archiver.cmd # ============================================= # /etc/opt/SUNWsamfs/archiver.cmd # --------------------------------------------- ... # --------------------------------------------- # VSN Directives vsns allfiles.1 lt .* allfiles.2 lt .* endvsns
在副本 2 的指令中,将指定的介质类型更改为新介质的标识符,保存文件并关闭文本编辑器。
在示例中,需要将旧 DLT 磁带上的数据迁移到新 LTO 磁带上。因此,在副本 2 中,将旧介质类型 lt (DLT) 更改为 li (LTO):
root@solaris: vi /etc/opt/SUNWsamfs/archiver.cmd # ============================================= # /etc/opt/SUNWsamfs/archiver.cmd # --------------------------------------------- ... # --------------------------------------------- # VSN Directives vsns allfiles.1 lt .* allfiles.2li.* endvsns:wqroot@solaris:~#
检查 archiver.cmd 文件是否存在语法错误。运行 archiver -lv 命令,更正错误,直至没有错误。
archiver -lv 命令将按行输出文件。如果有错误,会在出现错误的地方停止运行。
root@solaris:~#archiver-lvReading '/etc/opt/SUNWsamfs/archiver.cmd'. 1: # ============================================= 2: # /etc/opt/SUNWsamfs/archiver.cmd 3: # --------------------------------------------- 4: # Global Directives 5: logfile = /var/opt/SUNWsamfs/archiver.log 6: # --------------------------------------------- 7: # File System Directives: 8: fs = samqfsms 9: all . 10: 1 5m ... root@solaris:~#
当修改后的 archiver.cmd 文件中没有错误后,使用命令 samd config 将其装入当前配置中:
root@solaris:~#samdconfigConfiguring SAM-FS root@solaris:~#
接下来,将数据从一个磁带迁移到另一个磁带。
建议的数据迁移过程使用 sfind,这是 GNU find 命令的 Oracle HSM 扩展。sfind 命令用于在指定磁带卷上查找文件,并对找到的所有文件启动 stage 和 rearchive 命令。
如果您不熟悉 sfind、stage 和/或 rearchive 命令,现在应查看各自的手册页。然后,对存储了必须迁移的数据的每个盒式磁带,执行如下操作:
以 root 用户身份登录到文件系统主机。
root@solaris:~#
移至要迁移的文件所在文件系统的挂载点目录。
在示例中,要迁移挂载在 /samqfs1 上的 samqfs1 文件系统中所存储文件的归档副本:
root@solaris:~#cd/samqfs1root@solaris:~#
选择磁带卷。
在介质类型之间迁移数据时,一次处理一个卷。在以下示例中,使用卷序列号 VOL008。
首先,搜索无法成功回写的已损坏文件的选定卷。使用 Oracle HSM 命令 sfind .-vsn volume-serial-number -damaged,其中 volume-serial-number 是在库中唯一标识卷的字母数字字符串。
在示例中,从当前工作目录 (.) 开始搜索。-vsn 参数将搜索限定于当前磁带 VOL008 上找到的文件。-damaged 标志将搜索限定于无法成功回写的文件。
root@solaris:~#sfind.-vsnVOL008-damaged
如果 sfind 在搜索已损坏文件时返回任何结果,请尝试修复相应文件。使用命令 undamage -m media-type -vsn volume-serial-number file,其中:
media-type 为附录 A 设备类型词汇表。 中列出的由两个字符表示的介质类型代码之一
volume-serial-number 是唯一地标识卷的字母数字字符串。
file 是损坏的文件的路径和名称。
有时,短暂的 I/O 错误将导致副本被标记为已损坏。Oracle HSM undamage 命令可清除此状态。在示例中,归档文件副本 /samqfs1/data0008/20131025DAT 被报告为已损坏。因此,我们将其设置为未损坏并重新尝试搜索已损坏的文件:
root@solaris:~#sfind.-vsnVOL008-damaged/samqfs1/data0008/20131025DAT root@solaris:~#undamage-mlt-vsnVOL008/samqfs1/data0008/20131025DATroot@solaris:~#sfind.-vsnVOL008-damaged
如果 sfind 命令再次将文件列为已损坏,该副本将不可用。请查看归档中是否包含该文件的其他未损坏副本。要列出可用副本,请使用命令 sls -D file,其中 file 是文件的路径和名称。要检查所发现的任何副本的状态,请使用命令 sfind file -vsn volume-serial-number。
在本示例中,undamage 命令无法修复副本。因此我们使用 sls 列出文件 /samqfs1/data0008/20131025DAT 的所有副本:
root@solaris:~# undamage -m lt -vsn VOL008 /samqfs1/data0008/20131025DAT root@solaris:~# sfind . -vsn VOL008 -damaged /samqfs1/data0008/20131025DAT root@solaris:~#sls-D/samqfs1/data0008/20131025DAT20131025DAT: mode: -rw-r--r-- links: 1 owner: root group: other length: 319279 admin id: 7 inode: 1407.5 project: system(0) offline; archdone; stage -n; copy 1: ---- May 21 07:12 1e4b1.1 lt VOL008copy 2:---- May 21 10:29 109c6.1 ltVOL022...
磁带卷 VOL022 保存文件的第二个副本。因此我们使用 sfind 检查第二个副本:
root@solaris:~#sfind/samqfs1/data0008/20131025DAT-vsnVOL022-damaged
如果某个副本不可用并且存在文件的一个未损坏的副本,则重新归档文件。然后,归档保存两个正常的副本后,取消归档已损坏的副本。
在本示例中,卷 VOL008 上文件 /samqfs1/data0008/20131025DAT 的副本 1 不可用,但 sfind 命令未找到副本 2 的损坏情况。因此我们发出带 -c 选项的 archive 命令,以便在卷 VOL008 上取消归档已损坏的副本之前创建有效的副本 1:
root@solaris:~# sfind /samqfs1/data0008/20131025DAT -vsn VOL022 -damaged root@solaris:~#archive-c1/samqfs1/data0008/20131025DAT... root@solaris:~#unarchive-mlt-vsnVOL008/samqfs1/data0008/20131025DAT
如果不存在任何可用的副本,请查看文件是否位于高速缓存中。使用命令 sfind .-vsn volume-serial-number -online.
在本示例中,卷 VOL008 上的副本 1 和卷 VOL022 上的副本 2 已损坏且不可用。因此我们查看文件是否在磁盘高速缓存中联机可用:
root@solaris:~# undamage -m lt -vsn VOL008 /samqfs1/data0008/20131025DAT root@solaris:~# sfind . -vsn VOL008 -damaged /samqfs1/data0008/20131025DAT root@solaris:~# undamage -m lt -vsn VOL022 /samqfs1/data0008/20131025DAT root@solaris:~# sfind /samqfs1/data0008/20131025DAT -vsn VOL022 -damaged /samqfs1/data0008/20131025DAT root@solaris:~#sfind/samqfs1/data0008/20131025DAT-online
如果不存在任何可用的副本,但文件位于高速缓存中,则归档文件。然后,归档保存两个正常的副本后,取消归档已损坏的副本。
在本示例中,卷 VOL008 上的副本 1 和卷 VOL022 上的副本 2 均不可用,因此我们发出 archive 命令以创建两个有效的副本,然后取消归档卷 VOL008 上已损坏的副本:
root@solaris:~# undamage -m lt -vsn VOL008 /samqfs1/data0008/20131025DAT root@solaris:~# sfind . -vsn VOL008 -damaged /samqfs1/data0008/20131025DAT root@solaris:~# undamage -m lt -vsn VOL022 /samqfs1/data0008/20131025DAT root@solaris:~# sfind /samqfs1/data0008/20131025DAT -vsn VOL022 -damaged /samqfs1/data0008/20131025DAT root@solaris:~# sfind /samqfs1/data0008/20131025DAT -online /samqfs1/data0008/20131025DAT root@solaris:~#archive/samqfs1/data0008/20131025DATroot@solaris:~#unarchive-mlt-vsnVOL008/samqfs1/data0008/20131025DAT
如果不存在任何可用的副本,并且该文件不在磁盘高速缓存中,则数据可能已丢失。如果数据非常重要,请咨询专业的数据恢复公司寻求帮助。否则,取消归档已损坏的副本。
在本示例中,卷 VOL008 上的副本 1 和卷 VOL022 上的副本 2 不可用。sfind 命令在磁盘高速缓存上找不到该文件。这些数据不重要。因此我们在卷 VOL008 上取消归档损坏的副本:
root@solaris:~# undamage -m lt -vsn VOL008 /samqfs1/data0008/20131025DAT root@solaris:~# sfind . -vsn VOL008 -damaged /samqfs1/data0008/20131025DAT root@solaris:~# undamage -m lt -vsn VOL022 /samqfs1/data0008/20131025DAT root@solaris:~# sfind /samqfs1/data0008/20131025DAT -vsn VOL022 -damaged /samqfs1/data0008/20131025DAT root@solaris:~# sfind /samqfs1/data0008/20131025DAT -online root@solaris:~#archive/samqfs1/data0008/20131025DATroot@solaris:~#unarchive-mlt-vsnVOL008/samqfs1/data0008/20131025DAT
如果 sfind 在搜索已损坏文件时未返回任何结果,请将当前磁带中的文件回写到磁盘高速缓存。使用命令 sfind .-vsn volume-serial-number -offline -exec stage {}\;
-vsn 参数将搜索限定于在当前磁带上找到的文件(始终以一次一个磁带的方式迁移数据)。
-offline 参数进一步将 sfind 输出限定于尚不位于高速缓存中的文件,从而不会覆盖数据。
-exec stage {}\; 参数采用 sfind 返回的每个路径和文件名并将其用作 Oracle HSM stage 命令的参数。然后,stage 命令将指定的文件恢复到磁盘高速缓存中。该过程会不断重复,直到已回写所有符合条件的文件为止。
在本示例中,sfind -vsn VOL008 -damaged 命令未返回任何输出。因此我们使用 sfind 回写在 VOL008 上找到且尚未位于高速缓存中的所有文件:
root@solaris:~# sfind . -vsn VOL008 -damaged root@solaris:~#sfind.-vsnVOL008-offline-execstage{}\;
从磁带回写了文件后,有选择地对其重新归档。使用命令 sfind .-vsn volume-serial-number -online -exec rearch -r -m media-type {}\;,其中 media-type 是您要从中进行迁移的介质的类型。
-vsn 参数将搜索限定于还在当前磁带上找到的文件(始终以一次一个磁带的方式迁移数据)。
-online 参数进一步将 sfind 输出限定于位于高速缓存中的文件,从而不会覆盖数据。
-exec rearch -r -m media-type {}\; 参数采用 sfind 返回的每个路径和文件名并将其用作 Oracle HSM rearch -r -m media-type 命令的参数。-r 参数在子目录中递归运行该过程。-m 参数仅重新归档位于源介质上的文件。
在示例中,-vsn 参数值为 VOL008,-m 参数值指定 lt 表示 DLT 介质:
root@solaris:~#sfind.-vsnVOL008-online-execrearch-r-mlt{}\;
重复前面的步骤,直至 sfind 搜索不再找到文件。
重新归档了所有文件后,按照计划(请参见计划旧介质的迁移后处理)处理磁带。
重复该过程,直至所有旧介质上的数据都迁移至新介质。