只读根文件系统


25

不知何故,我的Debian只能在根文件系统中进行读取。我不知道这怎么可能发生。
例如,当我在/root文件夹中并键入command nano,然后按Tab列出该文件夹中可能的文件时,我得到消息:

root@debian:~# nano -bash: cannot create temp file for here-document: Read-only file system

cd当我键入cd /home并按下Tab以列出路径时,该命令也是如此:

root@debian:~# cd /home -bash: cannot create temp file for here-document: Read-only file system

我也有像apt其他软件一样的问题。甚至无法获得更新。我有很多这样的错误:

Err http ://ftp.de.debian.org wheezy-updates/main Sources
406  Not Acceptable
W: Not using locking for read only lock file /var/lib/apt/lists/lock
W: Failed to fetch http ://ftp.de.debian.org/debian/dists/wheezy/Release  rename failed, Read-only file system (/var/lib/apt/lists/ftp.de.debian.org_debian_dists_wheezy_Release -> /var/lib/apt/lists/ftp.de.debian.org_debian_dists_wheezy_Release).
W: Failed to fetch http ://security.debian.org/dists/wheezy/updates/main/source/Sources  404  Not Found
W: Failed to fetch http ://security.debian.org/dists/wheezy/updates/main/binary-amd64/Packages  404  Not Found
W: Failed to fetch http ://ftp.de.debian.org/debian/dists/wheezy-updates/main/source/Sources  406  Not Acceptable
E: Some index files failed to download. They have been ignored, or old ones used instead.
W: Not using locking for read only lock file /var/lib/dpkg/lock

我的系统有很多问题。有可能解决这个问题吗?如何检查发生了什么?我应该在日志中寻找什么?

我知道可能是由于/etc/fstab文件中的行:

/dev/mapper/debian-root /               ext4    errors=remount-ro 0       1

但是有什么问题呢?我什么也找不到,或者也许我不知道在哪里看。

编辑:

我没有搜索邮件日志,却发现只有以下内容:

kernel: [    5.709326] EXT4-fs (dm-0): re-mounted. Opts: (null)
kernel: [    5.977131] EXT4-fs (dm-0): re-mounted. Opts: errors=remount-ro
kernel: [    7.174856] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: (null)

我想这是正确的,因为在其他debian机器上我有相同的条目。

我在dmesg中找到了一些东西(由于标准ext4的东西很多,我削减了输出)

root@gs3-svn:/# dmesg |grep ext4
EXT4-fs error (device dm-0) in ext4_reserve_inode_write:4507: Journal has aborted
EXT4-fs error (device dm-0) in ext4_reserve_inode_write:4507: Journal has aborted
EXT4-fs error (device dm-0) in ext4_dirty_inode:4634: Journal has aborted
EXT4-fs error (device dm-0): ext4_discard_preallocations:3894: comm rsyslogd: Error loading buddy information for 1
EXT4-fs warning (device dm-0): ext4_end_bio:250: I/O error -5 writing to inode 133130 (offset 132726784 size 8192 starting block 159380)
EXT4-fs error (device dm-0): ext4_journal_start_sb:327: Detected aborted journal

5个错误和1个警告。有任何想法吗?使用mount -o remount,rw /安全吗?


2
在中查找字符串“ ext4”和“ / dev / mapper / debian-root” /var/log/messages。如果文件系统已损坏,则应在引导过程中的早期内核消息中看到它。另外,请尝试mount -o remount,rw /dev/mapper/debian-root告诉我们是否会引发错误。
lgeorget 2014年

您还有剩余空间吗,是什么命令给您df
Kiwy 2014年

您可以从grub引导到“恢复模式”吗?或者,编辑grub内核选项,并将单词single添加到末尾并引导。您应该以root shell结束,您可以从其中运行各种工具来检查和修复磁盘。
garethTheRed 2014年

重置“ VM计算机”确实解决了我的问题(案例
-Ubuntu

Answers:


29

大多数Linux文件系统的默认行为是保护您的数据。当内核在存储子系统中检测到错误时,它将使文件系统为只读,以防止(进一步)破坏数据。

您可以使用errors={continue|remount-ro|panic}系统手册(man mount)中记录的安装选项对其进行一些调整。

当您的根文件系统遇到这样的错误时,大多数情况下该错误将不会记录在您的日志文件中,因为它们现在也将是只读的。幸运的是,由于它是内核操作,因此最初的错误消息首先记录在内存中的内核环形缓冲区中。除非已经从内存中清除了,否则您可以使用以下dmesg命令显示环形缓冲区的内容。。

大多数实际的硬盘都支持SMART,您可以smartctl用来尝试诊断磁盘的运行状况。

根据错误消息,您可以确定使用文件系统仍然安全,并使用以下命令返回读写状态: mount -o remount,rw /

通常,磁盘错误是磁盘完全故障的先兆。现在是创建数据备份或确认现有备份状态的时候了。


是的,我有备份数据。Couold,请您再看看我的问题?我在dmesg中找到了一些内容,并在问题中做了一些小的编辑。
s1c

通常,我希望这些ext4错误会被与IO或设备相关的错误所包围,因为问题很可能不是文件系统本身,而是底层磁盘。例如,见askubuntu.com/questions/141862/...
HBruijn

还有一个问题。可能是因为安装了分区(SAN / NAS存储)吗?我当然在我的fstab文件中定义了它们。
s1c

以我的经验,只有遭受IO错误的文件系统才被以只读方式挂载,其他分区和远程共享都不应以只读方式被挂载。
HBruijn 2014年

我们先进行了-o remount,rw /的安装,然后将chmod加载到了对我们有用的文件中。完成更改后,执行mount -o remount,ro /使文件系统恢复为只读状态。
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.