fsck命令——小记

         有时候维护Linux服务器时会面临这样一种错误,即显示文件系统变成(Read Only System),即文件系统变成只读的方式,产生这一问题的原因可能有两种:

                                              (1)多机写入时同步机制出现问题

                                              (2)单机写入时出现服务器掉电的情况


(1)修改/etc/fstab,将受损的文件系统先注释掉,如果无法读写该文件则采用mount -o remount rw , / 将文件系统改成读写模式。

(2)针对受损的文件系统,执行fsck命令,如:fsck /dev/sda1等。



*运行fsck后,该命令会分6个阶段对文件系统 

进行检查,这六个阶段分别是: 

阶段1: 检查块和块的大小 

阶段2: 检查路径名 

阶段3: 检查连接性 

阶段4: 检查参考记数 

阶段5: 检查自由块列表 

阶段6: 补救自由块列表 

对每个阶段进行检查,常见的一些错误:

1) 移去一个没有相关文件的目录入口 

这时用户可以回答Yes或Y来删除该目录入口。     

 2) 重连接一个已分配但不能访问的文件:     

 fsck找到了一个已分配的I节点,但却不可访问(该节点没与任何目录连接),这时一般对fsck的"RECONNECT?"回答Yes,即把该I节点连接到lost+found目录下,文件名即是I节点号,之后管理员应检查该文件类型,判明该文件用途,再将该文件拷贝到相应目录下。

3) 连接数调整ADJUST

 在交互方式下,fsck若发现连接数(与原记录)不一致,将询问用户采取何种行动,本例发现一目录的I节点连接数与该目录的真实连接数不一致。

这时用户应该回答Yes或Y来改正连接数。     

4) 自由块表不一致     

fsck查出未分配块数与超级块中所给出的自由块表不一致。

这时用户应该回答Yes或Y来修正超级块。 

从上面的出错信息和处理方法可以发现,对于fsck询问的问题大多数情况下都可以用Yes来回答,所以在实际应用时,可以用" -y"选项来执行该命令对硬盘进行检查和修复。 

这里:

RECONNECT

   表示目录丢失,可将其存入lost+found中再作转移。回答yes

SUPERBLK坏(注意是坏,不是wrong)

   修复见上面(如果是wrong就随便了,修不修都可以)

CLEAR

   删i节点,可能会错

REMOVE

   删文件,一般给出文件名。file=....

ADJUST

   调整连接数。实际数与原记录不符。回答yes

使用一般都是yes过去的,不能在正在mount的文件系统上操作,否则有可能导致文件系统损坏。但也没有碰到过用fsck导致发生错误的情况,不过还是建议操作的时候规范一些。

对于一个已经安装好了的文件系统,fsck 命令不会做出矫正。 

fsck 命令出于某些原因可以在一个已经安装好了的文件系统中运行,但不是进行修复。但是当文件系统安装完毕之后,也许会返回不准确的错误消息。 

fsck 命令检查并以交互方式修复不连贯的文件系统。在安装文件系统之前,应该运行这个命令。您必须能够读设备文件,在这个设备上驻留着文件系统(例如/dev/sda1)安装一个不连贯的文件系统也许会导致系统的崩溃。




磁盘检测原理:


一致性的检查分为两种:块的一致性检查和文件的一致性检查。在检查块的一致性时,fsck程序构造两张表,每张表为块设立一个计数器,都初始化为0。第一张表中的计数器跟踪该块在文件中出现的次数,第二张表中的计数器跟踪空闲表中的出现次数。接着fsck程序使用原始设备读取全部的i节点,忽略文件的结构,只返回所有的磁盘块,从0节点开始,可以建立相应文件的全部块的块号表。每当读到一个块号时,该块在第一个表中的计数器加1,然后程序读空闲表或位图,查找全部未使用的块,当在空闲表中找到一个块时,第二张表相应的计数器加1。那么如何判断文件系统一致呢?哈哈,如果我们的文件系统一致,每一个块要么在第一张表中计数为1,要么在第二张表中技术为1。那要是不是这样呢?

1. 两张表中都不存在,则块丢失, 解决办法:fsck程序,将其加入到空闲表中

2. 在空闲表中出现两次, 解决办法: fsck程序重新建立空闲表

3. 同时处于使用和空闲表中,fsck程序分配一个空闲块,将其内容拷贝到该空闲块中,然后把它插入到文件中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值