如何强制 Google Compute Engine ubuntu 实例执行 fsck?

如何强制 Google Compute Engine ubuntu 实例执行 fsck?

我在 Google Compute Engine(云服务器)中有一个运行 ubuntu 16.04 的实例。

我注意到根文件系统上的文件系统损坏如下:

==>ls -l data/vocabulary/
ls: cannot access 'data/vocabulary/Makefile': Permission denied
ls: cannot access 'data/vocabulary/vocab-count.txt': Permission denied
ls: cannot access 'data/vocabulary/vocab-random-access.db': Permission denied
ls: cannot access 'data/vocabulary/vocab-list.txt': Permission denied
ls: cannot access 'data/vocabulary/vocab.db': Permission denied
ls: cannot access 'data/vocabulary/CVS': Permission denied
total 0
d????????? ? ? ? ?            ? CVS
-????????? ? ? ? ?            ? Makefile
-????????? ? ? ? ?            ? vocab-count.txt
-????????? ? ? ? ?            ? vocab-list.txt
-????????? ? ? ? ?            ? vocab-random-access.db
-????????? ? ? ? ?            ? vocab.db

但是,我尝试“强制 fsck”并重新启动,但没有成功。我尝试触摸文件“/forcefsck”并重新启动,但 fsck 就是不发生。

我也尝试设置 fsck 剩余计数,但似乎也没有效果。

我应该怎么做才能继续进行 fsck?

答案1

看起来您的文件系统可能有问题。

您可以使用一个程序来运行 fsck 实用程序来尝试恢复,但在开始之前,我想提一下,如果您有此实例运行时的备份快照,或者如果此机器只是根据标准模板或映像创建的,那么从那里恢复可能是一个更实用的选择。这肯定与客户操作系统有关,因此简单地恢复到较旧的工作映像应该可以解决您的所有问题。

如果由于某种原因这不是一个选择,那么您可以继续尝试修复此实例。

为了在磁盘上运行 fsck 实用程序,您需要安全地分离磁盘并将其附加到另一个实例,因为 fsck 仅适用于未安装的文件系统。

首先,停止(不要删除,只是停止)实例,然后分离启动盘

完成后,按照步骤 2-6在“验证您的磁盘是否具有有效的文件系统”下。

完成后,您可以停止(不是删除,只是停止)调试实例,分离磁盘,然后将其重新连接到原始实例。

在您验证磁盘已安全移动后,您可以继续删除调试实例。

继续启动原始实例。如果 fsck 成功并且文件系统问题是根本原因,则它应该可以正常启动和工作。

相关内容