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

問題問題來源

由於磁盤fsck檢查異常,導致系統掛載以只讀模式掛載根分區。

如果fsck檢查後以只讀模式掛載/分區,很可能fsck已經無法修復分區了


問題描述

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

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):

-----------------------------------------------引用他文起-----------------------------------------------------------------------------------------

1、系統無法進行磁盤的讀寫操作(touch,cp,chmod)等等

2、服務器無法啓動(也是因爲無法創建文件)

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

問題原因:

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

2、機器硬盤故障導致硬盤只讀

一般情況是由於系統發現磁盤硬件(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便可成功


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章