一次SmartDataCenter headnode启动失败的修复
headnode启动时显示:
hash mismatch
press any key to reboot
重新启动了几次都是如此。即使是rescue模式也是一样。幸好这只是台测试用的机器,如果真的是一个负责整个数据中心的headnode无法启动,那后果简直不堪设想。目前我还没看到headnode有什么容错的方案。
记得上次关机之前运行了sdcadm experimental update-*命令更新过一些东西,或许是这个过程中出了什么问题。
尝试了几种方法,发现把headnode中的config文件备份下来,重新制作一个启动的U盘,然后把config文件再拷贝过去就可以重新启动了,原来的zones貌似都可正常启动。
具体如下:
- 把headnode启动U盘插入到一台Linux机器,把它根目录下的config文件拷贝出来。如果你的已经无法读取了,那我也没办法。
- 使用原来下载的img文件重新制作一个启动U盘。
- 使用此U盘启动headnode机器,使用rescue模式。同样需要在grub中设置os_console参数。
- 使用root登陆(密码文件在下载img文件的压缩包中)
- 登陆后设置网络,使此机器可以连通存放config文件的Linux机器。我要使用scp命令来复制。具体可参考SmartOS的网络配置方式。
- 在headnode机器上,进入到/mnt/usbkey目录中,将config文件复制到此文件夹下
- 完成后重新启动即可解决上述启动问题。2016/04/30 更新:
- 再次重启后发现headnode会默认使用PXE方式启动,这样无法启动headnode。修复方法是在headnode自动后,以root登陆,运行/usbkey/scripts/mount-usb.sh 脚本以挂载U盘,然后编辑/mnt/usbkey/boot/grub/menu.lst文件,将“default 0”这行改为“default 1”即可。0对应的就是PXE启动,1对应的就是“Live 64bit”的启动方式。