J 故障排除

此附录汇总了用于排除 ACSLS 中问题的工具、提示和技巧。用于故障排除的各种资源包括日志、主要观察点和诊断探测器。

ACSLS 事件日志

如果磁带库操作发生问题,ACSLS 事件日志是获得有用信息的第一站。该日志包含有关磁带库事件、状态更改和错误的信息。ACSLS 中的所有子组件都向 acsss_event.log 报告事件,方法是向称为 "Event Logger" 的进程发送消息。标准的事件日志是在安装 ACSLS 时自动创建的,它包含在文件 $ACS_HOME/log/acsss_event.log 中,其中 $ACS_HOME 通常是 /export/home/ACSSS/

记录的事件包括:

  • 重要事件

    重要事件是可帮助您管理磁带库的常规事件。例如,当审计已启动或终止,设备状态已更改,或 CAP 已打开或关闭时,将记录这些事件。

  • 磁带库错误

    磁带库错误是记录致命和非致命硬件和软件错误的事件。示例包括:LSM 故障、磁带问题、数据库错误、进程故障和磁带库通信故障。

事件日志中的每条消息都包括时间戳、报告该消息的组件的名称以及事件说明。要获得每条消息的完整说明,请参阅 ACSLS 消息手册。

ACSLS 控制台中的窗口显示事件日志的运行轨迹。您可以从任何 shell 窗口生成类似的显示。

  1. acsss 用户身份运行以下命令:

    acs_tail $ACS_HOME/log/acsss_event.log 
    
  2. 要查看整个事件日志,可使用文本编辑器(如 vi),您可以在其中浏览日志,搜索特定错误,或跟踪特定序列的事件。

管理事件日志

ACSLS 持续向 acsss_event.log 发送消息。

  • 当此文件达到阈值大小(默认为 500KB)时,该文件将重命名为 event0.log 并保存在日志目录中。acsss_event.log 随后可继续作为新文件使用。

  • acsss_event.log 再次达到阈值大小时,event0.log 将重命名为 event1.logacsss_event.log 将重命名为 event0.log

  • 此过程将继续,以生成为保留配置的日志文件数。

默认情况下,日志目录中保留 9 个事件日志文件。以后每次达到阈值后,最早的文件将被删除,其余所有文件将按顺序重命名。

您可以使用 acsss_config 选项 2 配置 acsss_event.log 的最大大小以及要保留的日志文件数。请参阅设置 CSI 调优变量

使用 greplog 搜索事件日志

使用诊断工具 greplog 可以在任何及所有事件日志文件中执行关键字搜索。greplog 的用法与 UNIX grep 实用程序非常类似,它将返回与给定的关键字表达式关联的完整日志消息。这便于您查看消息的日期和时间戳、消息编号以及与包含该表达式的每条消息相关的函数文本。

格式

greplog [-iv] pattern file_1 file_2 ... feline

选项

  • -i 指示 greplog 忽略搜索模式表达式的大小写。

  • -v 指示 greplog 将包含表达式的所有消息过滤出来,并在日志文件中显示所有条目。与模式表达式匹配的条目除外。

    模式:模式是要使用的搜索标准。

    file_1 file_2 ... file_n 
    

greplog 工具在文件列表中接受多个文件参数和通配符表达式。

示例

  • 要显示事件序列中的所有事件,可使用序号。

    greplog 1392 acsss_event.log 
    
  • 搜索有关卷 CART89 的所有消息的事件日志:

    greplog CART89 acsss_event.log 
    
  • 搜索有关磁带挂载的消息的事件日志的所有已归档副本:

    greplog -i mount event*.log 
    

其他日志

acsss_event.log 包含有关 ACSLS 运行进程的任何方面的所有消息。但是,日志目录中还有其他文件,这些文件包括有关外部实用程序的状态信息,如备份和还原及安装实用程序。

  • acsss.pid-存储当前运行的 acsss_daemon 的进程 ID。

  • acsss_config.log-包含每个磁带库配置的摘要。

  • acsss_config_event.log-包含由 acsss_config 例程发布的事件消息。

  • bdb_event.log-包含由数据库备份实用程序 bdb.acsss 发布的事件消息。

  • cron_event.log-包含由 cron 实用程序发布的消息。要查看 cron 调度,可运行命令 crontab -l

  • acsls_start.log-包含与 acsls 服务有关的启动或关闭消息。

  • di_trace.log-包含与数据库接口有关的跟踪信息。

  • ejectingLogs-该目录包含过去十天 ejecting.sh 操作的摘要信息。

  • install.log-包含在运行安装脚本 install.sh 时发布的事件消息。

  • ipc_trace.log-包含与 ACSLS 进程间通信相关的跟踪信息。

  • rdb_event.log-包含由数据库恢复实用程序 rdb.acsss 发布的事件消息。

  • timed_bkup.sh.log-包含与自动数据库备份实用程序相关的事件消息。

