在我的虚拟机崩溃之后

         因为开发过程中的一个不小心(其实就是makefile写错了,奶奶的),系统整体崩溃了。这个所谓的崩溃,怎么说呢?其实就是整个linux centos的虚拟机进不去,启动不了。最后查出来,整个分区表都被删了,而且连/bin/sh下面的工具都没了。What the fucking day!还好是在周末!于是从昨天下午开始,就开启了我不眠不休的修复过程。

        1、挂载硬盘到其他虚拟机。失败。因为读不出来分区表,挂上去的硬盘也是瞎的。

        2、使用光盘iso文件,本来想进入救援模式重新引导硬盘,最后遇到“you don't have any linux partitions press return to get a shell the system will reboot automatically when you exit from the shell”。然后进入shell。操作命令,执行chroot /mnt/sysimage/ ,报错chroot:cannot run command '/bin/sh' no such file ro directory。然后网上有人说执行:e2label /dev/sda1 。报错e2label :Bad magic number in super-block while trying to open /dev/sda2 Couldn't find valid filesystem superblock. 又妥妥的死胡同了。

ps:如何进入救援模式请参考如下链接:http://www.osyunwei.com/archives/5764.html

        3、实在没辙,只能使用livecd 直接进入linux系统,挂载原始虚拟硬盘。

     &nbs

<think>好的,我现在要确认我的Ubuntu系统是否开启了事件日志,以便在虚拟机崩溃后可以通过日志分析原因。首先,我需要了解Ubuntu中常用的日志系统是什么。记得之前学过一点,Ubuntu使用systemd作为初始化系统,而systemd的日志服务是journald,负责收集和存储日志数据。所以,系统日志应该是由journald管理的。 接下来,我需要检查journald是否在运行。可以使用systemctl命令来检查服务状态。命令应该是`systemctl status systemd-journald`。如果服务状态显示active (running),说明日志服务正在运行,系统已经在记录日志了。如果处于停止状态,可能需要启动它或者排除故障。 然后,我需要确定日志是否持久化保存。默认情况下,journald的日志是存储在内存中的临时文件系统里,重启后会被清除。但如果是Ubuntu的服务器版或者经过配置,可能启用了持久化存储。要检查这一点,可以查看`/etc/systemd/journald.conf`文件,看看是否有`Storage=persistent`的配置项。如果没有或者被注释掉,可能日志没有持久化,需要修改配置文件并重启journald服务。 接下来,如何查看已有的日志呢?使用`journalctl`命令可以查看日志内容。例如,`journalctl -b`显示本次启动后的日志,`journalctl -k`显示内核日志。如果虚拟机崩溃后能进入系统,可以通过这些命令查看相关时间段的日志。如果系统无法启动,可能需要从Live CD或其他方式访问磁盘中的日志文件,前提是启用了持久化存储。 另外,关于虚拟机崩溃的问题,可能需要检查与虚拟化相关的日志。比如,如果是使用KVM/QEMU,可以查看libvirtd的日志,通常位于`/var/log/libvirt/`目录下。如果是VirtualBox,日志可能在虚拟机配置目录中。此外,系统日志中也可能包含硬件或驱动问题导致的错误,比如`dmesg`输出的内核信息可能会有线索。 用户可能需要知道如何过滤和搜索特定时间或事件的日志。例如,使用`journalctl --since "2023-10-01 12:00:00" --until "2023-10-01 13:00:00"`来查看特定时间段的日志,或者用`journalctl -p err`显示所有错误级别的日志条目。此外,结合grep命令可以进一步筛选关键字,比如`journalctl | grep -i "error"`。 如果用户发现日志没有持久化,需要指导他们启用持久化存储。修改journald.conf文件中的Storage参数为persistent,然后执行`sudo systemctl restart systemd-journald`重启服务。之后,日志会保存在`/var/log/journal/`目录下,重启后也不会丢失。 最后,确保用户了解如何归档和备份日志,以便在需要时进行分析。可以建议定期清理旧日志,使用`journalctl --vacuum-size=100M`来限制日志大小,防止磁盘空间被占满。 总结一下,步骤应该是:检查journald服务状态,确认日志持久化设置,查看相关日志文件,分析虚拟机崩溃时间段的日志,必要时调整配置确保日志保存。同时,针对虚拟化软件本身的日志也要检查,综合各种日志信息来诊断问题原因。</think>为了确认您的Ubuntu系统是否开启了事件日志功能,并确保在虚拟机崩溃后能通过日志分析原因,请按以下步骤操作: --- ### **1. 检查系统日志服务(systemd-journald)状态** Ubuntu使用`systemd-journald`作为默认日志服务,记录内核、系统进程和应用程序的日志。 - **查看服务状态**: ```bash systemctl status systemd-journald ``` - 如果显示 `active (running)`,说明日志服务已启用。 - 如果未运行,执行 `sudo systemctl start systemd-journald` 启动服务。 --- ### **2. 确认日志持久化存储** 默认情况下,Ubuntu的日志存储在内存中(重启后丢失)。若需长期保存,需启用持久化存储: - **检查配置**: ```bash sudo grep -i "Storage" /etc/systemd/journald.conf ``` - 若输出 `Storage=persistent`,表示已启用持久化。 - 若未配置或显示`Storage=volatile`,需修改配置文件: ```bash sudo nano /etc/systemd/journald.conf ``` 取消注释并修改为: ``` Storage=persistent ``` - 重启服务: ```bash sudo systemctl restart systemd-journald ``` --- ### **3. 查看日志内容** - **查看完整日志**: ```bash journalctl ``` - **过滤关键日志**: - 按时间筛选(替换为崩溃发生时间): ```bash journalctl --since "2023-10-01 10:00:00" --until "2023-10-01 11:00:00" ``` - 按错误级别筛选: ```bash journalctl -p err # 仅显示错误日志 journalctl -p warning # 显示警告及以上级别 ``` - 按服务/进程名筛选: ```bash journalctl -u libvirtd # 查看libvirt(KVM/QEMU)日志 ``` --- ### **4. 检查虚拟机相关日志** - **KVM/QEMU日志**: - Libvirt日志路径:`/var/log/libvirt/` - 虚拟机实例日志: ```bash sudo virsh dumpxml <虚拟机名称> | grep log # 查找日志文件路径 ``` - **VirtualBox日志**: - 日志通常位于虚拟机配置目录(`.vbox` 或 `.VirtualBox`)中。 --- ### **5. 分析内核日志** 虚拟机崩溃可能与硬件或驱动问题相关,需检查内核日志: ```bash dmesg | grep -i "error" # 过滤内核错误 journalctl -k # 查看所有内核日志 ``` --- ### **6. 确保日志归档与清理** - **限制日志大小**(避免占用过多磁盘): ```bash sudo journalctl --vacuum-size=500M # 保留最近500MB日志 ``` --- ### **总结** 1. 确认 `systemd-journald` 服务运行正常。 2. 启用日志持久化存储(修改`/etc/systemd/journald.conf`)。 3. 通过 `journalctl` 和 `dmesg` 检查崩溃时间段的错误日志。 4. 结合虚拟机软件(如KVM/VirtualBox)的专用日志进一步分析。 通过以上步骤,您可以在虚拟机崩溃后,从系统日志和虚拟化软件日志中定位具体原因(如资源不足、驱动冲突或内核错误)。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值