您的位置:首页 > 其它

关于文件系统的问题

2018-01-11 20:53 232 查看
 

某日,去客户那里巡检,恰好客户遇到了点问题,就是从存储上传下来的备份文件,无法解压开,提示invalid file systemcontral data,是用Z格式压缩的,用uncompress 解压就出现以上提示。怀疑FTP传的有问题,但是对比文件的大小等等都一样,第二次传的时候,问题终于出现了,FTP下来后,发现文件大小都是0字节,并且rm删不掉,提示:0653-609

上网查了一下,基本就归结到两方面,一:权限  二:文件系统有问题。权限问题可以排除,那就是文件系统的问题了,询问庞工,此文件系统是否现在可以 umount,说可以,结果umount下来后,再mount,就mount不上去了,执行#fsck –y fsname 提示说已经修复成功,然后mount,成功!再FTP下来,解压缩,一切正常!

最近经常遇到,文件系统出问题,比如上次在东营银座,前几天在德州农信,一般两步可以搞定:一:#fsck –y fsname (运行它以前要确保文件系统已经umount下来了,否则后果很严重)二:恢复超级块:#dd count=1 bs=4k skip=31 seek=1 if=/dev/lvname of=/dev/lvname  注:/dev/lvname就是出问题的文件系统所对应的lv,此命令就是用31号逻辑块(备份超级块)覆盖1号逻辑块(主超级块),还有0号块是逻辑卷控制块,如果0号块坏了,就哭吧,也许有解决的办法,不过我现在还没掌握。

最后注意,恢复完超级块后,要做个fsck,以确保文件系统的一致性。

以下是当时在网上搜索的文章,附在后面:

 

 

 

 

 

Unix中利用fsck解决常见的文件系统弊病
时间:2009-05-22 10:11:06  来源:Linux联盟  作者:
 
Unix操作系统在突然断电后有可能导致系统的瘫痪。在这一点上,Unix操作系统不如微软的操作系统。如果发生断电事故的话,Windows操作系统在重新启动的时候会进行自动检测与恢复。
  通常情况下,如果硬盘上的超级块和Inode块与内存中的副本不一致的话,则就有可能导致系统启动失败。如当突然断电时,硬盘中的超级块没有及时保存到硬盘中,此时就会导致两个地方的超级块不一致,文件系统的完整性就会受到破坏。严重的话操作系统就会因此而瘫痪。不过在遇到这种文件系统错误方面的故障,往往不需要重新安装操作系统,而纸需要执行fsck命令,就可以修复大部分文件系统的常规错误。
一、fsck可以修复的文件弊病。
Unix系统中的fsck修复功能很强,比Windows操作系统下的分区修复命令要强的多。Fsck命令主要用来修复超级块、Inode块与内存中副本不一致的地方。在Unix操作系统中,把文件系统分为脏文件系统与干净文件系统两类。在系统下次启动的时候,系统会利用fsck命令来检查脏文件系统。若出现错误的话,则会尝试进行自我修复。具体的来说,fsck
命令可以解决如下的一些文件系统弊病。
  一是一个文件在内目录文件里有多个记录,或者inode块里说明的文件类型无效;二是一个inode节点既没有被标示为空闲,也没有在使用中或者块号码超出范围;三是在inode快里表示的文件大小与保存空间地址数组里的数据块大小不一致。以上这些就是Unix操作系统中常见的Inode块相关的错误。Fsck命令不仅可以用来修复文件系统中inode块方面的故障,而且还可以用来检测并修复超级块中出现的问题。如一个受损的超级块含有错误的校验码或者硬盘中超级块无法与内存中的超级块同步等问题。
  一般来说,Unix操作系统会自动维护Inode节点与硬盘中超级块的信息。但是有时候一些意外事故无法避免,就可能会出现这方面的故障。如在系统使用的过程中(在保存文件时),突然发现了断电,就可能导致Inode节点或者超级块出现问题。再如在使用的过程中,不小心踢了一下主机,导致硬盘运行出现故障。此时内存中的Inoded块与超级块信息无法保存到硬盘中,也会导致这些故障的产生。
  二、如何使用fsck命令?
  在利用fsck命令来修复文件系统的时候,主要可以分为五个步骤。作为系统工程师需要了解这五个步骤的内容。因为在检测过程中,如果在哪一个步骤中发现错误,则会要求系统工程师进行响应。如果系统工程师不了解每个步骤的作用那么就无法在后续的互动环节中做出正确的回应。具体来说,其五个主要以及作用如下:
  步骤一:检验inode节点格式的正确性。当利用fsck命令来进行文件系统检测时,其第一个步骤就是检验inode节点格式是否准确,并且复制块的内容。如果发现某个Inode节点有问题,如发现某个块的块号越界时,系统就会把这个块标志为BAD;如果这个块号已经被另外的文件所引用,则会标示为DUP。作为系统工程师要根据这些标志信息来判断问题的原因。这有利于帮助他们迅速定位并最终解决问题。
  步骤二:查找inode号越界的块。在第二个步骤中,Unix操作系统将从根目录开始检查所有的目录项,检查在第一个步骤中发现的inode号越界的块。如果找到这些目录项,则默认情况下,操作系统将删除整个目录或者文件,以校正这些错误。为此,有时候如果系统以外当机并重新启动,有用户会发现某些文件或者目录意外丢失了。这就是因为Inode号越界,而fsck自动对相关的目录与文件进行
