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卡,然后,按照如下步骤操作:


查看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分区。


使用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卡插入树莓派,系统可以正常启动。


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
10天前
|
存储 缓存 数据管理
深入理解 Linux 文件系统的层次结构
【4月更文挑战第30天】 本文旨在探讨和解析 Linux 操作系统中文件系统的结构与原理。不同于通常的摘要,我们将直接深入到文件系统的核心概念,包括其目录结构、关键组件以及它们如何相互作用以支持 Linux 操作系统的功能。通过剖析文件系统的层次性设计,我们能够更好地理解其在数据管理、用户权限控制和系统安全性方面的重要性。
|
1天前
|
存储 缓存 Linux
【Linux】文件系统
在打开文件之前,我们需要找到文件 -> 就要从磁盘中找到对应文件 -> 通过文件路径与文件名
18 4
|
3天前
|
存储 Linux 编译器
【探索Linux】P.13(文件系统 | 软硬链接 | 动态库和静态库)
【探索Linux】P.13(文件系统 | 软硬链接 | 动态库和静态库)
9 0
|
4天前
|
存储 Linux Shell
Linux文件系统
Linux文件系统
15 2
|
4天前
|
Linux
Linux MBR扇区故障 引导修复
Linux MBR扇区故障 引导修复
|
5天前
|
安全 Linux 数据安全/隐私保护
深入理解 Linux 文件系统的权限控制
【5月更文挑战第5天】本文旨在详细解析 Linux 操作系统中文件系统权限的核心机制。通过分析用户、组和其他人在文件及目录上拥有的读、写、执行权限,我们探讨了如何实现对系统资源的精确控制。文章还将介绍如何使用命令行工具来修改和管理这些权限,以及权限如何在安全策略和系统管理中扮演关键角色。
|
10天前
|
弹性计算 Shell Linux
|
11天前
|
Unix Linux
Linux 常用命令汇总(六):磁盘与文件系统命令
Linux 常用命令汇总(六):磁盘与文件系统命令
|
11天前
|
存储 Linux
深入探索Linux文件系统:属性、路径与隐藏之谜
深入探索Linux文件系统:属性、路径与隐藏之谜
23 1
|
16天前
|
存储 缓存 监控
Linux 文件系统目录结构详解
本文介绍了Linux文件系统的目录结构,包括`/bin`、`/boot`、`/dev`、`/etc`、`/home`、`/lib`、`/media`、`/mnt`、`/opt`、`/proc`、`/root`、`/sbin`、`/tmp`、`/usr`和`/var`等目录的用途和重要性。每个目录都有其特定的功能,例如`/bin`存放基本用户命令,`/boot`存储启动相关文件,`/home`是用户主目录,`/lib`包含共享库,`/proc`提供进程信息,`/usr`存储用户程序资源,而`/var`则用于可变数据如日志文件。理解这些目录的用途有助于更好地管理和使用Linux系统。
Linux 文件系统目录结构详解