日志目录中还有其他跟踪日志,具体取决于在您系统上启用的特定跟踪功能。其中包括以下日志:

  • acsss_stats.log-由 acsss_config 启用的卷统计信息跟踪。

  • acsss_trace.log-根据软件支持人员的请求启用的客户机服务器跟踪。

  • acslh.log-根据软件支持人员的请求启用的主机 LMU 跟踪。

  • scsilh.log、mchangerX.log、scsipkt.log-所有这些日志包含对与 SCSI 连接的磁带库的 SCSI 通信跟踪,并根据软件支持人员的请求启用。

跟踪日志管理

根据软件支持人员的请求启用的跟踪日志可能增长很快。需要对这些日志进行监视和管理,以减少磁盘空间用尽的问题。

提供了 monitor.sh 实用程序来执行自动日志管理和归档服务。语法为:

monitor.sh <name of log>

启用此实用程序监视特定日志时,它将允许日志增长到 1MB(默认值),然后使用 gzip 压缩该日志,将具有时间戳名称的压缩日志文件放在 ACSSS/log/log_archives 子目录中。如果跟踪保持启用状态,此操作将继续。

Java 组件日志

ACSLS 中的 Java 组件(包括 ACSLS GUI 和逻辑磁带库软件组件)保留了一些日志。这些日志位于 $ACS_HOME/log/sslm 目录中。

WebLogic 安装过程记录在 weblogic.log 中。WebLogic 和 ACSLS GUI 操作记录在 AcslsDomain.logAdminServer.log 中。

基于 Web 的 GUI 中的用户活动审计迹位于 guiAccess.log 中。

Java 组件和传统 ACSLS 组件之间的事务记录在 surrogate_trace.0.log 中。

Java 客户机组件和 ACSLS 服务器之间的 IPC 包在 acslm_ipc_trace.0.log 中跟踪。

ACSLS GUI 遇到的错误记录在 gui_trace.0.log 中。

SMCE 和 SCSI(光纤)客户机之间的低级别通信记录在 smce_trace.0.log 中。

这些日志位于 $ACS_HOME/log/sslm 目录中。

主要观察点

可使用多个实用程序确认 ACSLS 各个方面的状态。

  • psacs-显示所有 ACSLS 运行进程的摘要。这是指示 ACSLS 是否运行的最佳方法。典型的输出应显示不少于 12 个不同进程,都是通用父进程的子进程。

  • acsss status-检查 acsdb 数据库服务是否在运行

  • 显示 ACSLS 发行版和维护级别:

    • 在 Solaris 上:

      pkginfo -l STKacsls

    • 在 Linux 上:

      rpm -q ACSLS

    • 在 Solaris 或 Linux 上:

      in_get_version

诊断 ACSLS 启动问题

  • 查看 acsss_event.log

  • 查看 acsls_start.log

  • 查看 acsss_event.log 的末尾以获得说明该问题的消息。

  • 有关消息说明以及如何操作以解决问题的信息,请参阅 ACSLS 消息指南。

  • 使用 acsss l-status 显示 ACSLS 服务的状态。

    使用 acsss l-status 显示 ACSLS 服务的状态摘要。对于每个服务,logfile 条目指向的日志数据可能包含解释阻止 ACSLS 启动的条件的详细消息。

  • ACSLS 在启动期间超时

  • 在 Solaris 上,要根据您的配置显示计算所得的 ACSLS 启动超时时段,可使用 acsss timeout

测试磁带库连接

ACSLS 提供用于确认磁带库的有效物理连接的实用程序。具体选择什么工具最好由活动上下文确定。

testports

此实用程序将测试与配置到 StorageTek ACSLS 的每个磁带库的连接。它也是用法最简单、功能最全面的工具。该测试没有干扰性,不会影响正常的磁带库操作。因为 testports 使用 StorageTek ACSLS 数据库来确定磁带库端口名称和磁带库类型,所以必须将磁带库配置到 StorageTek ACSLS,这样才能使 testports 正常运行。

  • 对于 TCP/IP 磁带库,testports 将验证是否连接,以及磁带库是否联机并被 StorageTek ACSLS 使用。

  • 对于 SCSI 和串行连接的磁带库,"acs" 和“端口”必须脱机才能使 testports 打开测试连接。

