我目前在Hyper-V环境中运行Debian 8.6的VM实例。 VM用于许多cron任务,这些任务将文件从一台已安装的机器复制到我们的NAS,并在这些复制的文件上运行一些md5校验和。
我遇到的问题是,每隔几周,文件系统就会出现损坏,因此我的cronjobs停止执行。如果我尝试通过crontab -e
编辑crontab,则会收到以下错误:
/tmp/crontab.Vvp59T: Input/output error
Creation of temporary crontab file failed - aborting
我还注意到某些命令无法识别:
root@srv-schl-008:/home/ilienert# dmesg | lpr
bash: lpr: command not found
然后我尝试运行文件系统检查但没有任何效果。这是我所做的日志:
root@srv-schl-008:/home/ilienert# parted /dev/sda 'print'
Model: Msft Virtual Disk (scsi)
Disk /dev/sda: 53.7GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 538MB 537MB fat32 boot, esp
2 538MB 51.5GB 51.0GB ext4
3 51.5GB 53.7GB 2145MB linux-swap(v1)
root@srv-schl-008:/home/ilienert# fsck /dev/sda2
fsck from util-linux 2.25.2
e2fsck 1.42.12 (29-Aug-2014)
/dev/sda2: recovering journal
fsck.ext4: Bad magic number in super-block while trying to re-open /dev/sda2
/dev/sda2: ********** WARNING: Filesystem still has errors **********
root@srv-schl-008:/home/ilienert# echo $? # status of last command
12
最后,当我们重新启动VM时,我们会看到this splash。而且,此时我们被迫从较早的状态恢复VM,从那时起它可以再工作几周,然后再次失败。知道为什么会这样吗?
以下是我们环境的规格:
Debian版本:8.6.0
Hyper-V在两台带有Windows Server 2016 Datacenter的群集服务器上运行 硬件规格Hyper-V主机:2x E5-2650v2 8核,256GB DDR3 RAM
备份解决方案:Veeam Backup&复制9.5
VM规格:
集群:是的 代:2
动态记忆:16834MB
虚拟处理器数量:4
硬盘类型:VHDX
答案 0 :(得分:0)
很难根据您发布的信息说明出现了什么问题(随时间推移)。我担心你将不得不做更多的调查。以下是我想到的两件事:
1)我们无法放弃托管虚拟机的物理硬盘驱动器开始出现故障的可能性。我建议如果可能的话,自己检查磁盘(不是通过虚拟机)。
2)恢复机器后,每天注意主系统日志,它们可能包含(错误)消息,可能有助于解释机器出了什么问题。我通常会运行一些bash命令来检查主日志并将结果附加到文件中,这样(你可能没有机器上的所有日志,有些可能需要安装你没有的软件包,随意适应你自己使用):
echo '---------Dmesg-----------' >> /var/log/mylog.txt
dmesg --level=emerg,alert,crit,err >> /var/log/mylog.txt 2>&1
echo '---------systemctl-----------' >> /var/log/mylog.txt
systemctl --state=failed --all -q >> /var/log/mylog.txt 2>&1
echo '---------grep Xorg.0.log-----------' >> /var/log/mylog.txt
grep -wi 'error\|fail\|fault\|corruption\|hung\|lockup\|unkown\|segmentation\|critical\|missing\|(EE)' /var/log/Xorg.0.log >> /var/log/mylog.txt 2>&1
echo '---------journalctl - the last report-----------' >> /var/log/mylog.txt
journalctl -q --boot -0 --priority=3 >> /var/log/mylog.txt 2>&1
echo '---------grep var/log/boot.log -----------------' >> /var/log/mylog.txt
grep -wi 'error\|fail\|fault\|corruption\|hung\|lockup\|unkown\|segmentation\|critical\|missing' /var/log/boot.log >> /var/log/mylog.txt 2>&1
echo '---------end of mylog reports-----------' >> /var/log/mylog.txt
我还建议每天重启机器,直到找到问题为止。
我希望这有帮助!