Linux

只讀根文件系統

  • July 27, 2016

不知何故,我的 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 更新。我有很多這樣的錯誤:

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 / 是否安全?

大多數 Linux 文件系統的預設行為是保護您的數據。當核心在儲存子系統中檢測到錯誤時,它將使文件系統只讀以防止(進一步)數據損壞。

errors={continue|remount-ro|panic}您可以使用系統手冊 ( man mount)中記錄的掛載選項對此進行一些調整。

當您的根文件系統遇到此類錯誤時,大多數情況下該錯誤不會記錄在您的日誌文件中,因為它們現在也是只讀的。幸運的是,由於這是一個核心操作,原始錯誤消息首先記錄在記憶體中,即核心環形緩衝區中。除非已經從記憶體中刷新,否則您可以使用dmesg命令顯示環形緩衝區的內容。.

大多數真正的硬碟都支持SMART,您可以使用它smartctl來嘗試診斷磁碟健康狀況。

根據錯誤消息,您可以決定使用文件系統仍然是安全的,並返回它的讀寫條件mount -o remount,rw /

但一般來說,磁碟錯誤是磁碟完全故障的前兆。現在是創建數據備份或確認現有備份狀態的時候了。

引用自:https://unix.stackexchange.com/questions/145882