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


137

标题可能不像我希望的那样具有描述性,但无法提出更好的名称。

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

我可以通过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.

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

username@srv1:~$ sudo shutdown -r now
[sudo] password for username:
sudo: unable to open /var/lib/sudo/username/1: Read-only file system

一旦我手动重新启动它,它就可以启动,而不会发出任何警告或任何提示错误的信息。

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


我建议@John将答案更改为Bibhas上次发布的答案,因为它在其他答案实际上无济于事的情况下才有效。
2014年


大家,这个问题是针对服务器的,而不是针对PC的。如果您的双启动PC出现此问题,请检查The **quick start** option can be found in **power options** in the control panel of Windows。我在AWS上的Ubuntu上遇到了同样的问题
vanduc1102 '18

Answers:


66

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

sudo fsck -Af -M

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

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

注意:正如Bibhas 在他的回答中提到的:如果fsck在其版本标语之后被卡住:

$ sudo fsck -Af -M
fsck from util-linux 2.20.1

您可能想尝试使用EXT4专用的fsck

$ sudo fsck.ext4 -f /dev/sda1

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


2
我认为您不应该在其他读/写挂载的文件系统上强制执行文件系统检查。这可能会破坏您的数据。添加-M选项以跳过已挂载的文件系统。(-M Do not check mounted filesystems and return an exit code of 0 for mounted filesystems.来自FSCK(8))
gertvdijk

35
这无济于事,在尝试运行该命令时,我只会遇到相同的错误。sudo: unable to open /var/lib/sudo/kuplack/1: Read-only file system fsck from util-linux 2.20.1
Mark Kramer 2013年

1
但是... -M将跳过已挂载的文件系统,包括/ dev / sda1(或已挂载的驱动器包括/ var / lib / sudo / ...)。@MarkKramer:我强烈建议在安装linux时始终使用设置root密码sudo su; passwd。然后就可以使用了su -c fsck -Af -M
naught101'3

1
对我来说,自从挂载/ dev / sda1以来,我需要删除-M,并且为了使您的生活更轻松,请添加-Afy(y表示对所有提示回答是)。 m通常可以使用这种类型的解决方案,但是如果这是未备份的硬件,则可能会采用其他方法并读取dmesg。
FreeSoftwareServers

2
@DarshanChaudhary该-M标志使fsck跳过已挂载的文件系统。请参见fsck (8)联机帮助页。
–ζ

45

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

mount -o remount /

重启sudo fsck -Af好


21
如果操作系统将磁盘设为只读磁盘以防止可能的损坏,那就更好了。
Drew Noakes

5
不仅如此- sudo如果文件系统是只读的,只有root才能重新挂载文件系统,并且将无法正常工作。
内森·奥斯曼

11
无济于事,我只收到相同的消息:sudo: unable to open /var/lib/sudo/kuplack/1: Read-only file system mount: cannot remount block device /dev/sda2 read-write, is write-protected
Mark Kramer

3
是的,这个工作了。
RT

2
mount: cannot remount /dev/sda8 read-write, is write-protected
Rishabh Agrahari

42

hexafraction的答案对我不起作用。每次我尝试执行sudo fsck -Af -M它都显示

$ sudo fsck -Af -M
fsck from util-linux 2.20.1

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

sudo fsck.ext4 -f /dev/sda1

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


4
感谢您的回答。这是唯一真正有效的方法
Joshua Robison 2014年

5
-M表示不执行挂载的文件系统。您的文件系统/ dev / sda1已挂载(我猜是/)。因此它被跳过了。
达洛尔2015年

3
sudo fsck.ext4 -f /dev/sda1作品。仍然需要重启。
efkan

1
这为我工作在Ubuntu 16.04.3谢谢
罗萨里奥·佩雷拉·费尔南德斯

13

尝试运行dmesg | grep "EXT4-fs error"以查看是否存在与文件系统/日记系统本身有关的任何问题。我建议您重新启动系统。另外,sudo fsck -AfObsessiveSSOℲ的回答也不会受到伤害。


10

如果要强制将根文件系统重新装载为rw,则可以执行以下操作。

mount -o remount,rw /

这解决了我的问题,我使用了160gb ssd的hetzner云,之前从未遇到过此类错误
Fathur Rohim

9

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

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


欢迎来到Ask Ubuntu!我建议编辑此答案以将其扩展为有关如何执行此操作的特定详细信息。(另请参阅“我如何编写一个好的答案?”,以获取有关在Ask Ask Ubuntu上认为哪些答案最有价值的一般建议。)
David Foerster,2016年

鉴于我的计算机告诉我它忘记了今天早上的时间,因此我可以肯定这正在发生。
nomen,

2

通常,Linux会在发生错误时将您的文件系统设置为只读状态,尤其是发生磁盘或文件系统本身的错误(例如错误的日记条目)之类的错误时。

您最好检查dmesg与磁盘相关的错误。

Google对此进行了充分的讨论,您可以选择与您的配置更接近的配置,但dmesg通常就足够了。


grepdmesg输出中应该看什么?
同构

不幸的是,如果您选择加密主文件夹,dmesg则肯定会充满来自的无用错误ecryptfs
内森·奥斯曼


2

(删除先前的答案)

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

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


只有一个有效。以启动速度为代价。
NelsonGon

2

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

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

现在启动到Ubuntu将解决此问题。希望这可以帮助!

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


1

如果您处于无法使用实时光盘的情况,例如,您正在远程ssh进入系统,则仍可以使用@Bibhas已回答的命令:

sudo fsck.ext4 -f /current/filesystem/mount/point

它将提示您修复文件系统错误。您还需要远程重新引导系统。


0

就我而言,它是由RAID 1在初始安装后稳定下来的。我在/ w RAID1上有/ boot和/。离开系统过夜并重新启动后,一切正常。理查德


0

检查您的硬件是否有故障。由于硬键松动,导致出现此错误。ran mount -o remount,rw /,它工作正常。


-1

它的配置错误引导设置(尝试安装/ext2)不是驱动器或分区的物理错误。

dmesg | grep "error" 给我:

ext3-fs (sda2): error: couldn't mount because of unsupported optional features (240) 
ext2-fs (sda1): error: couldn't mount because of unsupported optional features (240) 
ext4-fs (sda2): mounted file system with ordered data mode: opts: (null)

/由于fstab error=mount-ro指令,它安装为只读。


-1

我正在使用18.04 LTS发行版,当时的工作是,首先卸载损坏的驱动器,然后通过短划线找到“ Disks”应用程序。从那里,我选择了损坏的驱动器。确保已卸载,否则将无法正常工作。在选项菜单(小齿轮形状)中,然后单击“修复文件系统”。繁荣!像魅力一样工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.