要运行此实用程序,命令语法如下:

testports 

磁带库兼容性级别或微代码级别将显示。

testlmutcp

此实用程序将 TCP/IP 包提交给网络连接的磁带库。

要测试磁带库连接,可在命令行中包括磁带库主机名或 IP 地址:

testlmutcp <ip_address>

testlmutcp <hostname>

要在磁带库对 ACSLS 联机时测试连接,可指定介于 50002 和 50016 之间的未使用的套接字编号。例如:

testlmutcp <ip_address>:50002

成功的响应将包括所连接的磁带库的兼容性级别。

testlmu

此实用程序可用于测试 ACSLS 和传统 StorageTek 串行连接的磁带库之间的连接。要运行此实用程序,可将 devlink 路径提交至串行端口设备节点:

testlmu /dev/term/0

磁带库必须对 ACSLS 处于脱机状态才能使 testlmu 打开串行连接。

pinglmu.sh

此实用程序可用于在磁带库对 ACSLS 处于联机状态时验证 ACSLS 和串行连接的磁带库之间的通信。成功的响应包括磁带库兼容性级别。

probescsi.sh

此实用程序将测试 ACSLS 服务器和 SCSI 或光纤连接的磁带库之间的连接。要运行此实用程序,可指定指向介质转换器设备的 devlink 路径。语法为:

probescsi.sh /dev/mchangerX

其中 X 是被测试的磁带库的特定介质转换器实例。

磁带库必须对 ACSLS 处于脱机状态才能使 probescsi 打开 SCSI 连接。成功的响应包括所连接的磁带库的微代码级别。

probeFibre.sh

此实用程序将搜索可从 ACSLS 服务器访问的所有光纤连接的磁带库。语法为:

probeFibre.sh

成功的响应将显示每个光纤连接的磁带库的型号,及其目标、LUN ID 和全局端口名称 (WWPN)。

使用 -v 选项还可以显示主机总线适配器的型号。

probeFibre.sh -v

showDevs.sh

此实用程序可显示有关为其创建了介质转换器链接的每个介质转换器设备的详细消息。

  • showDevs.sh

    显示每个已连接的介质转换器磁带库的磁带库型号、修订版级别和容量。

  • showDevs.sh -w

    该选项还包括每个磁带库的 WWPN。

  • showDevs.sh -s

    该选项还包括每个磁带库的序列号。

测试客户机连接

客户机应用程序使用 RPC(远程过程调用)协议通过 TCP/IP 与 ACSLS 通信。如果某个客户机系统无法与 ACSLS 通信,则可以使用 rpcinfo 测试是否能够从该客户机访问 ACSLS。

  1. 在 ACSLS 服务器上,确认 ACSLS 正在运行。

    psacs

  2. 在 ACSLS 服务器上,确认 RPC 守护进程正在运行。

    ps -ef | grep rpc

  3. 在 ACSLS 服务器上,确认对 TCP 和 IDP 注册了程序编号 300031。

    rpcinfo | grep 300031

    此程序编号确认 ACSLS 正在运行,并且 ACSLS 已在 RPC 中注册。

  4. 在客户机或网络上的任何 UNIX 计算机上,使用 rpcinfo 与 ACSLS 服务器上的程序编号 300031 交换包。

    指定 ACSLS 服务器的 IP 地址以及程序编号。

    rpcinfo -t <ip address> 300031

    如果通信交换成功,rpcinfo 实用程序将显示以下消息:

    program 300031 version 1 ready and waiting

    program 300031 version 2 ready and waiting

    这将确认 ACSLS 可供网络中的客户机连接使用。

通过桥接磁带机连接的光纤磁带库中的 CAP 已锁定

当其他 ACSLS 实例接管磁带库时,光纤连接的磁带库(通过桥接磁带机连接)中的 CAP 可能会变为锁定状态。有关此问题的详细信息以及解决方案,请参见 SL150 附录中的CAP(中转槽)在弹出期间未打开

为 Oracle 支持搜集诊断信息

在服务呼叫过程中,Oracle 支持可能会要求您发送整组诊断日志和其他诊断信息以便进行分析。使用一个命令即可收集所有这些数据:

get_diags

当该实用程序已收集了所有信息时,它将提示您通过电子邮件发送数据或者使其可用于手动传输。

如果您选择直接从 ACSLS 计算机通过电子邮件发送数据,请确保在您的 ACSLS 计算机与 Internet 之间可以进行电子邮件通信。您的企业可能设置了防火墙来阻止直接从目标计算机发送电子邮件。在这种情况下,您可以在企业内部通过电子邮件将信息发送给您自己,然后再将诊断数据转发给 Oracle 技术支持。

