Azure Linux虚拟机如果在启动过程中出现磁盘检测失败,会导致虚拟机无法成功启动,这种情况下,由于没有控制台的登录方式,往往需要通过将系统磁盘挂在到其他虚拟机上进行fstab文件的修改或者磁盘修复,修复完成后再使用修复后的磁盘重建虚拟机。这种方法相对比较耗时,有没有方法能够保证在数据磁盘出现问题时,不会影响到系统的启动呢?我们可以在rc.local中写入mount语句,由于rc.local是在启动后执行的,所以即使mount语句报错,也完全不影响虚拟机的启动。
以下是一个测试小实验:
-
首先,在虚拟机上挂了4块数据盘做了raid0,挂载到/mnt/md2下:
raid0分区的UUID为53128084-c839-4294-a8e2-2ae089819280
-
接着,在/etc/rc.local中添加一行自动挂载的命令mount -U 53128084-c839-4294-a8e2-2ae089819280/mnt/md2:
-
reboot虚拟机后,可以看到raid0分区正常挂载:
-
在Portal中将4块磁盘中的任意一块分离下来,破坏了raid0,再次重启虚拟机,发现机器可以正常启动,raid0未挂载:
可以看到,rd.local中的脚本进行挂载,即使挂载失败,也不会影响系统的正常启动和登陆。