【linux】按部就班學運維-基礎篇-修復文件系統實戰


文章目錄


你們好,我是高勝寒,本文是Linux運維-按部就班學運維-基礎篇的第53篇文章。node


前言:

今天咱們來聊聊,文件系統的修復:
文件系統損壞,可能是因爲忽然斷電或者設備讀寫數據異常等緣由致使的文件系統損壞。linux

也遇到過文件系統變爲只讀,通常是由於多機寫入時同步機制出現問題,或者單機寫入時斷電。運維

常見使用的修復命令爲: fsckide

實驗環境

本文采用的系統爲:日誌

[root@xinsz08-15 ~]# cat /etc/redhat-release CentOS release 6.9 (Final)[root@xinsz08-15 ~]# uname -r2.6.32-696.el6.x86_64

增長了一塊硬盤方便作實驗用blog

在這裏插入圖片描述

解決方案

1) 系統出現只讀的狀況的解決方案

這種狀況咱們能夠修改/etc/fstab文件,將受損的文件的開機自動掛載先註釋掉,而後使用rw的方式進行掛載。圖片

mount -o remount rw /dev/sdb1 /mntrem

2) 系統文件受損,能夠使用fsck命令

實驗步驟:同步

a. 建立一個1G的分區
b. 對分區進行格式化
c. 破壞文件系統並從新掛載
d. 修復超級快
e.查看修復成功的效果it

a. 建立一個1G的分區
[root@xinsz08-15 ~]# fdisk /dev/sdb

在這裏插入圖片描述
上面截圖是分區了一個1G大小的sdb1分區

b. 對分區進行格式化
[root@xinsz08-15 ~]# mkfs.ext4 /dev/sdb1[root@xinsz08-15 ~]# ll /dev/sdb*brw-rw---- 1 root disk 8, 16 7月   1 22:59 /dev/sdb
brw-rw---- 1 root disk 8, 17 7月   1 23:01 /dev/sdb1[root@xinsz08-15 ~]# mkdir /sdb1[root@xinsz08-15 ~]# mount /dev/sdb1 /sdb1   ##掛載分區[root@xinsz08-15 ~]# df -hFilesystem      Size  Used Avail Use% Mounted on
/dev/sda2        20G  5.5G   13G  31% /
tmpfs           491M   72K  491M   1% /dev/shm
/dev/sda1       190M   35M  146M  20% /boot
/dev/sdb1       988M  1.3M  935M   1% /sdb1

查看是否能夠寫入內容

[root@xinsz08-15 ~]# cp /etc/passwd /sdb1/[root@xinsz08-15 ~]# cd /sdb1/[root@xinsz08-15 sdb1]# lslost+found  passwd[root@xinsz08-15 sdb1]#

c. 破壞文件系統並從新掛載
[root@xinsz08-15 ~]# dd if=/dev/zero of=/dev/sdb1 bs=512 count=4記錄了4+0 的讀入
記錄了4+0 的寫出
2048字節(2.0 kB)已複製,0.00266775 秒,768 kB/秒[root@xinsz08-15 ~]# df -hFilesystem      Size  Used Avail Use% Mounted on
/dev/sda2        20G  5.5G   13G  31% /
tmpfs           491M   72K  491M   1% /dev/shm
/dev/sda1       190M   35M  146M  20% /boot
/dev/sdb1        64Z   64Z  986M 100% /sdb1

能夠看到 /dev/sdb1的大小變成了64Z ,咱們看看還可否寫入

[root@xinsz08-15 sdb1]# touch aaatouch: 沒法建立"aaa": 輸入/輸出錯誤[root@xinsz08-15 sdb1]# pwd/sdb1

能夠看到已經沒法寫入了,如今咱們進入下一步開始修復,使用fsck命令

d. 修復超級快
[root@xinsz08-15 ~]# umount /dev/sdb1   #切記必定要先卸載在修復[root@xinsz08-15 ~]# fsck -y -t ext4 /dev/sdb1fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)fsck.ext4: 超級塊無效, trying backup blocks...
超級塊 needs_recovery flag is clear, but 日誌 has data.
Recovery flag not set in backup 超級塊, so running 日誌 anyway.
/dev/sdb1: 正在修復日誌
第一步: 檢查inode,塊,和大小
第二步: 檢查目錄結構
第3步: 檢查目錄鏈接性
Pass 4: Checking reference counts
第5步: 檢查簇概要信息
Free 塊s count wrong for 簇 #1 (32702, counted=32701).處理? 是

Free 塊s count wrong (252369, counted=252368).
處理? 是

Free inodes count wrong for 簇 #0 (7365, counted=7364).處理? 是

Free inodes count wrong (66373, counted=66372).
處理? 是


/dev/sdb1: ***** 文件系統已修改 *****
/dev/sdb1: 12/66384 files (0.0% non-contiguous), 12696/265064 blocks[root@xinsz08-15 ~]#

能夠看到文件系統已修復的提示,咱們從新掛載來試一下

e.查看修復成功的效果
[root@xinsz08-15 ~]# mount /dev/sdb1 /sdb1    ##掛載[root@xinsz08-15 ~]# df -hFilesystem      Size  Used Avail Use% Mounted on
/dev/sda2        20G  5.5G   13G  31% /
tmpfs           491M   72K  491M   1% /dev/shm
/dev/sda1       190M   35M  146M  20% /boot
/dev/sdb1       988M  1.3M  935M   1% /sdb1[root@xinsz08-15 ~]# cd /sdb1[root@xinsz08-15 sdb1]# touch aaa   #能夠看到已經可以從新建立文件[root@xinsz08-15 sdb1]# lsaaa  lost+found  passwd[root@xinsz08-15 sdb1]#

fsck 命令詳解

1)fsck詳解:

做用: 用來檢查和維護不一致的文件系統,若系統斷電或者磁盤發生異常,能夠使用fsck 來檢查和修復

常見的參數

參數 做用
a 自動修復文件系統,不詢問任何問題
A 依照/etc/fstab配置文件內容,檢查文件內所列的所有文件系統
P 與-A搭配使用,會檢查全部的文件系統
-r 互動模式,讓用戶確認
-t 指定要檢查的文件系統類型
-V 顯示指令執行的過程
-y 關閉互動模式
-f 強制檢查
-C 顯示完整的檢查進度
-p 自動修復文件系統的錯誤
fsck使用舉例
1)檢查磁盤/dev/sdb1的文件系統
[root@xinsz08-15 sdb1]# fsck /dev/sdb1

2) 強制檢查/dev/sdb1的文件系統
[root@xinsz08-15 sdb1]# fsck -f /dev/sdb1

3) 檢查/dev/sdb1的ext4文件系統是否正常,若是有異常自動修復
[root@xinsz08-15 sdb1]# fsck -t ext4 -a /dev/sdb1

總結

特別說明的是儘可能不要使用 -f -y 這樣的強制自動修復功能,或者fsck 提示大量的inode錯誤,就不要強制修復了,須要以只讀的方式仔細查看修復過程。

我是高勝寒,一個在教培行業不忘初心的人。歡迎點贊收藏,咱們下篇文章見!

相關文章
相關標籤/搜索