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模拟数据,通过数据加工对数据进行清洗并归档至OSS中进行存储。
相关文章
|
14天前
|
存储 缓存 算法
【linux】认识“文件”的本质,理解“文件系统”的设计逻辑,体会linux优雅的设计理念
【linux】认识“文件”的本质,理解“文件系统”的设计逻辑,体会linux优雅的设计理念
|
1月前
|
存储 Linux 数据处理
探索Linux操作系统的内核与文件系统
本文深入探讨了Linux操作系统的核心组件,包括其独特的内核结构和灵活的文件系统。文章首先概述了Linux内核的主要功能和架构,接着详细分析了文件系统的工作原理以及它如何支持数据存储和检索。通过比较不同的文件系统类型,本文旨在为读者提供一个关于如何根据特定需求选择合适文件系统的参考框架。
|
3天前
|
存储 Linux Windows
【Linux】文件系统软硬链接的那些事儿
本文介绍了Linux文件系统的磁盘结构、逻辑结构以及文件和inode的关系,重点讲解了软链接和硬链接的区别,强调了它们在文件管理中的作用。
14 7
|
23小时前
|
存储 运维 安全
Linux命令stat:深入了解文件与文件系统状态
`stat`命令在Linux中用于显示文件和文件系统的详细状态,包括权限、大小、时间戳等。它通过读取inode获取信息,特点是显示全面、易用且支持多种参数,如`-c`自定义格式,`-f`查看文件系统状态,`-L`处理符号链接。例如,`stat example.txt`显示文件详情,`stat -c &quot;%n 的大小是 %s 字节&quot; example.txt`输出文件大小。理解`stat`有助于系统管理和故障排查。
|
10天前
|
Linux
部署09--虚拟机快照,我们无法避免损坏Linux操作系统 ,如果重新装一下就太过麻烦,推荐在关机下制作快照,关机制作效率好,机房要靠近地址,动不动崩溃
部署09--虚拟机快照,我们无法避免损坏Linux操作系统 ,如果重新装一下就太过麻烦,推荐在关机下制作快照,关机制作效率好,机房要靠近地址,动不动崩溃
|
12天前
|
存储 缓存 固态存储
Linux操作系统之文件系统详解
Linux操作系统之文件系统详解
|
17天前
|
存储 Unix 数据管理
深入探讨Linux文件系统:从传统到现代
深入探讨Linux文件系统:从传统到现代
18 0
|
26天前
|
存储 JSON Linux
探索Linux文件系统的奥秘:`lsblk`命令详解
`lsblk`是Linux下用于列出块设备详情的命令,显示设备名、大小、类型、挂载点等信息,尤其适合查看磁盘分区和挂载状态。它以树形结构展示设备间的依赖,且支持多种输出格式。常用参数如`-a`显示所有设备,`-f`显示文件系统信息,`-o`定制输出列。结合其他命令使用能有效管理文件系统。注意权限和输出格式选择。
|
4天前
|
数据挖掘 Linux 数据处理
Linux命令sprof详解
**`sprof`是Linux下的共享库性能分析工具,补充`gprof`,专注分析`.profile`文件以识别性能瓶颈。通过调用次数、执行时间数据优化资源和代码。使用参数如`-F`、`-I`、`-d`进行定制化分析。示例:先设置`LD_PROFILE`环境变量,运行程序生成`.profile`,然后用`sprof`分析。注意需用`-g`编译程序,并在代表性的负载下分析。结合其他工具如`perf`、`valgrind`提升分析效果。**
|
4天前
|
存储 数据挖掘 Linux
Linux命令split详解:大文件处理的得力助手
`split`命令是Linux用于将大文件分割成小文件的工具,常用于日志处理、备份。它支持按行数(-l)、字节数(-b)分割,并能自定义输出文件名(-a, -d)。例如,`split -b 10M largefile.txt smallfile_`会按10MB切割`largefile.txt`,生成`smallfile_`开头的文件。注意确保磁盘空间充足,避免文件名冲突,并备份原始文件。结合其他命令使用,能提高文件管理效率。