Linux硬盘文件系统检测修复(Ext2)----相关网络资料整理硬盘及文件系统硬盘的大小=柱面数*每个柱面的大小=柱面数*磁面数*每磁道的扇区数*扇区的大小。=cylinders*heads*sectors*Sectorsize硬盘的最小存储单位叫做扇区(Sector)。每个扇区储存512字节(相当于0.5KB)操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个块(block)。这种由多个扇区组成的块,是文件存取的最小单位。块的大小,最常见的是4KB,即连续八个sector组成一个block。硬件设备不可能一直使用下去,系统可能会在使用多年后出现故障。当发生这种情况,以及由于电源故障或者某些其他问题而导致操作系统异常关闭的时候,您可能会在还原系统备份时碰到一些在崩溃期间处于打开状态的文件,并且现在需要对其加以处理。此时,您可能会碰到一些需要修复inode或者存在错误的消息。如果发生这种状况,那么fsck命令可以用来救急!您可以使用fsck来修复文件系统或者修正受损的inode,而不是还原系统、或者甚至重新构建操作系统。1Ext2:是GNU/Linux系统中标准的文件系统,其特点为存取文件的性能极好,对于中小型的文件更显示出优势,这主要得利于其簇快取层的优良设计。这是Linux中使用最多的一种文件系统,它是专门为Linux设计的,拥有最快的速度和最小的CPU占用率2Ext3:是ext2的下一代,是在保有目前ext2的格式之下再加上日志功能。它兼容ext2,并且从ext2转换成ext3并不复杂。ext3文件系统已经非常稳定可靠。3EXT4:是ext3文件系统的后继版本,但是Ext4是Linux文件系统的一次革命。在很多方面,Ext4相对于Ext3的进步要远超过Ext3相对于Ext2的进步。Ext3相对于Ext2的改进主要在日志方面,但是Ext4相对于Ext3的的改进是更深层次的,是文件系统数据结构方面的优化,是一个高效的、优秀的、可靠的和极具特点的文件系统,并且EXT3可以转为EXT4的检测之前可以先使用dmsg命令查看有没有硬件I/O故障的日志,如果有,先用fsck看看是不是文件系统有问题,如果不是则可以使用下面介绍硬盘检测和优化方法来修复它。dmesgmsg.txtGreperror./msg.txtinode与blocksinode是UNIX操作系统中的一种数据结构,它包含了与文件系统中各个文件相关的一些重要信息。inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inodetable),存放inode所包含的信息。某个文件系统inode的使用率达到百分之百,那么您将无法在该文件系统中创建更多的文件、设备、目录等等。在一台配置较低的Linux服务器(内存、硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df-h命令查看了一下磁盘使用情况,发现/data分区只使用了66%,还有12G的剩余空间,按理说不会出现这种问题。后来用df-i查看了一下/data分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件。每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inodetable的大小就会达到128MB,占整块硬盘的12.8%。filesystem中inodetable/dataarea分配空间的比例是128/2048,也就是1/16。可以用stat命令,查看某个文件的inode信息:statexample.txtinodetable是dataarea的索引表。linuxFS可以简单分成inodetable与dataarea两部份。inodetable上有许多的inode,每个inode分别记录一个档案的属性与这个档案分布在哪些datablock上。查看一个硬盘或分区的文件系统信息,可以通过dumpe2fs-hdevice_name来查看,比如:#dumpe2fs-h/dev/sda|grepnodeInodesize:128inode参数是可以通过mkfs.ext3命令改变的:mkfs.ext3-i2048-b8192-f1024/dev/sdb2-i2048更改inode为每2KB创建一个-b8192设置blocksize的大小为8kB-f1024设置fragments的大小为1KBmkfs.ext3–N2939495/dev/sdb2–N2939495更改inodecount。命令:dmesg,badblocks,hdparm、e2fsck文件统计:ls–lR|grep“^-”|wc–ldf:查看文件系统情况(Printfilesystemusagestatistics)du:计算文件或文件夹磁盘空间的使用情况e2fsck-a/dev/sdbbadblocks–v/dev/sda磁盘(disk)分区(partition)文件系统(filesystem)卷(volume)目录(dir)e2fsck磁盘检查修复命令功能说明:检查ext2文件系统的正确性。语法:e2fsck[-acCdfFnprsStvVy][-b][-B][-l][-L][设备名称]补充说明:e2fsck执行后的传回值及代表意义如下。0没有任何错误发生。1文件系统发生错误,并且已经修正。2文件系统发生错误,并且已经修正。4文件系统发生错误,但没有修正。8运作时发生错误。16使用的语法发生错误。128共享的函数库发生错误参数:-a不询问使用者意见,便自动修复文件系统。-b指定superblock,而不使用预设的superblock。-B指定区块的大小,单位为字节。-c一并执行badblocks,以标示损坏的区块。-C将检查过程的信息完整记录在filedescriptor中,使得整个检查过程都能完整监控.-d显示排错信息。-f即使文件系统没有错误迹象,仍强制地检查正确性。-F执行前先清除设备的缓冲区。-l将文件中指定的区块加到损坏区块列表。-L先清除损坏区块列表,再将文件中指定的区块加到损坏区块列表。因此损坏区块列表的区块跟文件中指定的区块是一样的。-n以只读模式开启文件系统,并采取非互动方式执行,所有的问题对话均设置以no回答。-p不询问使用者意见,便自动修复文件系统。-r此参数只为了兼容性而存在,并无实际作用。-s如果文件系统的字节顺序不适当,就交换字节顺序,否则不做任何动作。-S不管文件系统的字节顺序,一律交换字节顺序。-t显示时间信息。-v执行时显示详细的信息。-V显示版本信息。-y采取非互动方式执行,所有的问题均设置以yes回答。Inode11797845hasillegalblock(s)创建一个文件后,会同时创建一个inode和一个block,inode存放的是文件的属性信息,但是不包括文件名,并存放所对应数据所在的block块的地址的指针;block存放文件的数据,每个block最多存放一个文件,而当一个block存放不下的情况下,会占用下一个block。Inode36028447,i_blocksis1229512,shouldbe1230008.Fixy?Checkingforbadblocks(read-onlytest):0.09%done,0:19elapsedbadblocks检测硬盘功能说明:检查磁盘装置中损坏的区块。语法:badblocks[-svw][-b][-o][磁盘装置][磁盘区块数][启始区块]补充说明:执行指令时须指定所要检查的磁盘装置,及此装置的磁盘区块数。参数:-b指定磁盘的区块大小,单位为字节。-o将检查的结果写入指定的输出文件。-s在检查时显示进度。-v执行时显示详细的信息。-w在检查时,执行写入测试。[磁盘装置]指定要检查的磁盘装置。[磁盘区块数]指定磁盘装置的区块总数。[启始区块]指定要从哪个区块开始检查。$badblocks-s//显示进度-v//显示执行详细情况/dev/sda1使用badblocks以读写方式检测未挂载的磁盘设备或分区:$badblocks-s//显示进度-w//以写去检测-v//显示执行详细情况/dev/sda2hdparm显示与设定硬盘的参数hdparm可检测,显示与设定IDE或SCSI硬盘的参数。语法:hdparm[-CfghiIqtTvyYZ][-a快取分区][-A0或1][-cI/O模式][-d0或1][-k0或1][-K0或1][-m分区数][-n0或1][-pPIO模式][-P分区数][-r0或1][-S时间][-u0或1][-W0或1][-X传输模式][设备]参数:-a快取分区设定读取文件时,预先存入块区的分区数,若不加上快取分区选项,则显示目前的设定。-A0或1启动或关闭读取文件时的快取功能。-cI/O模式设定IDE32位I/O模式。-C检测IDE硬盘的电源管理模式。-d0或1设定磁盘的DMA模式。-f将内存缓冲区的数据写入硬盘,并清楚缓冲区。-g显示硬盘的磁轨,磁头,磁区等参数。-h显示帮助。-i显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供。-I直接读取硬盘所提供的硬件规格信息。-k0或1重设硬盘时,保留-dmu参数的设定。-K0或1重设硬盘时,保留-APSWXZ参数的设定。-m磁区数设定硬盘多重分区存取的分区数。-n0或1忽略硬盘写入时所发生的错误。-pPIO模式设定硬盘的PIO模式。-P磁区数设定硬盘内部快取的分区数。-q在执行后续的参数时,不在屏幕上显示任何信息。-r0或1设定硬盘的读写模式。-S时间设定硬盘进入省电模式前的等待时间。-t评估硬盘的读取效率。-T评估硬盘快取的读取效率。-u0或1在硬盘存取时,允许其他中断要求同时执行。-v显示硬盘的相关设定。-W0或1设定硬盘的写入快取。-X传输模式设定硬盘的传输模式。-y使IDE硬盘进入省电模式。-Y使IDE硬盘进入睡眠模式。-Z关闭某些Seagate硬盘的自动省电功能。例子:1)直接硬盘读测试#hdparm-tT--direct/dev/sda1使用DMA方式传输数据可以占用更少的CPU资源,因此与其它操作系统一样,Linux支持硬盘以DMA方式转输数据,但在安装RedHat7.0时关于DMA的默认选项是Disable的,当然你可以在安装时就enable它。hdparm-t/dev/hda查看IDE的磁盘,Sata或scsi的为:hdparm-t/dev/sda一硬盘using_dma为off,读取速度慢;而另一硬盘using_dma为on,读取速度快。查看与开启DMA支持执行命令如下:#hdparm-cdt/dev/hda#hdparm–d1/dev/had#hdparm-cdt/dev/haddparm的改变是个临时的状态,下次再次启动Linux系统的时候hdparm将会消失。所以要想永久的保存修改后的信息,就必须把修改后的参数和数据写入/etc/rc.d/rc.local或/etc/rc.local文档,甚至比启动过程要早运行的程式中。系统状态查看1、/top显示的系统信息包括运行时间、进程的数量和状态、CPU周期的百分比和每个进程占用的存储空间、每个进程运行的时间,以及大量的其它信息。进程是按使用资源的多少来排列的,显示每5秒钟自动更新一次。在显示过程中,也可以按下空格键手动更新显示。在查找并解决系统性能故障时,这些信息是相当有用的。2、/cat/proc/cpuinfo查看有关系统CPU的信息3、/free命令可以查看系统中内存空间的大小4、/vmstat命令对操