如何修复“sudo:无法打开...只读文件系统”?

Joh*_*ohn 193 filesystem restart read-only

标题可能不像我希望的那样具有描述性,但想不出更好的。

我服务器的文件系统进入只读状态。我不明白它为什么这样做以及如何解决它。

我可以通过 SSH 连接到服务器,例如在尝试启动 apache2 时,我得到以下信息:

username@srv1:~$ sudo service apache2 start
[sudo] password for username:
sudo: unable to open /var/lib/sudo/username/1: Read-only file system
 * Starting web server apache2                                                                                                                                                                                                               (30)Read-only file system: apache2: could not open error log file /var/log/apache2/error.log.
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
Run Code Online (Sandbox Code Playgroud)

当我尝试重新启动服务器时,我得到:

username@srv1:~$ sudo shutdown -r now
[sudo] password for username:
sudo: unable to open /var/lib/sudo/username/1: Read-only file system
Run Code Online (Sandbox Code Playgroud)

一旦我手动重新启动它,它就会启动而没有任何警告或消息说有问题。

我希望有人能指出我解决这个问题的正确方向。

nan*_*rad 103

如果存在文件系统一致性问题,文件系统通常会在系统运行时进入只读状态。这在fstabas中指定,errors=remount-ro并且将在 FS 访问失败或通过Alt+ SysRq+请求紧急只读重新挂载时发生U。你可以运行:

sudo fsck -Af -M
Run Code Online (Sandbox Code Playgroud)

强制检查所有文件系统。正如其他答案之一所述,查看dmesg也非常有帮助。

编辑:不要忘记-M命令行上的 。

注意:正如 Bibhas在他的回答中提到的:如果fsck在其版本横幅后卡住:

$ sudo fsck -Af -M
fsck from util-linux 2.20.1
Run Code Online (Sandbox Code Playgroud)

您可能想尝试使用特定于 EXT4 的 fsck

$ sudo fsck.ext4 -f /dev/sda1
Run Code Online (Sandbox Code Playgroud)

如果有问题的分区/dev/sda1是 ext4 文件系统。

  • 这没有帮助,我只是在尝试运行该命令时遇到相同的错误。`sudo:无法打开/var/lib/sudo/kuplack/1:只读文件系统``来自util-linux 2.20.1的fsck` (39认同)
  • 我认为你不应该*强制*对其他 r/w 挂载的文件系统进行文件系统检查。这可能会损坏您的数据。添加`-M` 选项以跳过已挂载的文件系统。(`-M 不检查挂载的文件系统并为挂载的文件系统返回退出代码 0。`来自 FSCK(8)) (4认同)
  • @DarshanChaudhary `-M` 标志会导致 fsck 跳过已安装的文件系统。请参阅 `fsck (8)` 联机帮助页。 (3认同)
  • 是的,我需要删除 -M,因为 /dev/sda1 已挂载,为了让您的生活更轻松,请添加 -Afy(y 表示对所有提示回答“是”)......我对 VM 玩得又快又松,所以我'我通常可以使用这种类型的解决方案,但是如果这是未备份的硬件,则可能会采用不同的方法并读取 dmesg。 (2认同)
  • 这实际上最终破坏了我的文件系统:( (2认同)

Bib*_*has 56

六分法的答案对我不起作用。每次我尝试执行sudo fsck -Af -M它只是显示

$ sudo fsck -Af -M
fsck from util-linux 2.20.1
Run Code Online (Sandbox Code Playgroud)

没有别的。没有错误或任何东西。对我来说,启动到实时光盘并执行此操作 -

sudo fsck.ext4 -f /dev/sda1
Run Code Online (Sandbox Code Playgroud)

如果有问题的分区/dev/sda1是 ext4 文件系统。

  • -M 表示不挂载文件系统。您的文件系统 /dev/sda1 已挂载(我猜是 /)。所以就跳过了。 (6认同)
  • 谢谢你的回答。这是唯一有效的方法 (4认同)
  • `sudo fsck.ext4 -f /dev/sda1` 有效。还是需要重启。 (3认同)

Sul*_*ane 52

这是解决我的问题的命令:

mount -o remount /
Run Code Online (Sandbox Code Playgroud)

重启sudo fsck -Af 更好

  • 如果操作系统将您的磁盘设置为只读以防止可能的损坏,那就更好了。 (23认同)
  • 没有帮助,我只是收到相同的消息:`sudo:无法打开 /var/lib/sudo/kuplack/1:只读文件系统``mount:无法重新挂载块设备 /dev/sda2 读写,被写保护` (14认同)
  • `mount:无法重新安装 /dev/sda8 读写,是写保护的` (6认同)
  • 不仅如此 - 只有 root 才能重新挂载文件系统,如果文件系统是只读的,`sudo` 将无法工作。 (5认同)
  • o 是的,这个有效。 (3认同)

小智 23

如果您想强制您的根文件系统重新挂载为 rw,您可以执行以下操作。

mount -o remount,rw /
Run Code Online (Sandbox Code Playgroud)

  • 我得到 mount: /: 无法重新挂载 /dev/sda2 读写,已被写保护。 (4认同)

thi*_*wfx 15

尝试运行dmesg | grep "EXT4-fs error"以查看是否有任何与文件系统/日志系统本身相关的问题。那我建议你重新启动系统。还,sudo fsck -Af由 ObsessiveSSO 回答?不会痛。


小智 10

请注意,有时这可能是由于计算机忘记了系统时间造成的 - 磁盘检查失败,因为日志中的日期在未来!

设置 BIOS 时间(并检查 BIOS 电池)为我解决了这个问题,而无需进行任何磁盘恢复。


小智 8

如果您同时使用 Ubuntu 和 Windows 双重启动计算机并且出现此问题,那是因为 Windows 更改了文件系统,在这种情况下这可能会起作用。 尝试禁用快速启动

控制面板 > 硬件和声音 > 电源选项 >(左侧)选择关闭盖子的功能 > 更改当前不可用的设置 > 取消勾选“打开快速启动”

现在启动进入 Ubuntu 将解决该问题。希望这可以帮助!

https://youtu.be/KJ-0KPZhAFo


小智 8

如果您有图形用户界面,请转到磁盘应用程序,选择有问题的驱动器,单击齿轮图标并选择“修复文件系统”选项。不到一秒钟,问题就得到解决。

在此输入图像描述


sar*_*072 5

(删除之前的回答)

编辑:主要问题出在 Windows 一侧。更新我的 Windows 10 后,“快速启动”选项自动启用。再次禁用该选项,然后再次重新启动机器,问题就消失了。Windows 10 让我头疼了好几天:(

可以在控制面板的“电源选项”中找到“快速启动”选项。禁用那个!!!:)