vm虚拟机断电后LINUX不能用了

vm虚拟机断电后LINUX不能用了,第1张

VM其实跟真实的电脑也是一个道理的都是存在硬盘上的,当然突然的断电也会造成文件损坏或丢失,所以看来用原来的安装盘试试看能不能修复了,实在不行的话就重装吧!

唉真不是好办法。

如果一些主板在关机之后电源不是自动关闭,需要手动关闭电源,请在grub里加上:

引用:

#boot=/dev/sda

default=0

timeout=5

splashimage=(hd0,7)/boot/grub/splash.xpm.gz

hiddenmenu

title Fedora (2.6.23.1-42.fc8)

root (hd0,7)

kernel /boot/vmlinuz-2.6.23.1-42.fc8 ro root=LABEL=/1234 rhgb quiet acpi=force

initrd /boot/initrd-2.6.23.1-42.fc8.img

只要加上红色的那句话就可以正常关机。 具体原因分析如下:

Kernel 起来以后会执行 arch/i386/kernel/setup.c

引用:

void __init setup_arch(char **cmdline_p)

{

unsigned long max_low_pfn

paravirt_post_allocator_init()

dmi_scan_machine()

}

Dmi_scan_machine() 会从BIOS 里面获取DMI 支持的信息。ACPI driver 会通过

引用:

static int __init blacklist_by_year(void)

{

int year = dmi_get_year(DMI_BIOS_DATE)

/* Doesn't exist? Likely an old system */

if (year == -1) {

printk(KERN_ERR PREFIX "no DMI BIOS year, "

"acpi=force is required to enable ACPI/n" )

return 1

}

/* 0? Likely a buggy new BIOS */

if (year == 0) {

printk(KERN_ERR PREFIX "DMI BIOS year==0, "

"assuming ACPI-capable machine/n" )

return 0

}

if (year <CONFIG_ACPI_BLACKLIST_YEAR) {

printk(KERN_ERR PREFIX "BIOS age (%d) fails cutoff (%d), "

"acpi=force is required to enable ACPI/n",

year, CONFIG_ACPI_BLACKLIST_YEAR)

return 1

}

return 0

}

来获取信息,一旦dmi_get_year 取到的DMI 信息是不支持ACPI 的话,就会打印红色的那部分信息。

然后内核认为ACPI不支持,最终导致机器不能通过ACPI 关机。

出现错误的原因是由于我突发奇想写了一个reboot集群的脚本,导致集群非法关机,然后就炸了。。。

在我使用上述reboot脚本后,发现MobaXterm(远程工具)ssh死活连不上了。

赶紧检查集群,发现如下报错:

由于心急没有管报错(第一次见看不懂),直接输密码进入界面(我的是无可视化界面的CentOS 6.5)。

进界面后首先尝试ssh其他节点。报错。

尝试从宿主机ping虚拟机,也ping不通。

那么首先确定网络问题,查看/etc/sysconfig/network-scripts/ifcfg-eth0下的ip配置。

没有问题。

输入命令查看ip:

发现只有127.0.0.1,此时基本确定网络服务故障或未自启动

输入命令启动网络服务:

可以看到ip正常了。

测试宿主机ping虚拟机也正常了。

测试虚拟机ping虚拟机也正常了。

测试ssh本机也正。。。等等!

ssh没通,报错如下:

和最开始的报错是一样的,有了经验,大致也猜测的出很有可能sshd服务也没有自启动。

输入sshd启动命令:

控制台报错信息:

/var/lock/subsys/sshd not group or world-writable

出现此报错,整个系统问题已经初现端倪。

虽然启动sshd服务报错了,但尝试ssh本机却正常了。

此时试着启动集群的各个进程。

果然,大量报错。

只读文件系统 几个大字摧毁我幼小的心灵

想起解决的网络、ssh问题,明白了罪恶的源头就在....

就是它!万恶之源!

首先查看挂载的分区:

又有报错,不过看不懂。猜测是mount命令相关的文件也被修改成只读了。

开机报错的/dev/sda1分区并没有挂载,而/dev/sda3是正常的rw(读写)状态。

我有点晕。

尝试修复/dev/sda3分区:

第一次使用fsck命令,看不太明白,不过该命令没起到什么作用。

有点绝望,随手尝试了修改/dev/sda3分区的状态:

居然不报错了!

至此报错全部消失,网络服务和ssh服务也正常开机自启了。

留下懵逼的我,具体原理日后学习再补充。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/9009568.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存