南大通用GBase 8c数据库常见的磁盘故障是磁盘空间不足、磁盘出现坏块、磁盘未挂载等。部分磁盘故障会导致文件系统损坏,例如磁盘未挂载,数据库管理自动定期执行磁盘检测时会识别故障并将实例停止,查看数据库状态时对应实例状态异常;部分磁盘故障不会导致文件系统损坏,例如磁盘空间不足,数据库管理无法检测到,服务进程访问到故障磁盘会异常退出,例如数据库无法启动、checksum 校验不对、页面读写失败、页面校验错误等。
1、对于会导致文件系统损坏的故障,查看状态会显示对应实例状态持续为 Unknown,定位方法如下:
- 查看日志,日志中会有类似 “data path disc writable test failed”异常,说明文件系统已损坏。
- 文件系统损坏可能是磁盘未挂载,通过 ls –l 可以看到该磁盘对应的目录权限异常,如下。
- 也可能是磁盘出现坏块,然后操作系统将文件系统保护起来,拒绝读写,可以使用磁盘坏块检查工具如 badblocks 检查磁盘是否有坏块,如下。
# badblocks /dev/sdb1 -s -vChecking blocks 0 to 2147482623Checking for bad blocks (read-only test): donePass completed, 0 bad blocks found. (0/0/0 errors)
2、对于不会导致文件系统损坏的故障,服务进程访问到故障磁盘会异常退出,定位方法如下。
- 查看日志。
日志中会有文件读写错误,例如“No space left on device”、“ invalid page header n block 122838 of relation base/16385/152715”。 文件读写错误可能是磁盘空间不足,通过 df -h 可以看到磁盘空间已达 100%,如下。
# df -hFilesystem Size Used Avail Use% Mounted ondevtmpfs 255G 0 255G 0% /devtmpfs 255G 35M 255G 1% /dev/shmtmpfs 255G 57M 255G 1% /runtmpfs 255G 0 255G 0% /sys/fs/cgroup/dev/mapper/openeuler-root 196G 8.8G 178G 5% /tmpfs 255G 1.0M 255G 1% /tmp/dev/sda2 9.8G 144M 9.2G 2% /boot/dev/sda1 10G 5.8M 10G 1% /boot/efi/dev/mapper/openeuler-home 1.5T 69G 1.4T 5% /hometmpfs 51G 0 51G 0% /run/user/0tmpfs 51G 0 51G 0% /run/user/1004/dev/sdb1 2.0T 169G 1.9T 9% /data