【linux】按部就班学运维-基础篇-修复文件系统实战


文章目录


你们好,我是高胜寒,本文是Linux运维-按部就班学运维-基础篇的第53篇文章。node


前言:

今天咱们来聊聊,文件系统的修复:
文件系统损坏,可能是因为忽然断电或者设备读写数据异常等缘由致使的文件系统损坏。linux

也遇到过文件系统变为只读,通常是由于多机写入时同步机制出现问题,或者单机写入时断电。运维

常见使用的修复命令为: fsckide

实验环境

本文采用的系统为:日志

[root@xinsz08-15 ~]# cat /etc/redhat-release CentOS release 6.9 (Final)[root@xinsz08-15 ~]# uname -r2.6.32-696.el6.x86_64

增长了一块硬盘方便作实验用blog

在这里插入图片描述

解决方案

1) 系统出现只读的状况的解决方案

这种状况咱们能够修改/etc/fstab文件,将受损的文件的开机自动挂载先注释掉,而后使用rw的方式进行挂载。图片

mount -o remount rw /dev/sdb1 /mntrem

2) 系统文件受损,能够使用fsck命令

实验步骤:同步

a. 建立一个1G的分区
b. 对分区进行格式化
c. 破坏文件系统并从新挂载
d. 修复超级快
e.查看修复成功的效果it

a. 建立一个1G的分区
[root@xinsz08-15 ~]# fdisk /dev/sdb

在这里插入图片描述
上面截图是分区了一个1G大小的sdb1分区

b. 对分区进行格式化
[root@xinsz08-15 ~]# mkfs.ext4 /dev/sdb1[root@xinsz08-15 ~]# ll /dev/sdb*brw-rw---- 1 root disk 8, 16 7月   1 22:59 /dev/sdb
brw-rw---- 1 root disk 8, 17 7月   1 23:01 /dev/sdb1[root@xinsz08-15 ~]# mkdir /sdb1[root@xinsz08-15 ~]# mount /dev/sdb1 /sdb1   ##挂载分区[root@xinsz08-15 ~]# df -hFilesystem      Size  Used Avail Use% Mounted on
/dev/sda2        20G  5.5G   13G  31% /
tmpfs           491M   72K  491M   1% /dev/shm
/dev/sda1       190M   35M  146M  20% /boot
/dev/sdb1       988M  1.3M  935M   1% /sdb1

查看是否能够写入内容

[root@xinsz08-15 ~]# cp /etc/passwd /sdb1/[root@xinsz08-15 ~]# cd /sdb1/[root@xinsz08-15 sdb1]# lslost+found  passwd[root@xinsz08-15 sdb1]#

c. 破坏文件系统并从新挂载
[root@xinsz08-15 ~]# dd if=/dev/zero of=/dev/sdb1 bs=512 count=4记录了4+0 的读入
记录了4+0 的写出
2048字节(2.0 kB)已复制,0.00266775 秒,768 kB/秒[root@xinsz08-15 ~]# df -hFilesystem      Size  Used Avail Use% Mounted on
/dev/sda2        20G  5.5G   13G  31% /
tmpfs           491M   72K  491M   1% /dev/shm
/dev/sda1       190M   35M  146M  20% /boot
/dev/sdb1        64Z   64Z  986M 100% /sdb1

能够看到 /dev/sdb1的大小变成了64Z ,咱们看看还可否写入

[root@xinsz08-15 sdb1]# touch aaatouch: 没法建立"aaa": 输入/输出错误[root@xinsz08-15 sdb1]# pwd/sdb1

能够看到已经没法写入了,如今咱们进入下一步开始修复,使用fsck命令

d. 修复超级快
[root@xinsz08-15 ~]# umount /dev/sdb1   #切记必定要先卸载在修复[root@xinsz08-15 ~]# fsck -y -t ext4 /dev/sdb1fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)fsck.ext4: 超级块无效, trying backup blocks...
超级块 needs_recovery flag is clear, but 日志 has data.
Recovery flag not set in backup 超级块, so running 日志 anyway.
/dev/sdb1: 正在修复日志
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录链接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
Free 块s count wrong for 簇 #1 (32702, counted=32701).处理? 是

Free 块s count wrong (252369, counted=252368).
处理? 是

Free inodes count wrong for 簇 #0 (7365, counted=7364).处理? 是

Free inodes count wrong (66373, counted=66372).
处理? 是


/dev/sdb1: ***** 文件系统已修改 *****
/dev/sdb1: 12/66384 files (0.0% non-contiguous), 12696/265064 blocks[root@xinsz08-15 ~]#

能够看到文件系统已修复的提示,咱们从新挂载来试一下

e.查看修复成功的效果
[root@xinsz08-15 ~]# mount /dev/sdb1 /sdb1    ##挂载[root@xinsz08-15 ~]# df -hFilesystem      Size  Used Avail Use% Mounted on
/dev/sda2        20G  5.5G   13G  31% /
tmpfs           491M   72K  491M   1% /dev/shm
/dev/sda1       190M   35M  146M  20% /boot
/dev/sdb1       988M  1.3M  935M   1% /sdb1[root@xinsz08-15 ~]# cd /sdb1[root@xinsz08-15 sdb1]# touch aaa   #能够看到已经可以从新建立文件[root@xinsz08-15 sdb1]# lsaaa  lost+found  passwd[root@xinsz08-15 sdb1]#

fsck 命令详解

1)fsck详解:

做用: 用来检查和维护不一致的文件系统,若系统断电或者磁盘发生异常,能够使用fsck 来检查和修复

常见的参数

参数 做用
a 自动修复文件系统,不询问任何问题
A 依照/etc/fstab配置文件内容,检查文件内所列的所有文件系统
P 与-A搭配使用,会检查全部的文件系统
-r 互动模式,让用户确认
-t 指定要检查的文件系统类型
-V 显示指令执行的过程
-y 关闭互动模式
-f 强制检查
-C 显示完整的检查进度
-p 自动修复文件系统的错误
fsck使用举例
1)检查磁盘/dev/sdb1的文件系统
[root@xinsz08-15 sdb1]# fsck /dev/sdb1

2) 强制检查/dev/sdb1的文件系统
[root@xinsz08-15 sdb1]# fsck -f /dev/sdb1

3) 检查/dev/sdb1的ext4文件系统是否正常,若是有异常自动修复
[root@xinsz08-15 sdb1]# fsck -t ext4 -a /dev/sdb1

总结

特别说明的是尽可能不要使用 -f -y 这样的强制自动修复功能,或者fsck 提示大量的inode错误,就不要强制修复了,须要以只读的方式仔细查看修复过程。

我是高胜寒,一个在教培行业不忘初心的人。欢迎点赞收藏,咱们下篇文章见!

相关文章
相关标签/搜索