[白開水]-故障-啓動類故障排錯記錄- Read-only file system

問題問題來源
node

因爲磁盤fsck檢查異常,致使系統掛載以只讀模式掛載根分區。linux

若是fsck檢查後以只讀模式掛載/分區,極可能fsck已經沒法修復分區了shell


問題描述

#開機啓動會出現fsck對/分區fsck檢測ubuntu

Checking all file systems.
[/sbin/fsck.ext4 (1) -- /] fsck.ext4 -a /dev/xvda3
/dev/xvda3 contains a file system with errors, check forced.
/dev/xvda3: Inodes that were part of a corrupted orphan linked list found.
/dev/xvda3: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
(i.e., without -a or -p options)
[FAILED]
*** An error occurred during the file system check.
*** Dropping you to a shell; the system will reboot
*** when you leave the shell.
Give root password for maintenance
(or type Control-D to continue):

-----------------------------------------------引用他文起-----------------------------------------------------------------------------------------安全

一、系統沒法進行磁盤的讀寫操做(touch,cp,chmod)等等bash

二、服務器沒法啓動(也是由於沒法建立文件)服務器

三、只有涉及到系統磁盤的寫操做,都會報錯"Read-only file system"ide

問題緣由:spa

一、系統沒有正常關機,致使虛擬磁盤出現文件系統錯誤;code

二、機器硬盤故障致使硬盤只讀

通常狀況是因爲系統發現磁盤硬件(Riad卡,硬盤)故障或文件系統中文件被損壞後而採起的保護機制致使的。爲了保護數據不破壞分區中已有內容,Linux在掛載文件系統是就只用read-only只讀方式加載。

(此段引用自- http://wangjun51.blog.51cto.com/6124567/1559470)

-----------------------------------------------引用他文結束----------------------------------------------------------------------------------------


#此時輸入密碼進入系統就會以只讀模式掛載根分區

cat /proc/mounts
rootfs / rootfs rw 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
devtmpfs /dev devtmpfs rw,relatime,size=465516k,nr_inodes=116379,mode=755 0 0
devpts /dev/pts devpts rw,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /dev/shm tmpfs rw,relatime 0 0
/dev/xvda3 / ext4 ro,relatime,barrier=1,data=ordered 0 0
/proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 0
/dev/xvda3 / ext4 ro,relatime,barrier=1,data=ordered 0 0


處理過程

先進行文件系統卸載

在readonly的狀況下,/分區能夠進行remount

從新以rw,remount掛載分區

mount -o  rw,remount  /
]# cat /proc/mounts
rootfs / rootfs rw 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
devtmpfs /dev devtmpfs rw,relatime,size=465516k,nr_inodes=116379,mode=755 0 0
devpts /dev/pts devpts rw,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /dev/shm tmpfs rw,relatime 0 0
/dev/xvda3 / ext4 rw,relatime,barrier=1,data=ordered 0 0
/proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 0


#此時系統就能夠正常讀寫,爲了確保數據安全,沒有作備份的,能夠先對重要數據進行備份

如何解決Read-only file system

1. 查看/etc/fstab

UUID=d642f775-751f-44f8-b1b8-416af4440e40 /                  ext4    defaults        1 1

2. 查看/proc/mounts

rootfs / rootfs ro 0 0

3. 卸載根分區(這步證明沒有必要)

umount   /

4. 從新掛載根分區

mount  -o  rw,remount  /

#若是掛載成功此時就能夠先保存下重要資料了

5. 此時從新掛載後,就能夠修改/etc/fstab了

UUID=d642f775-751f-44f8-b1b8-416af4440e40 /                 ext4    defaults        1 0

知識點:

#-o  <選項>指定掛載文件系統時的選項  rw 讀寫   remount 從新掛載
#第一個數字"1"該選項被"dump"命令使用來檢查一個文件系統應該以多快頻率進行轉儲,若不須要轉儲就設置該字段爲0
#第二個數字"2"該字段被fsck命令用來決定在啓動時須要被掃描的文件系統的順序,根文件系統"/"對應該字段的值應該爲1,其餘文件系統應該爲2。若該文件系統無需在啓動時掃描則設置該字段爲0

重點:   正是由於正常狀況下第二個數字爲1,根分區啓動是會被fsck掃描,當根分區出現異常時,就會被以只讀模式掛載。

6. 重啓系統


嘗試修復文件系統

