linux磁盘文件系统校验
由于系统在运作时谁也说不准啥时硬件或者是电源会有问题,所以『当机』可能是难免的情况(不管
是硬件还是软件)。 现在我们知道文件系统运作时会有磁盘与内存数据异步的状况发生,因此莫名其
妙的当机非常可能导致文件系统的错乱。 问题来啦,如果文件系统真的发生错乱的话,那该如何是
好?就...挽救啊!不同的文件系统救援的指令不太一样,我们主要针对 xfs 及 ext4 这两个主流来说
明而已喔!
xfs_repair处理XFS文件系统
回到顶部[root@initroot ~]# xfs_repair [-fnd] 装置名称选项与参数:
-f:后面的装置其实是个文件而不是实体装置-n :单纯检查并不修改文件系统的任何数据 (检查而已) -d :通常用在单人维护模式底下,针对根目录 (/) 进行检查与修复的动作!很危险!不要随便使用范例:检查一下刚刚建立的 /dev/vda4 文件系统
[root@initroot ~]# xfs_repair /dev/vda4 Phase 1 - find and verify superblock... Phase 2 - using internal log Phase 3 - for each AG... Phase 4 - check for duplicate blocks... Phase 5 - rebuild AG headers and trees... Phase 6 - check inode connectivity... Phase 7 - verify and correct link counts... done# 共有 7 个重要的检查流程!详细的流程介绍可以 man xfs_repair 即可!
范例:检查一下系统原本就有的 /dev/centos/home 文件系统
[root@initroot ~]# xfs_repair /dev/centos/home xfs_repair: /dev/centos/home contains a mounted filesystem xfs_repair: /dev/centos/home contains a mounted and writable filesystem fatal error -- couldn't initialize XFS libraryxfs_repair 可以检查/修复文件系统,不过,因为修复文件系统是个很庞大的任务!因此,修复时该文 件系统不能被挂载! 所以,检查与修复 /dev/vda4 没啥问题,但是修复 /dev/centos/home 这个已经 挂载的文件系统时,嘿嘿!就出现上述的问题了! 没关系,若可以卸除,卸除后再处理即可。
Linux 系统有个装置无法被卸除,那就是根目录啊!如果你的根目录有问题怎办?这时得要进入单人 维护或救援模式,然后透过 -d 这个选项来处理! 加入 -d 这个选项后,系统会强制检验该装置, 检验完毕后就会自动重新启动啰!不过,完全不打算要进行这个指令的实做... 永远都不希望实 做这东西...
fsck.ext4 处理 EXT4 文件系统
回到顶部[root@initroot ~]# fsck.ext4 [-pf] [-b superblock] 装置名称选项与参数:
-p :当文件系统在修复时,若有需要回复 y 的动作时,自动回复 y 来继续进行修复动作。找出刚刚建置的 /dev/vda5 的另一块 superblock,并据以检测系统
-f :强制检查!一般来说,如果 fsck 没有发现任何 unclean 的旗标,不会主动进入 细部检查的,如果您想要强制 fsck 进入细部检查,就得加上 -f 旗标啰!
-D :针对文件系统下的目录进行优化配置。
-b :后面接 superblock 的位置!一般来说这个选项用不到。但是如果你的 superblock 因故损毁时,
透过这个参数即可利用文件系统内备份的 superblock 来尝试救援。 一般来说,superblock 备份在:1K block 放在 8193, 2K block 放在 16384, 4K block放在 32768
[root@initroot ~]# dumpe2fs -h /dev/vda5 | grep 'Blocks per group' Blocks per group: 32768 # 看起来每个 block 群组会有 32768 个 block,因此第二个 superblock 应该就在 32768 上! # 因为 block 号码为 0 号开始编的! [root@initroot ~]# fsck.ext4 -b 32768 /dev/vda5 e2fsck 1.42.9 (28-Dec-2013) /dev/vda5 was not cleanly unmounted, check forced. Pass 1: Checking inodes, blocks, and sizes Deleted inode 1577 has zero dtime. Fix y>? yes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/vda5: ***** FILE SYSTEM WAS MODIFIED *****# 文件系统被改过,所以这里会有警告! /dev/vda5: 11/65536 files (0.0% non-contiguous), 12955/262144 blocks # 好巧合!使用这个方式来检验系统,恰好遇到文件系统出问题!于是可以有比较多的解释方向! # 当文件系统出问题,它就会要你选择是否修复~如果修复如上所示,按下 y 即可! # 最终系统会告诉你,文件系统已经被更改过,要注意该项目的意思!
已预设设定强制检查一次 /dev/vda5
[root@initroot ~]# fsck.ext4 /dev/vda5 e2fsck 1.42.9 (28-Dec-2013) /dev/vda5: clean, 11/65536 files, 12955/262144 blocks # 文件系统状态正常,它并不会进入强制检查!会告诉你文件系统没问题 (clean) [root@initroot ~]# fsck.ext4 -f /dev/vda5 e2fsck 1.42.9 (28-Dec-2013) Pass 1: Checking inodes, blocks, and sizes ....(底下省略)....无论是 xfs_repair 或 fsck.ext4,这都是用来检查与修正文件系统错误的指令。注意:通常只有身为 root 且你的文件系统有问题的时候才使用这个指令,否则在正常状况下使用此一指令, 可能会造成 对系统的危害!通常使用这个指令的场合都是在系统出现极大的问题,导致你在 Linux 开机的时候 得进入单人单机模式下进行维护的行为时,才必须使用此一指令!
另外,如果你怀疑刚刚格式化成功的磁盘有问题的时后,也可以使用 xfs_repair/fsck.ext4 来检查一磁 盘呦!其实就有点像是 Windows 的 scandisk 啦!此外,由于 xfs_repair/fsck.ext4 在扫瞄磁盘的时 候,可能会造成部分 filesystem 的修订,所以『执行 xfs_repair/fsck.ext4 时, 被检查的 partition 务 必不可挂载到系统上!亦即是需要在卸除的状态喔!』
initroot编辑整理,转载请注明www.initroot.com
100次点赞
100次阅读