背景:

Linux系统(Ubuntu)在运行时,断电等非正常关机操作,会导致ext4文件系统数据损坏。严重时会导致系统崩溃。如下log就是系统数据损坏。检查方法:

1、开机log,如上log就是开机时,kernel监测到文件系统错误:

[    7.878756] EXT4-fs error (device mmcblk0p2): ext4_mb_generate_buddy:742: group 0, 14845 clusters in bitmap, 14822 in gd    [    8.484660] init: samba-ad-dc main process (995) terminated with status 1

[   14.248075] EXT4-fs error (device mmcblk0p2): ext4_mb_generate_buddy:742: group 1, 1 clusters in bitmap, 2 in gd

2、比如要检查的分区是/dev/mmcblk0p2,如下红色字体部分就是系统错误的信息。

~# tune2fs -l /dev/mmcblk0p2

tune2fs 1.42.9 (4-Feb-2014)

Filesystem volume name:

Last mounted on:          /

Filesystem UUID:          ab013911-6048-465f-8a1a-cf1420c7bb01

Filesystem magic number:  0xEF53

Filesystem revision #:    1 (dynamic)

Filesystem features:      ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize

Filesystem flags:         unsigned_directory_hash

Default mount options:    user_xattr acl

Filesystem state:         not clean with errors

Errors behavior:          Continue

Filesystem OS type:       Linux

Inode count:              393216

Block count:              1572864

Reserved block count:     78643

Free blocks:              289870

Free inodes:              169990

First block:              0

Block size:               4096

Fragment size:            4096

Reserved GDT blocks:      383

Blocks per group:         32768

Fragments per group:      32768

Inodes per group:         8192

Inode blocks per group:   512

Flex block group size:    16

Filesystem created:       Sat Sep 12 11:55:02 2015

Last mount time:          Mon Oct  5 00:56:20 2015

Last write time:          Mon Oct  5 00:56:32 2015

Mount count:              49

Maximum mount count:      -1

Last checked:             Sat Sep 12 11:55:02 2015

Check interval:           0 ()

Lifetime writes:          5936 MB

Reserved blocks uid:      0 (user root)

Reserved blocks gid:      0 (group root)

First inode:              11

Inode size:               256

Required extra isize:     28

Desired extra isize:      28

Default directory hash:   half_md4

Directory Hash Seed:      37b6421d-4697-4ff5-a68e-4a1e1ea81c0e

Journal backup:           inode blocks

FS Error count:           5

First error time:         Mon Oct  5 00:52:47 2015

First error function:     ext4_mb_generate_buddy

First error line #:       742

First error inode #:      0

First error block #:      0

Last error time:          Mon Oct  5 00:56:32 2015

Last error function:      ext4_mb_generate_buddy

Last error line #:        742

Last error inode #:       0

Last error block #:       0

修复方法:

1、手动修复:借助其他完整系统启动,对所在磁盘分区卸载,比如要修复/dev/mmcblk0p2,

执行命令 fsck.ext4 /dev/mmcblk0p2 可检查修复系统;

2、自动修复:

条件:

(1)、

自动修复要保证,bootloader参数bootargs 生命挂载以制度方式挂载根文件系统

console=tty1 console=ttySAC2,115200n8 root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait

ro

如果最后ro是rw,将不能完成自动修复。

(2)、

编辑/etc/fstab 挂载最后一个选项设置为1,标明启动时自动检测文件系统,如下:

UUID=e139ce78-9841-40fe-8823-96a304a09859       /       ext4    errors=remount-ro,noatime,nodiratime            01

(3)、

编辑 /etc/default/rcS 最后一个选项(其他linux系统有区别)

# automatically repair filesystems with inconsistencies during boot

FSCKFIX=yes

然后,可以参考/etc/init/mountall.conf    description     "Mount filesystems on boot"

start on startup

stop on starting rcS

expect daemon

task

emits virtual-filesystems

emits local-filesystems

emits remote-filesystems

emits all-swaps

emits filesystem

emits mounting

emits mounted

script

. /etc/default/rcS || true

[ -f /forcefsck ] && force_fsck="--force-fsck"

[ "$FSCKFIX" = "yes" ] && fsck_fix="--fsck-fix"

# Doesn't work so well if mountall is responsible for mounting /proc, heh.

if [ -e /proc/cmdline ]; then

read line < /proc/cmdline

for arg in $line; do

case $arg in

-q|--quiet|-v|--verbose|--debug)

debug_arg=$arg

;;

esac

done < /proc/cmdline

fi

# set $LANG so that messages appearing in plymouth are translated

if [ -r /etc/default/locale ]; then

. /etc/default/locale || true

export LANG LANGUAGE LC_MESSAGES LC_ALL

fi

exec mountall --daemon $force_fsck $fsck_fix $debug_arg

end script

post-stop script

rm -f /forcefsck 2>dev/null || true

end script

(4)、系统检测到分区有问题时,会再根目录下创建一个空文件/forcefsck,重启后,执行mountall,自动进行修复,然后删除forcefsck,也可以手动创建/forcefsck,系统同样会在下次启动时强制检查修复文件系统;

Log:

系统启动检查修复过程的log,不在/var/log/fsck/目录下,而是在/var/log/upstart/目录下,文件为 mountall.log,如下:# cat mountall.log

mount: mount point /media/boot does not exist

mountall: mount /media/boot [382] terminated with status 32

mountall: Filesystem could not be mounted: /media/boot

Skipping /media/boot at user request

Skipping /media/boot at user request

