DigitalOcean恢复模式挂载分区并修改文件方法
目前Kaijia使用DigitalOcean(有学生优惠~)跑个人网盘和实验项目,DO的网速相对其他线路要快不少方便网盘数据下载上传。由于DO的硬盘有限无法满足网盘的需求,Kaijia将网盘数据文件夹存在另一台大硬盘的服务器上,然后使用SSHFS挂载到DO。
Kaijia在/etc/fstab中设置了自动挂载,但由于不明原因(应该是因为SSH连接比较耗时),系统启动时一直无法自动挂载SSHFS。以前做运维的计算机老师上课常说不要乱抄别人的配置,这次Kaijia还撞上去了。Kaijia搜索了一下直接按照找到的结果在/etc/fstab中加上了“delay_connect”属性,也没有仔细测试,重启之后系统就直接卡死在了启动界面上了。这种情况一般可以在Console中跳过挂载,但这个方法在这里无法实现,Kaijia等待了5分钟还是没有响应,这种情况只能使用DO的恢复模式(Recovery Mode)来修改刚才编辑的文件了。
搜索了一下DigitalOcean的知识库发现DO并没有提供恢复模式相关的文章,唯一的一篇是“How To Recover from File System Corruption Using Fsck and a Recovery ISO”介绍如何在恢复模式下使用Fsck(虽然云环境下一般用不着),并且也没有中文文档,所以Kaijia决定将这个过程分享给大家。
首先需要在DO管理面板中强制关闭主机,在Power(电源)->Power Off(关闭)中点击Power Off(关闭)。等主机彻底关闭后在Settings(设置)->Recovery(恢复)中点击Mount Recovery Kernel(挂载恢复内核),这将更改主机的内核,并挂载恢复模式。完成内核更改后Power(电源)->Boot(启动)中点击Boot(启动)就可以启动恢复模式,这是点击右上角的Console Access(访问控制台)就可以进入终端了。
DigitalOcean的恢复模式和其他平台(例如OnApp)提供的恢复模式类似,都比较简单并且没有默认没有挂载硬盘。Kaijia之前写过一篇OnApp XEN恢复模式使用的文章,也可以参考。首先要使用mount命令将挂在数据分区,一般按照标准流程创建的DO实例分区都是/dev/vda1,在VirtIO关闭的情况下是/dev/sda1(除非主动要求修改,此种情况不太可能发生)。在终端输入命令将数据分区挂在到/mnt文件夹下。
1 2 |
mkdir /mnt mount /dev/vda1 /mnt |
挂载过程虽然会有提示挂载失败,但运行命令后数据分区实际已经挂载成功了,可以访问/mnt文件夹确认文件是否存在。
挂载完成之后即可以使用基础Unix命令执行一些简单的操作,下面Kaijia来讲一下坑爹的文件编辑问题。DO的恢复模式内置的命令和程序有限,但没有vim、vi、nano等任何文本编辑工具也是醉了!
上图便是DO提供的所有命令,因为没有一个可以交互式编辑文本文件所以我们只能用其他命令代替这三个命令(当然也可以尝试使用wget从网上下载vim的二进制包),好在DO提供了sed命令可以变相实现配置文件内容的修改。此例中Kaijia需要移除误写入的“delay_connect”属性,因此需要运行:
1 |
sed -r 's/^delay_connect,//' /etc/fstab |
即可以完成文件编辑了。所有的恢复操作完成后,运行:
1 |
poweroff |
关闭系统,回到控制面板,在Settings(设置)->Kernel(内核)中将主机的内核修改为原来的内核,如果不知道内核版本的话可以改为Original Kernel(初始内核),点击Change(更改)完成修改。然后回到Power(电源)->Boot(启动)中点击Boot(启动)主机就会重新启动到正常模式下了。
评论