不知何故,我的 Debian 在根文件系统中变成了只读。我不知道这是怎么发生的。
例如,当我在/root
文件夹中并键入命令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
。甚至无法 apt-get update。我有很多这样的错误:
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 / 安全吗?
答案1
大多数 Linux 文件系统的默认行为是保护您的数据。当内核检测到存储子系统中的错误时,它将使文件系统变为只读以防止(进一步)数据损坏。
errors={continue|remount-ro|panic}
您可以使用系统手册 ( ) 中记录的安装选项对此进行一些调整man mount
。
当您的根文件系统遇到此类错误时,大多数情况下该错误不会记录在您的日志文件中,因为它们现在也将是只读的。幸运的是,由于这是一个内核操作,因此原始错误消息首先记录在内存中的内核环形缓冲区中。除非已经从内存中刷新,否则您可以使用该命令显示环形缓冲区的内容dmesg
。 。
大多数真实硬盘都支持聪明的您可以使用它smartctl
来尝试诊断磁盘健康状况。
根据错误消息,您可以确定使用文件系统仍然是安全的,并返回其读写条件mount -o remount,rw /
但一般来说,磁盘错误是磁盘完全故障的先兆。现在是创建数据备份或确认现有备份状态的时候了。