linux 文件系统损坏修复方式

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 最近,在使用树莓派时,由于异常掉电,导致树莓派的文件系统遭到破坏,系统启动时提示下面的信息:

最近,在使用树莓派时,由于异常掉电,导致树莓派的文件系统遭到破坏,系统启动时提示下面的信息:


网络异常,图片无法展示
|


由上图的提示信息可知,由于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日志并进行多维度分析。
相关文章
|
18天前
|
安全 Linux 数据安全/隐私保护
深入Linux操作系统:文件系统和权限管理
在数字世界的海洋中,操作系统是连接用户与硬件的桥梁,而Linux作为其中的佼佼者,其文件系统和权限管理则是这座桥梁上不可或缺的结构。本文将带你探索Linux的文件系统结构,理解文件权限的重要性,并通过实际案例揭示如何有效地管理和控制这些权限。我们将一起航行在Linux的命令行海洋中,解锁文件系统的奥秘,并学习如何保护你的数据免受不必要的访问。
|
1月前
|
存储 运维 监控
深入Linux基础:文件系统与进程管理详解
深入Linux基础:文件系统与进程管理详解
77 8
|
1月前
|
存储 Linux 文件存储
Linux文件系统
Linux文件系统 一切皆文件 在Linux中,“一切皆文件”的概念意味着系统中的所有资源,包括硬件设备、目录及进程等,均被视为文件。这种设计简化了操作和管理,具体包括: 普通文件:存储数据的常规文件。 目录文件:包含其他文件和子目录的文件。 进程文件:在/proc目录下代表系统中运行的进程。 设备文件:位于/dev目录,代表硬件设备。 网络字节流套接字文件:用于网络通信的数据流。 链接文件:指向另一个文件的符号链接或硬链接。 管道文件:用于进程间通信的文件。
52 7
|
2月前
|
存储 安全 Linux
|
3月前
|
存储 Linux 索引
Linux 下最主流的文件系统格式——ext
【9月更文挑战第8天】硬盘被划分为若干相同大小的块(Block),默认大小为4K,便于灵活管理文件数据。文件数据分散存放于这些块中,提高了数据添加、删除和插入的便利性。
|
4月前
|
存储 人工智能 数据管理
深入理解Linux操作系统之文件系统管理探索人工智能:从理论到实践的旅程
【8月更文挑战第30天】在探索Linux的无限可能时,我们不可避免地会遇到文件系统管理这一核心话题。本文将深入浅出地介绍Linux文件系统的基础知识、操作命令及高级技巧,帮助你更有效地管理和维护你的系统。从基础概念到实践应用,我们将一步步揭开Linux文件系统的神秘面纱。
|
3月前
|
存储 缓存 Linux
Linux文件系统的功能规划
【9月更文挑战第12天】本文通过类比图书馆,形象地解释了文件系统的组织形式和管理方法。首先,文件系统需按块存储文件,并设有索引区方便查找。其次,热点文件应有缓存层提高效率,文件需分类存储以便管理。最后,Linux内核需记录文件使用情况,通过文件描述符区分不同文件,确保文件操作准确无误。
|
3月前
|
Linux
Linux内核的异常修复原理
Linux内核的异常修复原理
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
96 8
|
1月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
276 6