Skipping /media/boot at user request

fsck from util-linux 2.20.1

e2fsck 1.42.9 (4-Feb-2014)

/dev/mmcblk0p2: clean, 223220/393216 files, 1282976/1572864 blocks

其他:

也可以通过设置 系统挂载的次数来自动检查修复文件系统

比如:

tune2fs -c 30 /dev/mmcblk0p2 系统每启动30次,就会检查修复一次。

修复完成后,通过 tune2fs -l /dev/mmcblk0p2看到没有错误信息。

linux 自动恢复文件,Linux FSCK自动修复文件系统相关推荐

  1. linux的头文件下载,Linux内核头文件(linux headers)

    更新 Linux 内核头文件(linux headers) 三 8th, 2013 2,474 views | 发表评论 | Trackback 一般来说,如果不是自己编译 kernel,那么更新头文 ...

  2. linux自动挂载文件修复,Linux文件系统管理 开机自动挂载及fstab文件修复

    概述 开机自动挂载及fstab文件修复 开机自动挂载 实现开机后自动挂载,就需要修改系统的自动挂载文件 /etc/fstab.因为系统就是依赖这个文件决定启动时加载的文件系统的. 通过vi 打开/et ...

  3. linux 下恢复文件权限设置,备份和恢复Linux文件权限的方法

    在Linux系统的使用过程中,有时候我们会通过一些工具备份或恢复文件权限来进行文件日常管理.其实备份和恢复文件权限使用访问控制列表并不难,ACL根据不同的属主和属组在兼容posix的文件系统上定义了单 ...

  4. Linux用户登录自动拷贝文件,linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录...

    原文出处: http://blog.csdn.net/five3/article/details/8648484 最近需要写一个脚本备份各个服务器上的程序到一个指定服务器上,本来以为查查rsync命令 ...

  5. linux的/proc文件_Linux中“ / proc”文件系统指南

    linux的/proc文件 /proc, in short for "process", is a virtual file-system, that is created eve ...

  6. linux系统数据恢复TestDisk,如何用testdisk恢复文件 Linux已删除的文件如何恢复

    当你在 Linux 系统上删除一个文件时,它不一定会永远消失,特别是当你最近才刚刚删除了它的时候. 除非你用 shred 等工具把它擦掉,否则数据仍然会放在你的磁盘上 -- 而恢复已删除文件的最佳工具 ...

  7. Windows向Linux自动传输文件,Windows向虚拟机Linux传输文件方法

    在Windows中装了个centOS,进行文件操作时,把mv写成了rm,然后就悲剧了.. 赶紧从网上找来文件的具体内容,然后由Windows向Linux挂载共享文件夹. 具体做法: 在Windows中 ...

  8. linux如何自动处理文件,linux文件处理

    df: 可以进看当前的系统disk space usage fdisk:可以用来查看,管理disk /etc/fstab: 可以查看硬盘的mount信息; 如果修改了这个文件的内容,可以通过 sudo ...

  9. linux远程获取文件,Linux下实现获取远程机器文件

    创建公钥秘钥实现无密码登录后即可获取到文件内容了!! A:xxx.xxx.6.xxx B:xxx.xxx.xxx.x 一.创建 A机器 ssh-keygen -t rsa 二.拷贝--将生成的公钥复制 ...

最新文章

  1. 找到下一个“元素节点”通用函数
  2. 从零开始搭建spring-cloud(3) ----feign
  3. php递归简单例子,php递归json类实例
  4. 跟我一起数据挖掘(22)——spark入门
  5. 编程语言的发展趋势及未来方向 目录 编程语言的发展趋势及未来方向 1 第一章 一、历史回顾及趋势概述 2 第一节 首先,编程语言的发展非常缓慢。oo等等,但是远没有好上1000倍。 3 第二节 出现
  6. NTPWEdit通过直接修改SAM文件离线更改密码
  7. Quartus-II入门
  8. java quartz 每月1号执行_Quartz 每月1号 执行规则表达式
  9. 华为交换机设置ACL时间控制
  10. html中banner怎么写,banner图欣赏
  11. 2023年全国最新二级建造师精选真题及答案59
  12. 爬虫之requests
  13. 基于NLM的插值算法
  14. 训练数据不够怎么造?yolo5 最有用的trick 之数据增强详解
  15. zk 有一个节点报 It is probably not running且日志无明显报错
  16. 华硕主板固态硬盘不识别_如果ASUS主板BIOS主板无法识别NVMe m.2 SSD,该怎么办?...
  17. 常用传感器讲解十八--爆震传感器感器(KY-031)
  18. 百度秒收录软件-秒收录动态页面站群程序源码系统
  19. Error Calling Method of a PBNI object 的问题现象及解决方案
  20. Excel单元格设置成下拉选

热门文章

  1. 修改注册表消除应用软件乱码显示(转)
  2. 微信小程序 wx.showToast() 更换icon图标
  3. 自己写的用aspose.words将word转pdf过程及一些注意问题
  4. HTML5实现彩色渐变字
  5. 解决客户端心跳正常,但是平台显示不在线的问题
  6. [IOS APP]从唐诗到元曲-蒋勋说中国文学
  7. 字节(Byte)、位(bit)
  8. 世界顶级黑客大赛内情首次揭秘:有“连环计”,最后一刻把“韩国队”拉下马...
  9. 模拟信号|隔离器放大器|隔离变送器|4-20mA|0-5V|0-10V隔离|常见问题解答
  10. 外汇投资中师傅领进门 修行在个人