NetWorker:磁带库驱动器排序问题故障处理
摘要: 本文介绍了 SAN 环境中磁带库的一个众所周知的问题,该问题导致操作系统更改设备名称,从而导致应用程序故障。
症状
在即插即用操作系统中,按发现的顺序为设备分配 SCSI 目标地址。
由于 SAN 发现顺序不同,并且连接丢失会触发即插即用重新映射,因此目标编号会发生变化,并且无法保持固定。
即插即用根据枚举顺序重命名设备,因此任何有意或意外的连接中断都可能导致设备被重新分配新名称。
“驱动器排序”问题描述了 NetWorker 为设备配置的 驱动程序名称 与实际名称不匹配的情况。这通常是初始 NetWorker 库配置后操作系统中的驱动程序名称更改所致。这通常是即插即用操作系统问题,会影响 Windows 和 Linux。
有许多错误和条件与此问题相关,包括但不限于:
- 错误:'
nsrd: media info: failed unloading drive `{driver handle}' to slot {slot number}, error '69'' - 错误:'
{hostname} the destination component full' - 错误:'
{driver handle} read open error, no such device or address' - 错误:'
opening: I/O error' - 错误:'
nsrd: Jukebox '{jukebox}' failed: expected volume '{volid}' got {volid}' - 错误:'
nsrd: Jukebox '{jukebox}' failed: expected volume '(volume_name)' got 'NULL'' - 错误:'
read open error, device not ready' - 错误:'
nsrjb: Jukebox error, All allocated drives are not usable, unrecoverable operation errors' - 错误:'
nsrd: Jukebox '{jukebox}' failed: expected volume '{volid}' got {volid}' - 错误:'
nsrd: Jukebox '{jukebox}' failed: expected volume '{volume}' got 'NULL'' - 错误:'
read open error, device not ready' - 错误:'
nsrjb: Jukebox error, All allocated drives are not usable, unrecoverable operation errors' - 错误:'
nsrd: media warning: {driver handle} reading: read open error: No media in drive.' - 错误:'
inventory: Bar code label `{barcode}' does not match media db bar code label, updating media db' - 错误:'
Illegal request, medium not present' - 错误:'
nsrd: media info: failed unloading drive `{driver handle}' to slot {slot number}'
原因
NetWorker 在初始设置期间创建库对象,将磁带机链接到它们在此时拥有的操作系统生成的设备句柄。它是一种静态关联,反映配置时的关系。例如,一个库可能有两个设备:
物理驱动器 1 = \\.\Tape0 (或者也许 /dev/nst0 在 Linux 中)
物理驱动器 2 = \\.\Tape1 (或 /dev/nst1)
在即插即用系统(如 Windows 或 Linux)中,任何设备消失(包括重新启动或连接更改)都可能导致操作系统重命名设备。特别是在设备的发现可能无序的 SAN 上,设备在下一次重新启动时可能会以不同的方式命名,例如,与上面
的对比:物理驱动器 1 = \\.\Tape1 or /dev/nst1
物理驱动器 2 = \\.\Tape0 or /dev/nst0
假设 有任何 设备使用所需名称,则对这些设备发出的命令可能仍然有效。由于操作系统重命名设备后库的驱动程序句柄关联不再与物理元素匹配,因此 NetWorker 会忘记设备名称。例如,NetWorker 可能会将磁带盒加载到一个驱动器中,但使用过时、错误的设备名称,从而在操作系统重命名后向错误的驱动器发出命令。假设找到意外卷(或根本没有发现卷),这可能会导致各种错误。驱动器订购条件有许多可能的原因:
- 手动错误配置磁带库,方法是使用
jbconfig或jbedit命令 - 重新启动主机、存储适配器、存储连接硬件或磁带设备
- 暂时失去与设备的连接
- 在操作系统中禁用和重新启用设备
- 操作系统更新
- 设备或存储适配器驱动程序更新
解决方案
永久命名:
这被认为是最佳实践,即使您没有遇到问题,支持人员也可能会推荐这种做法,以主动保护您。使用以下文章中的信息:
其他信息
手动重新配置
如果您无法立即启用应用程序弹性并重新配置库,则可以考虑几种手动替代方法:
- NMC 重新配置:您可以使用库实例的 重新配置 选项删除所有受影响设备的设备定义,然后从 设备 容器中删除剩余的磁带设备实例,然后再使用更正后的新名称重新扫描和重新配置,从而更新 NetWorker 的配置。
jbconfig命令检查它们是否正在运行:这些命令仍然是 NetWorker 套件的一部分,但不再使用,并且需要更高级的 NetWorker 以及磁带库和存储传输技术知识。- 要从头开始,请使用
jbconfig对于手动库创建控制:如何使用 jbconfig 命令手动配置 NetWorker 磁带库
- 要从头开始,请使用
- 强制重命名:可以禁用或删除设备,并按照与设备在 NetWorker 中的当前配置相对应的顺序读取/重新启用它们。例如,在上述的简单 Windows 场景中,可以禁用这两个设备,首先重新启用在 NetWorker 中配置为 Tape0 的实例,以强制操作系统再次将该设备命名为 Tape0。Linux 方法类似,但使用 /proc/scsi/scsi 文件直接删除和重新扫描设备。