注意

本文档适用于 Ceph 的开发版本。

在 Windows 上对 Ceph 进行故障排除

MSI 安装程序

MSI 源代码可以在这里查阅: https://github.com/cloudbase/ceph-windows-installer

以下命令可用于生成 MSI 日志

msiexec.exe /i $msi_full_path /l*v! $log_file

WNBD 驱动程序安装失败将记录在此处: C:\Windows\inf\setupapi.dev.log。卸载驱动程序后需要重启服务器,否则后续安装尝试可能会失败。

Wnbd

对于 WNBD 故障排除,请查看此页面: https://github.com/cloudbase/wnbd#troubleshooting

权限

大多数 rbd-wnbdrbd device 命令需要特权。请确保使用提升权限的 PowerShell 或 CMD 命令提示符。

崩溃转储

用户空间崩溃转储可以放置在可配置的位置,并为所有应用程序或仅为预定义的应用程序启用,如这里所述: https://docs.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps

每当 Windows 应用程序崩溃时,都会向 Application Windows 事件日志提交一个事件,事件 ID 为 1000。该条目还将包括进程 ID、故障模块名称和路径以及异常代码。

请注意,为了分析崩溃转储,需要调试符号。我们目前使用 MinGW 构建 Ceph,因此默认情况下 DWARF 符号将嵌入到二进制文件中。windbg 不支持此类符号,但可以使用 gdb

gdb 可以调试正在运行的 Windows 进程,但它不能打开 Windows 小转储。在将此功能合并到上游之前,可以使用以下 gdb 分支: https://github.com/ssbssa/gdb/releases。作为替代方案,可以使用 cv2pdb 转换 DWARF 符号,但请注意此工具对 C++ 的支持有限。

ceph 工具

ceph Python 工具目前无法在 Windows 上本地使用。稍加改动它可能会运行,但主要问题是 Python 目前不允许在 Windows 上使用 AF_UNIXhttps://bugs.python.org/issue33408

作为替代方案,可以通过适用于 Linux 的 Windows 子系统 (WSL) 使用 ceph 工具。例如,可以通过以下方式联系正在运行的 Windows RBD 守护程序

ceph daemon /mnt/c/ProgramData/ceph/out/ceph-client.admin.61436.1209215304.asok help

IO 计数器

除了标准的 RBD 性能计数器外,还可以使用以下命令检索 libwnbd IO 计数器

rbd-wnbd stats $imageName

同时,可以使用以下命令获取 WNBD 驱动程序计数器

wnbd-client stats $mappingId

请注意,wnbd-client 映射标识符将是完整的 RBD 镜像规范(rbd device list 输出的 device 列)。

缺失的库

如果缺少所需的 DLL 之一或不支持,Ceph 工具可能会静默退出并返回 -1073741515 返回代码。

Dependency Walker 工具可用于确定缺失的库。

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入