网络数据管理协议(NDMP)是一个网络协议,该协议使得单一备份应用程序也可以备份运行任何操作系统的服务器。这种方法使得异构网络的备份变得更容易。通常,备份软件供应商利用NDMP协议建立特定的代理平台。该代理的作用就是建立基于NDMP协议与备份应用软件的通讯,反过来,也用NDMP协议联系备份硬件。
但是,正如NDMP的名称所述,它是一个网络协议,和其他任何协议一样,它也会出现错误。不容乐观的是,检测NDMP的错误是一件比较棘手的事情。当NDMP于1996年最初起草的时候,NDMP的草案中描述了不同错误信息的数量,这些错误信息可能会在各种条件下出现。
下文列出了NDMP原始版本中描述的所有错误的简单介绍,以及这些错误的解释:
NDMP备份错误
NDMP_DEVICE_BUSY_ERR——指定的磁带驱动器已经在使用中。
NDMP_DEVICE_OPENED_ERR——NDMP正在试图打开超过所允许个数范围的连接。
NDMP_NOT_AUTHORIZED_ERR——当一个NDMP需求在连接被认证之前发出,将会产生该错误。
NDMP_PERMISSIONS_ERR——连接已经被认证,但是证书缺少必要的权限。
NDMP_DEV_NOT_OPEN_ERR——在没有首先打开一个连接的情况下试图访问一个设备。
NDMP_IO_ERR——磁带驱动器返回了一个I/O错误。
NDMP_TIMEOUT_ERR——本次操作已超时。
NDMP_ILLEGAL_ARGS_ERR——该请求包含了非法参数。
NDMP_NO_TAPE_LOADED_ERR——驱动器中没有磁带。
NDMP_WRITE_PROTECT_ERR——驱动器中的磁带是写保护的。
NDMP_EOF_ERR——发生了文件的意外结束。
NDMP_EOM_ERR——磁带已经用完了(遇到介质结束标记)
NDMP_FILE_NOT_FOUND_ERR——没有找到请求的文件。
NDMP_BAD_FILE_ERR——一个由坏的文件描述符引起的错误。
NDMP_NO_DEVICE_ERR——请求的磁带驱动器不存在。
NDMP_NO_BUS_ERR——指定的SCSI总线找不到。
NDMP_NOT_SUPPORTED_ERR——NDMP协议不支持,或者只有该协议的一个子协议支持。
NDMP_XDR_DECODE_ERR——消息不能被解码。
NDMP_ILLEGAL_STATE_ERR——请求在目前的状态不能被处理。
NDMP_UNDEFINED_ERR——发生了一个非特异性的错误。
NDMP_XDR_ENCODE_ERR——有一个编码应答报文的错误。
NDMP_NO_MEM_ERR——内存分配错误。
如你所见,上文列出的大多数错误信息都相当简单。但是,1996年以来,许多错误信息已经改变。在过去的14年里,NDMP协议在不断演变,而且有些备份软件供应商甚至对该协议进行了针对他们专有的改变。如果这些还没有使故障检测变得足够棘手,那么许多备份供应商掩盖实际的NDMP错误代码,并用他们自己的错误信息将其替换,使得检测NDMP错误变得更加困难。
一个最好的例子就是Symantec公司的NetBackup (和Backup Exec),他们通过数字代码表示NDMP的错误。最常见的错误代码是16和99
NDMP错误16
16号错误等同于NDMP_NO_DEVICE_ERR错误消息,有时被表示为NDMP_NO_DEVICE_ERR(16)。本质上,这个错误是指备份软件与磁带驱动器(或磁盘)之间的通讯发生了故障。
错误16可以由一个硬件错误所导致(磁带驱动故障,停电,坏的SCSI控制,等等),但这个错误并不是所有时候都由硬件错误所导致。这类故障发生时,最好的方法就是重新启动运行备份软件的机器。当然,这一方法并不总能凑效。
如果重启机器没有解决问题,那么下一步可以重新设定与该问题相关的软件组件。NDMP是一个跨平台协议,所以你使用的步骤决定于你所使用的平台以及你所使用的备份软件。例如,如果你正在NetWare服务器上运行Backup Exec,那么你需要停止服务,并卸载Backup Exec软件。之后,你需要确认SCSI驱动没有在控制服务器的磁盘存储。确认之后,你需要卸载和重新安装SCSI驱动,然后重新安装Backup Exec软件。Novell公司的网站上提供了修复NDMP16号错误完整解决过程的文档。
记住,我在上文给出的步骤更像是一个变通方案而不是解决办法。重新安装SCSI驱动和备份软件通常能让你正常访问磁带驱动(假设没有硬件问题),但是这并没有找出导致这个问题的真正原因。
如果你定期遇到这个问题,那么你需要检查你的文档,以调查超时阈值的调整。在某些情况下,SCSI超时和网络延迟都是导致错误16的原因。
NDMP错误99
99号错误的故障检测稍微困难一些。这是一个一般性错误,只是简单地反映了备份失败的事实。在大多数情况下,99号错误经常会在备份软件无法访问需要备份的文件时发生,这里所指的无法访问文件是由路径错误导致,而不是权限错误。这类错误也会在执行增量备份时出现,但是没有文件在上次备份的基础上发生改变。如果你是在Unix操作系统中运行备份软件,那么你也许有时候会因为/etc/hosts文件中存在无效的localhost项而导致这个错误。
如果你遇到了99号错误,你应该检查你的备份软件的日志为线索,以寻找问题的根源。记住,导致这个错误的许多原因都在这里描述了,99号错误是一个一般性错误,并有可能意味着任何东西。就其本身而论,查看你的日志是搜集这个错误根源的最佳方法。
在这篇文章中,我像其他任何协议一样,解释了NDMP协议的偶然性错误。NDMP错误的问题在于,他们经常都太过简单,或者备份软件掩盖了实际的错误信息。就这点来说,你也许需要检查你的服务器日志,或者当发生错误时,向您所使用的备份软件的供应商咨询更多的信息。