此外,您还可以选择手动传输这些信息。get_diags 实用程序会告诉您到何处查找在等待传输的 tar 数据包。通常,诊断数据的暂存区域是 /export/backup/diag/acsss。

ACSLS 和安全增强的 Linux (SELinux)

SELinux 在 Oracle Linux 中默认为启用。SELinux 超越了标准的 Unix 级别的访问控制,它根据用户角色和直接上下文域实施对系统资源的访问。启用 SELinux 实施方案后,将禁止 ACSLS 访问自己的 PostgreSQL 数据库,如果没有为此类访问建立角色和上下文的特殊策略的话。

卸载 ACSLS 的 SELinux 策略模块

安装 ACSLS 时,内核中会装入三个 SELinux 策略模块:allowPostgracsdbacsdb1。SELinux 实施方案有效时,这些模块提供 ACSLS 访问自身数据库和其他系统资源所需的定义和实施方案例外情况。安装这些模块后,您应该能够运行常规 ACSLS 操作,包括数据库操作(例如 bdb.acsssrdb.acsssdb_export.shdb_import.sh),而无需禁用 SELinux 实施方案。

为了加快软件升级速度,在卸载 ACSLS 软件包时,不会自动移除由 ACSLS 装入的 SELinux 策略模块。要手动移除这些模块,可获得 ACSLS 模块的列表:

# semodule -l | grep acsdb

# semodule -l | grep allowPostgr

对于每个模块,以以下方式移除模块:

# semodule -r <module name>

管理 SELinux 实施方案

安装了 ACSLS 之后,如果您遇到了与访问相关的问题,即系统响应“权限被拒绝”,而传统文件权限设置是有效的,那么拒绝访问的根源可能在于 SELinux。

要确认是否启用了 SELinux 实施方案,可运行以下命令:sestatus

# sestatus
SELinux status:   enabled
Current mode:     enforcing

您可以使用以下命令临时禁用 SELinux 实施方案:setenforce:

# setenforce Permissive

如果 SELinux 实施方案处于允许模式,您可以立即查看对失败资源的访问是否可以恢复。如果必要资源在允许模式下对授权用户可用,但在强制模式下不可用,这表明需要更新的 SELinux 策略。

永久禁用 SELinux 安全性(在引导时):

  1. 编辑文件:/etc/selinux/config

  2. SELINUX=enforcing 更改为 SELINUX=permissive

要重新启用 SELinux 实施方案,root 需要具有 sysadm_r 角色。

# newrole -r sysadm_r
# setenforce enforcing

确认 SELinux 是导致明显限制的原因后,可以查看 SELinux 审计日志,了解禁止访问所需资源的实际规则。

# vi /var/log/audit/audit.log

audit.log 提供每次访问 SE 实施方案的尝试成功或失败的摘要。您应查看失败的事件。对于 ACSLS,特别要查看与用户 acsssacsdb 相关的事件。

您可以查看与任何给定的文件或目录相关的 SELinux 上下文属性:

# ls -Z <file name>

可以使用以下命令查看给定进程的上下文属性或当前 shell 的上下文属性:secon。可使用命令 chcon 更改文件或目录的上下文属性。有关这些操作可参阅手册页。

可以针对 audit.log 中失败的操作创建一个策略模块。

# cd /var/log/audit
# audit2allow -a -M <ModuleName> 

这将评估由 SELinux 记录的失败事件,并创建策略模块文件 <ModuleName>.pp。现在可将该文件装入 Linux 内核中,以允许执行被阻止的操作。

# semodule -i <ModuleName>.pp 

由于 audit2allow 创建的策略将启用 audit.log 中确定的所有限制,因此最好确保 audit.log 仅包含您特别要允许的操作。您可以保存原始的 audit.log 并创建一个新文件。

# mv audit.log audit1.log
# touch audit.log

继续执行在创建策略模块之前要捕获的操作。

有关 SELinux 的更多信息,请参阅手册页:

# man selinux

验证 GUI 是否正常运行

checkGui.sh 实用程序将检查常见因素以评估 GUI 是否正常运行。如果 GUI 未运行,此实用程序可能会引导用户找出问题可能的原因。

此实用程序将检查以下各项:

  • 是否在系统中启用了 weblogic?

  • 是否有虚拟或过时进程禁止了 weblogic 操作?

  • SlimGUI 应用程序是否部署成功?

  • weblogic 和 GUI 是否能够响应发送到本地主机的 http 请求?

  • weblogic 是否能够响应发送到主机的 Internet 地址的 http 请求?

  • 是否在服务器上启用了防火墙服务?如果启用了,是否有策略接受到 weblogic 端口 7001 和 7002 的传入请求?

