linux 文件系統損壞修復方式

最近,在使用樹莓派時,由於異常掉電,導致樹莓派的文件系統遭到破壞,系統啓動時提示下面的信息:在這裏插入圖片描述
由上圖的提示信息可知,由於mmcblk0p2分區的文件系統(EXT4)的日誌文件加載失敗導致系統不能啓動。Linux系統對於文件系統修復是有專門的工具,那就是fsck,它是用來檢查和修復Linux文件系統的工具。下面fsck的基本用法:

fsck,來自 util-linux 2.31.1
fsck.ext4: 不適用的選項 -- h
用法:fsck.ext4 [-panyrcdfktvDFV] [-b 超級塊] [-B 塊大小]
		[-l|-L 壞塊文件] [-C fd] [-j 外部日誌]
		[-E 擴展選項]  [-z 撤銷文件] 設備

重要提示:
 -p                   自動修復(不詢問)
 -n                   不對文件系統做任何更改
 -y                   對所有詢問都回答“是”
 -c                   檢查可能的壞塊,並將它們加入壞塊列表
 -f                   強制進行檢查,即使文件系統被標記爲“沒有問題”
 -v                   顯示更多信息
 -b superblock        使用備選超級塊
 -B blocksize         使用指定塊大小來查找超級塊
 -j external_journal  指定外部日誌的位置
 -l bad_blocks_file   添加到指定的壞塊列表(文件)
 -L bad_blocks_file   指定壞塊列表(文件)
 -z undo_file         創建一個撤銷文件

但是,樹莓派initramfs中的busybox沒有fsck這個工具,那該如何修復呢?

辦法就是,取出樹莓派的系統SD卡,找一臺裝有Linux系統的電腦,在電腦上識別出sd卡,然後,按照如下步驟操作:

  1. 查看sd分區信息,找到受損的分區
    $ sudo fdisk -l
    設備       啓動   起點      末尾      扇區  大小 Id 類型
    /dev/sdc1         2048    409599    407552  199M  c W95 FAT32 (LBA)
    /dev/sdc2       409600 121651166 121241567 57.8G 83 Linux
    
    其中,sdc2就是mmcblk0p2分區。
  2. 使用fsck進行修復
sudo fsck  /dev/sdc2
fsck,來自 util-linux 2.31.1
e2fsck 1.44.1 (24-Mar-2018)
writable:正在修復日誌
在 writable 中發現日誌校驗值錯誤
writable 未被徹底卸載,強制進行檢查。
第 1 步:檢查inode、塊和大小
發現了可能屬於損壞的孤立鏈接表的inode。  處理<y>? 是
Inode 390310 位於孤立的inode列表中。  已處理.
Inode 390320 位於孤立的inode列表中。  已處理.
Inode 390381 位於孤立的inode列表中。  已處理.
Inode 390385 位於孤立的inode列表中。  已處理.
Inode 390391 位於孤立的inode列表中。  已處理.
Inode 390758 位於孤立的inode列表中。  已處理.
Inode 390980 位於孤立的inode列表中。  已處理.
Inode 390982 位於孤立的inode列表中。  已處理.
Inode 391223 位於孤立的inode列表中。  已處理.
Inode 391225 位於孤立的inode列表中。  已處理.
Inode 391228 位於孤立的inode列表中。  已處理.
Inode 391230 位於孤立的inode列表中。  已處理.
Inode 391239 位於孤立的inode列表中。  已處理.
Inode 391240 位於孤立的inode列表中。  已處理.
Inode 391245 位於孤立的inode列表中。  已處理.
第 2 步:檢查目錄結構
/var/log/journal/3ee6df9e1aa048efbefea1d2f060ddab(174717)中的項 “system.journal”含有刪除或未使用的@ 138360。  清除<y>? 是
第 3 步:檢查目錄連接性
/lost+found未找到。  創建<y>? 是
第 4 步:檢查引用計數
第 5 步:檢查組概要信息
塊位圖的差異:  -859648
處理<y>? 是
Inode位圖的差異:  -138360
處理<y>? 是

writable:***** 文件系統已修改 *****
writable:149791/3763264 文件(0.2% 爲非連續的), 1609362/15155195 塊

修復過程中會請求如何處理問題,一般選擇“是”,可以指定-a選項,自動修復。修復完成之後,重新將sd卡插入樹莓派,系統可以正常啓動。

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