捕获诊断信息
当您的 Unraid 服务器出现问题时,收集详细 信息至关重要,以便进行有效的故障排除。这些信息有助于其他人提供准确和及时的帮助,特别是在论坛上发帖时。
:::info[Diagnostics 包括...
诊断 zip 文件包含多个匿名文本文件,创建您 Unraid 系统的详细快照,包括:
- 系统配置:信息关于您的array、共享、网络设置和已安装的插件。
- 系统日志:来自内核、WebGUI 和系统服务的日志,记录可能导致问题的事件。
- 硬件信息:有关连接驱动器、控制器和其他硬件组件的详细信息。
- Docker和VM信息:整体配置用于Docker和虚拟机(不包括关于您个人容器或VMs的信息)。
:::
系统诊断
Unraid 在 WebGUI 的 Tools → Diagnostics 下提供了一个用于故障排除的 Diagnostics 工具。 该工具将生成一个 zip 文件,您可以下载并附加到论坛帖子以获取支持。所有诊断文件都是基于文本的,用户可以查看它们以了解所包含的信息。
场景 | 如何捕获 | 笔记 |
---|---|---|
WebGUI 可用 | 在 WebGUI 中使用 工具 → 诊断 来生成并下载诊断 zip 文件。 | 诊断默认是匿名的,以保护敏感数据。 |
WebGUI 不可用 | 通过 SSH、telnet 或直接控制台访问以运行 diagnostics 命令。zip 文件保存到 /boot/logs 。 | 重启前务必捕获诊断以保持日志完整。 |
阵列 在正常模式下启动 | 这是捕获诊断的首选方法,因为它提供了最完整的信息,尤其是关于驱动器状态的信息。 | 如果这不可能,请参阅 Persistent logs section 以找到替代捕获方法。 |
在论坛发帖时附加单个诊断zip文件-避免单独上传提取的文件。
诊断数据的匿名化
By default, diagnostics are automatically anonymized. If you enable Mover logging under Settings → Scheduler → Mover Settings, the syslog will include details about files the Mover processes. It's best to allow Mover logging only when troubleshooting specific Mover-related issues, as it may reveal file paths and names.
当您的系统正常关闭时,会话日志会自动保存到闪存驱动器中。重新启动后,您可以通过 Tools → Syslog → syslog-previous 访问它。这个日志也会在下次启动时包含在诊断中。然而,如果系统崩溃,系统日志将丢失。在这些情况下,建议启用 syslog 镜像到闪存或使用远程 syslog 服务器 来保留日志以进行故障排除。
测试驱动器读取性能
您可以使用内置的 Linux 工具来评估硬盘的读取性能。这在诊断缓慢的 parity 同步、缓慢的磁盘响应或 array 或 cache 中驱动器间不匹配的速度时非常有帮助。
如果您遇到以下问题,请考虑运行磁盘读取基准测试:
- 极其缓慢的 parity 构建或 parity checks
- 来自特定磁盘的文件传输速度异常慢
- 添加或更换磁盘后,尤其是在混合使用SSD和HDD时,驱动器不匹配
- 重新分配的扇区或UMDACRC错误,可能表明驱动器故障
尽管这些测试不会为您提供确切的实际文件传输速度,但它们可以指出性能不佳的磁盘和任何控制器瓶颈。
快速测试 (hdparm)
hdparm
工具测量磁盘的缓存和缓冲读取速度。
要运行测试,请将X
替换为您的磁盘设备(如sdb
或sdg
),然后输入以下命令:
hdparm -tT /dev/sdX
-T
结果显示缓存读取速度。-t
结果显示缓冲(顺序)磁盘读取性能。
多次运行此测试以获得更可靠的基准。例如,您可以使用以下命令行将测试运行 12 次:
for ((i=0;i<12;i++)); do hdparm -tT /dev/sdX; done
确保替换 /dev/sdX
为有效的物理设备。避免选择像 /dev/md1
这样的逻辑 Unraid 设备,因为这些设备包含可能会扭曲原始性能读数的 parity 过程。
全面测试(diskspeed.sh)
要更详细地评估所有连接的驱动器,包括 parity 和数据驱动器,考虑使用社区脚本 diskspeed.sh
。
该脚本:
- 在磁盘表面多个线性偏移处测试读取速度
- 生成CSV数据和性能热图(图像)
- 可以识别出表现不佳的区域,这可能是硬件故障或问题SMR驱动器的征兆
要开始使用diskspeed.sh
:
- 从Unraid论坛下载脚本。
- 将它放在像
/boot/scripts/
这样持久的路径中。 - 使其可执行:
chmod +x /boot/scripts/diskspeed.sh
- 运行脚本:
bash /boot/scripts/diskspeed.sh
此脚本仅执行只读操作,不会修改驱动器上的任何数据。然而,最好在空闲期间安排测试,因为它可能会影响磁盘 I/O 并干扰 array 性能。
持久日志(syslog server)
持久日志对于在重启之间保留系统事件记录至关重要。与系统重启时重置的标准日志不同,持久日志使用 Unraid 的内置 syslog 服务器 来保障您可以诊断随时间出现的崩溃或间歇性问题。
选择正确的日志记录方法
前往 Settings → Syslog Server 设置持久日志记录。每种方法都有优缺点:
方法 | 优点 | 缺点 | 最佳用于 |
---|---|---|---|
镜像到闪存 | 捕获启动过程事件 | 可能迅速磨损闪存驱动器 | 短期诊断(几天) |
远程 syslog | 日志存储在另一台设备上 | 需要一个独立的常开服务器 | 长期监控(几周到几个月) |
本地 syslog | 在 array 或 cache 上保持日志,减少闪存磨损。 | 如果系统崩溃,则较难访问 | 无需外部设备即可进行持续日志记录 |
有关详细的配置帮助,请查看 WebGUI 工具栏中的 帮助 图标。
启用syslog服务器
- 镜像到闪存
- 远程syslog服务器
- 本地syslog服务器
- 在镜像到闪存下选择是。
- 点击 应用。日志将保存到闪存驱动器上的
/boot/logs/syslog
在下次重启时,该文件将重命名为 /boot/logs/syslog-previous
。您可以通过 工具 → Syslog → syslog-previous 查看此文件,并且它还将包含在(匿名)诊断中。
原理
- 默认情况下,Unraid 在每次正常关闭时将 syslog 复制到闪存驱动器。这通过“在关闭时将 syslog 复制到闪存”设置进行管理,并且默认启用。
- 如果您正在排查崩溃,可以启用“镜像到闪存”。这将同步 syslog 到
/var/log/syslog
和/boot/logs/syslog
。如果发生崩溃,崩溃前记录到闪存的 syslog 条目将被保留。
两种方法在下次启动后都会生成一个/boot/logs/syslog-previous
文件,您可以通过syslog查看器访问,并且将被包含在诊断中。
"在关闭时复制 syslog 到闪存" 设置对于您的闪存盘是安全的。然而,启用 "镜像到闪存" 可能会导致长时间开启时过多写入。对于长期记录需求,请考虑使用本地或远程 syslog server。
- 将本地syslog服务器设为启用。
- 在远程syslog服务器下输入您的syslog服务器的IP地址。
- 点击 应用。
- 日志将流式传输到您指定的设备。
如果您将从远程syslog server上传文件到论坛,它们将不会被匿名。
要在服务器上创建 Unraid syslog 的持久可靠副本:
- 将本地syslog服务器设为启用。
- 配置以下选项:
- 本地syslog文件夹:使用仅缓存或首选共享(SSD最适合)。
- 旋转设置:调整文件大小和数量限制。
- 为了获得最佳的结果并确保所有 syslog 数据(包括启动事件)都被捕获,请将 远程 syslog 服务器 字段设置为您服务器的 IP 地址("环回方法"),否则 syslog 将不会保存到指定共享中。
- 这确保syslog事件既存储在本地又在重启之间持续保存,而无需写入闪存驱动器。
- 点击 应用。
- 日志将被保存到您指定的共享中。
- 如果您将从本地syslog server上传文件到论坛,它们将不会被匿名。
- 使用这种方法保存的日志不会包含在标准诊断中。如果您需要支持,请单独附上。
访问Docker容器日志
虽然标准诊断仅提供有限的Docker和VM数据,但您可以直接访问容器日志以获得更详细的故障排除信息。
检索Docker日志:
- 通过 WebGUI
- 通过命令行
- 持久日志记录
- 导航至 Docker > Containers
- 点击所需容器的 Logs 图标
使用命令:
docker logs [container_name] > /path/to/save/log.txt
要将容器日志映射到主机路径,请按以下方式配置您的容器模板:
/path/in/container:/logs
虚拟机日志
VM 日志可以通过各自的 hypervisor 访问(例如,QEMU 日志位于 /var/log/libvirt/
)。查看 VM 平台的文档以获取更多详细信息。
当您需要针对应用程序特定问题寻求支持时,请记住单独附上相关的容器或VM日志。