在 Linux 系统中,您可能会发现默认启用了名为 iptables 的防火墙。您可以完全禁用 iptables,也可以添加策略以接受到端口 7001 和 7002 的传入通信。

  1. 要启用这些端口(作为 root),可编辑文件 /etc/sysconfig/iptables。添加以下两行:

    -A INPUT -p tco --dport 7001 -j ACCEPT
    -A INPUT -p tco --dport 7002 -j ACCEPT
    

    确保不会将这些规则插入到将在检查传入包之前匹配这些包的另一规则之后。例如,不要将其附加到 REJECTall 的规则之后的 iptables 链的末尾。

    如果您要使用 iptables 命令添加这些规则:

    • 列出 (iptables -L) 或输出 (iptables -S) 表。

    • 添加规则。

      只是将规则附加 (iptables –A) 到链末尾并不能产生您需要的结果,因为前面的规则可能会阻止新规则匹配任何输入。

      可按照 rulenum 插入 (iptables -I) 规则。

    • 在更改后列出 (iptables -L) 或输出 (iptables -S) 表,并确保现有规则不会阻止检查端口 7001 和 7002 的新规则。

      这可以确保新规则可以匹配传入的包。

      checkGui.sh 实用程序将检查是否存在规则以接受端口 7001 和 7002 上的输入。它不验证这些规则是否在正确的 iptables 链中,也不会实际处理新规则。换句话说,checkGui.sh 不验证以前的规则是否会阻止检查新规则。

  2. 重新启动 iptables

    service iptables restart
    

Solaris 中类似的服务是 ipfilter,默认情况下通常不会启用它。

GUI 故障排除提示

下表讨论一些 GUI 故障排除提示。

表 J-1 GUI 故障排除提示

问题
解决方法

我已将 https://<hostname> 输入到浏览器中,但响应页声明“无法连接”。

正确的 URL 是:https://hostname.domain:7002/SlimGUI/faces/Slim.jsp

ACSLS GUI 页面不完整。某些框架不完整或缺少所有部分。

单击浏览器中的刷新按钮。

Java WebLogic 拒绝了我认为有效的用户 ID 和密码。我无法登录

请咨询您的本地 ACSLS 管理员。如果您是管理员,可使用 userAdmin.sh 实用程序列出用户、添加用户或更改用户密码。

如果用户仍无法登录,请检查系统是否有足够的内存,然后使用 userAdmin.sh 的选项 5 重新启动 ACSLS GUI。或者,您可以使用 svcadm disable weblogic 和 svcadm enable weblogic 重新启动 WebLogic。

在 GUI 的一个或多个窗口中显示 java 错误堆栈跟踪。

按浏览器中的刷新按钮。

如果问题仍然存在,可使用 acsss status 确认 ACSLS 服务正在运行。

如果服务未运行,则使用 acsss enable 启动它们。

如果 ACSLS 服务正在运行,可使用 userAdmin.sh 重新启动 GUI。或者,您可以使用 svcadm disable weblogic 和 svcadm enable weblogic 重新启动 WebLogic。

如果您对系统没有 root 访问权限,则可以使用 acsss shutdown 关闭所有服务,然后使用 acsss enable 重新启动它们。此过程将重新启动 GUI。

索引树框架中缺少 "Logical Libraries" 的选择。

您必须首先创建一个逻辑磁带库。选择:"Configuration and Administration" -> "Logical Library Configuration" -> "Create Logical Library"。

在 "Tape Library Operations" 或 "Tape Libraries & Drives" 下的 "Volumes" 页面中没有列出任何卷。

这表示没有对该磁带库进行初始审计。选择:"Tape Library Operations" -> "Audit"。

"Logical Libraries" 下的 "Volumes" 页面中没有列出任何卷。

这表示尚未将卷分配到逻辑磁带库。选择:"Logical Library Configuration" -> "Assign Volumes"。

GUI 响应时间太慢

在 GUI 主工具栏中的 "Preferences" 按钮下增大警报更新间隔。

我需要添加 GUI 用户,更改 GUI 用户的密码,或设置 acsls_admin 密码。

请参见userAdmin.sh

此实用程序允许您添加用户、更改用户密码并指示您如何重置 acsls_admin 密码。

浏览器需要安全证书。

请参见为 HTTPS 配置自分配的数字证书