# fsck -y /dev/xvda3
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
/dev/xvda3 is mounted.
e2fsck: Cannot continue, aborting.
#若是文件系統被掛載,極可能沒法執行fsck


解決- e2fsck: Cannot continue, aborting問題

參考谷歌 http://askubuntu.com/questions/536955/e2fsck-cannot-continue-aborting

If you just usefsckto check the volume you can run

fsck -nf /dev/xvda3
n -> dry-run: will not do any change (just checking)
f -> force : sometimes it sayscleanbut you can force a new check
結果:
# fsck -nf /dev/xvda3
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
Warning!  /dev/xvda3 is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
Pass 1: Checking inodes, blocks, and sizes
Inodes that were part of a corrupted orphan linked list found.  Fix? no
Inode 132428 was part of the orphaned inode list.  IGNORED.
Inode 665432 was part of the orphaned inode list.  IGNORED.
Inode 665642 was part of the orphaned inode list.  IGNORED.
Deleted inode 665645 has zero dtime.  Fix? no
Deleted inode 665685 has zero dtime.  Fix? no
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences:  -557404 -562648 -562702 -562781 -562827-562869 -562920 -562963 -563046 -563090 -563138 -563184 -563747 -563787 -563832-2631031 -(2698588--2698614) -(2714719--2714745) -(2723791--2724297)
Fix? no
Free blocks count wrong (4222558,counted=4220120).
Fix? no
Inode bitmap differences:  -132428 -665432 -665642 -665645 -665685
Fix? no
Directories count wrong for group #81 (262,counted=261).
Fix? no
Free inodes count wrong (1166629,counted=1166581).
Fix? no
/dev/xvda3: ********** WARNING: Filesystemstill has errors **********
/dev/xvda3: 67947/1234576 files (0.2%non-contiguous), 706722/4929280 blocks

並無修復ok,那麼是否是掛載了影響的?

If you want to fix filesystem errors, first unmountyour partition: umount /dev/xvda3

若是沒有修改fstab進行重啓

# umount /dev/svda3
# fsck -nf /dev/xvda3
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Inodes that were part of a corrupted orphanlinked list found.  Fix? no
Inode 132428 was part of the orphaned inodelist.  IGNORED.
Inode 665432 was part of the orphaned inodelist.  IGNORED.
Inode 665642 was part of the orphaned inodelist.  IGNORED.
Deleted inode 665645 has zero dtime.  Fix? no
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences:  -557404 -562648 -562702 -562781 -562827-562869 -562920 -562963 -563046 -563090 -563138 -563184 -563747 -563787 -563832-2631031 -(2714719--2714745) -(2723791--2724297)
Fix? no
Inode bitmap differences:  -132428 -665432 -665642 -665645
Fix? no
Directories count wrong for group #81 (262,counted=261).
Fix? no
/dev/xvda3: ********** WARNING: Filesystemstill has errors **********
/dev/xvda3: 67971/1234576 files (0.2%non-contiguous), 708714/4929280 blocks

 

進行修復

#fsck /dev/xvda3
..................................
/dev/xvda3: ***** FILE SYSTEM WAS MODIFIED*****
/dev/xvda3: ***** REBOOT LINUX *****
/dev/xvda3: 67990/1234576 files (0.2%non-contiguous), 708579/4929280 blocks

#能夠在read only下修復
#掛載狀況下沒法修復
#/分區修復,要使用系統安裝引導,進入修復模式,不要掛載文件系統

 

#此時發現,應該是思路問題,umount並未卸載/分區

# df -h
Filesystem      Size Used Avail Use% Mounted on
/dev/xvda3       19G 2.3G   16G  14% /
# cat /proc/mounts
rootfs / rootfs rw 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
devtmpfs /dev devtmpfsrw,relatime,size=465516k,nr_inodes=116379,mode=755 0 0
devpts /dev/pts devptsrw,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /dev/shm tmpfs rw,relatime 0 0
/dev/xvda3 / ext4ro,relatime,barrier=1,data=ordered 0 0
/proc/bus/usb /proc/bus/usb usbfsrw,relatime 0 0

#根分區沒有被卸載

#umount /                    #根本沒有起到效果

#能夠確定fsck能夠只reda only掛載下執行

若是修改fstab並進行重啓

#umount /
umount: /: device is busy.
        (In somecases useful info about processes that use
         the deviceis found by lsof(8) or fuser(1))

進入救援模式對分區進行修復

注意進入時不要選擇掛載原系統!

此時執行fsck即可成功

相關文章
相關標籤/搜索