我是这方面的新手,但我遇到了麻烦。我有一个运行 nagios 的小型虚拟机。今天它开始出现故障,我在消息日志中看到一些错误。
@someone~]# tail /var/log/messages 8 月 31 日 02:25:57 muspllx043v kernel:sd 2:0:1:0:[sdb] 结果:hostbyte=DID_OK driverbyte=DRIVER_OK 8 月 31 日 02:25:57 muspllx043v kernel:sd 2:0:1:0:[sdb] CDB:写入(10):2a 00 05 fe ce d8 00 00 48 00 8 月 31 日 02:25:57 muspllx043v kernel:end_request:I/O 错误,dev sdb,扇区 100585176 8 月 31 日 02:25:57 muspllx043v kernel:JBD2:在 dm-2-8 上刷新文件数据时检测到 IO 错误 8 月 31 日02:25:57 muspllx043v 内核:中止设备 dm-2-8 上的日志。8 月 31 日 02:25:57 muspllx043v 内核:EXT4-fs (dm-2):在逻辑偏移量 303958 处,inode 1576714 的延迟块分配失败,最大块数为 1,错误为 -30 8 月 31 日 02:25:57 muspllx043v 内核:8 月 31 日 02:25:57 muspllx043v 内核:这不应该发生!!数据将丢失 8 月 31 日 02:25:57 muspllx043v 内核:ext4_new_inode 中的 EXT4-fs 错误(设备 dm-2):日志已中止 8 月 31 日 02:25:57 muspllx043v 内核:ext4_da_writepages 中的 EXT4-fs 错误(设备 dm-2):日志已中止
我尝试重新启动 Nagios 并收到以下错误:
@someone~]# service nagios restart 正在运行配置检查... mktemp:无法通过模板
/tmp/.configtest.XXXXXXXX': Read-only file system /etc/init.d/nagios: line 88: : No such file or directory grep: : No such file or directory grep: : No such file or directory /etc/init.d/nagios: line 108: /usr/local/nagios/var/nagios.configtest: Read-only file system /etc/init.d/nagios: line 109: /usr/local/nagios/var/nagios.configtest: Read-only file system chmod: changing permissions of
/usr/local/nagios/var/nagios.configtest' 创建文件:只读文件系统 chown:更改“/usr/local/nagios/var/nagios.configtest”的所有权:只读文件系统 cat::没有此文件或目录
在与我的合作伙伴讨论了一些问题之后,有人建议我检查文件系统,因此我运行了 fsck 命令,但出现了以下错误:
@someone~]# sudo fsck / fsck from util-linux-ng 2.17.2 e2fsck 1.41.12 (17-May-2010) /dev/mapper/vg_muspllx043v-lv_root: 恢复日志 fsck.ext4: 尝试重新打开 /dev/mapper/vg_muspllx043v-lv_root 时超级块中的魔法数字错误 e2fsck: io 管理器魔法错误!
现在我无法在控制台上执行任何命令,并且出现输入/输出错误。
@someone~]# df -h -bash: /bin/df: 输入/输出错误
如果我尝试打开一个新的会话,我会得到:连接已关闭。
fsck 是否可能弄乱了文件系统?我可以浏览目录,但无法执行任何操作。
@someone scripts]# df -h -bash: /bin/df: 输入/输出错误 @someone scripts]# ls -l -bash: /bin/ls: 输入/输出错误 @someone scripts]# pwd /home/nagios/scripts @someone scripts]# cd @someone ~]# pwd /root @someone ~]# cd /var/log/ @someone log]# ls -lrt -bash: /bin/ls: 输入/输出错误 @someone log]# pwd /var/log @someone log]# @someone ~]#
我希望你能帮助我。
答案1
首先, fsck
不会对以读写方式挂载的文件系统执行任何操作。
其次……文件系统似乎已损坏……因此操作系统将磁盘重新安装为只读。这有点像是保护自身免受进一步损坏的故障保护措施。(注意到“只读文件系统”错误的数量了吗?)
第三... fsck 可以对文件系统进行更改... 但如果出现问题,它会要求您在应用之前确认任何可能导致数据丢失的更改... 除非您覆盖默认行为(-y
例如标志)“修复”不能保证您的操作系统或数据是安全的。它只是意味着它将使卷变成正确的 ext2 格式。这有时意味着文件和目录将被删除。即使您没有运行 fsck... 您可能能够从这些扇区中提取的任何数据都可能无法使用。
第四... 看起来好像在某个时候设置了 RAID?(我看到了卷组和逻辑卷...)它可能不是 RAID... 但我不知道为什么人们会在没有 RAID 的情况下设置逻辑卷。您是否有多个磁盘(虚拟或物理)发生故障?
最后一步:恢复。看起来损害已经造成……而且数字取证不太可能让你走得太远(即使你向公司支付了一大笔钱)。最好的办法是为 nagios 创建一个新 VM……并尝试从旧的 nagios 安装中挽救和恢复你能恢复的内容。
最后的告别语:我希望你吸取了教训。备份是王道。RAID 会失败……如果你不监控它们,情况会加倍。将操作系统和数据放在单独的磁盘/卷上。(这会使备份/恢复更容易)监控你的系统。