b9ad
整项删除的原因。由于这是Inode号错误引起的文件或者目录删除,往往不能够通过恢复工具来恢复原有的文件。即时能够恢复回来,也是一些没用的不能够读取的文家。为此保证Unix操作系统的正常开关机对于提高文件的安全性是非常有帮助的。
  步骤三:查找没有被引用的目录。在Unix操作系统中,默认情况下每个文件系统下都有/Lost+found这个目录。那么这个目录到底有什么作用呢?其在fsck命令修复文件系统的时候特别有用。Unix操作系统在使用fsck的过程中,会查找那些还没有被引用的目录,并把这些目录里的文件保存到/lost+found目录中,以供系统工程师做进一步的分析与抉择。在这个目录中的文件并不是以实际的文件名或者目录名来命名的,而是以系统的inode号来命名。为此这会给系统工程师的阅读带来一定的麻烦,不过这也是没有办法的事情。在创建文件系统的时候,系统默认会创建这个目录。但是在执行fsck命令的时候,则不会自动欻功能键这个目录。为此在日常的维护工作中,系统工程师不要删除这个目录。否则的话,当发现那些没有被引用的目录,操作系统就无法把他们保存到这个目录中。
  步骤四:核对Inode节点的链接数与目录文件的记录数。在执行fsck检测文件系统的过程中,操作系统会逐个核对inode节点的链接数与目录文件的记录数。如果发现错误的话,则会提示系统工程师进行相关的操作。如会提示系统工程师删除某个文件或者重新建立链接。当系统工程师操作完毕后,fsck命令会重新计算可用的inode节点数,并且把这个数值根保存在超级块里的Inode
节点数进行比较。随着系统中目录与文件数量的增多,这个过程往往需要花费比较多的时间。不过这也是fsck命令中最重要的一个修复环节。只要文件或者目录损坏的程度不是很大,那么就可以通过这个过程中的重建建立链接的措施来最大限度的恢复受到损坏的文件与目录。
  步骤五:超级块的检测。最后操作系统会把可用的块数与保存在超级块中的块数进行比较。如果发现问题会征询系统工程师的意见,是否需要对操作系统的受损坏的文件系统进行自动修复。如果现在自动修复的话,则会利用新计算出来的块列表替换错误的可用块列表。
  以上就是fsck命令在检测文件系统过程中主要经过的五个环节。作为系统工程师需要了解这五个过程对于操作系统的影响有多大。因为这直接影响到文件系统修复后对原有文件的破坏程度。这对于我们修复系统崩溃后的文件系统也有很大的帮助。如在系统崩溃后我们发现少了某些文件的话,那么可以到第三个步骤中谈到的/lost+found目录中去查找一下。往往在这个目录中,可以发现缺少的文件。
  三、Fsck命令的注意事项。
Fsck文件系统检测与修复命令虽然功能很强大,但是在使用的时候还是需要注意一些细节上的问题。否则的话,很可能文件系统没有修复,反而造成了大量文件与目录的破坏。作为合格的系统工程师,应该避免这种搬起石头砸自己脚的蠢事。具体的来说,在使用fsck命令的过程中,需要注意如下几个方面的问题。
  一是需要注意fsck命令的互动性。fsck命令有两个执行方式,一是互动的,而是自动的。如果采用fsck命令不用任何选项时,其在修复检测到的损坏之前会提示系统工程师。如果系统工程师同意对检测到的错误进行修复的话,那么输入Y表示同意。如果在使用fsck命令时输入-y参数,则操作系统在检测到错误时,并不会提醒用户进行进行确认。而会自动采用默认的修复方法进行修复。由于在修复的过程中,可能会有些破坏性的动作。如可能会删除某个文件或者目录等等。作为系统工程师需要了解这些被删除的文件或者目录的信息。这有助于提高操作系统中文件的安全性。
  二是在对根文件系统采用fsck命令的时候,需要选择合适的用户模式。由于在Unix操作系统中不能够卸载根文件系统,因为对根文件系统的检查必须在单用户模式下进行。否则的话,其可能会对所有的文件系统进行检测。这不仅会增加时间,而且还可能导致一些意外的事故。为此在对根文件系统进行检测的时候,最好重新启动操作系统并选择单用户模式。
 

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