先简单汇总下前几篇文章关于linux系统环境存储的内容:
文章名称 | 核心内容 |
讲述linux内核文件系统逻辑架构 | |
讲述linux环境磁盘的类型识别和命名 | |
讲述linux环境磁盘的数据读取方式 | |
讲述磁盘分区方法 | |
讲述如何使用工具进行磁盘分区 | |
讲述磁盘分区和文件系统格式化 |
以上文章内容主要对linux环境基础的存储架构和磁盘的认识、如何使用工具进行分区和文件系统格式化,而linux环境正常使用磁盘也主要经过以上步骤。
接下来本文介绍磁盘分区正常挂载目录使用后,后期运行使用或者维护中为了确保磁盘数据的完整性,可能需要涉及的卸载目录以及基础的文件系统检查和修复方法。
主要内容:
1.文件系统检查工具fsck的简单介绍
2.卸载目录
3.使用检查工具fsck进行文件系统检查和基础的修复方法
4.重新挂载分区到目录
一、fsck是什么
fsck(file system consistency check)是linux系统中用于检查和修复文件系统错误的工具,类似于windows系统中的chkdsk工具。它的主要作用主要为:
1.检查文件系统完整性:扫描inode,块位图,目录结构等元数据。
2.修复损坏的文件系统:通过自动或者交互式修复检测到的错误。
3.恢复丢失的数据:尝试恢复损坏的inode或者文件碎片。
4.预防数据丢失:协助在文件系统损坏前发现问题。
fsck的使用场景:系统异常关机、磁盘错误、文件系统损坏(比如mount时提示需要fsck)等。
命令格式:fsck.文件系统类型 【选项】 磁盘名称(比如fsck.ext4 -y /dev/sda1)
常用选项:-A 检查/etc/fstab中所有文件系统-C 显示进度条(仅部分文件系统支持)-N 只显示检查步骤,不实际行动-T 不显示标题-V 详细输出-y 自动修复所有错误,非交互式-n 只检查不修复-f 强制检查
二、卸载目录方法
还是以上篇文章内容的操作环境,以/dev/vdb1分区为操作对象。
操作命令:
umount /mnt/ext4/ #卸载目录df -h #查看挂载目录信息
三、使用fsck工具进行文件系统检查和修复
本示例以ext4文件系统为例。以/dev/vdb1分区为操作对象,这个分区在上篇文章的操作是将其格式化文件系统为:ext4。

1.备份分区
在进行分区文件系统检查和修复前建议先做好备份(要做好数据备份的习惯)。
命令:
dd if=/dev/vdb1 of=/d2/vdb1.img bs=1M将vdb1分区备份到另外分区目录/d2下

2.模拟文件系统故障环境
刚才已经把/dev/vbd1分区挂载的目录/mnt/ext4进行了卸载,目前此分区处于未改在目录的状态。
我们来模拟一下/dev/vbd1分区的ext4文件系统的主超级块损坏,然后再看看重新挂载分区是否成功。
首先使用dd命令像/dev/vbd1分区的开头写入2kB的0字节流,相当于清空分区的头2kB空间的内容。
命令:
dd if=/dev/zero of=/dev/vdb1 bs=1KB count=2 conv=noerror(注意!此命令不要在生产环境使用,这里只是为了模拟文件系统损坏的环境)

命令解析:if=/dev/zero #从文件/dev/zero生成连续的0字节流of=/dev/vdb1 #将连续0字节流输出到目标/dev/vdb1bs=1k. #每次读写块大小为1KBcount=2 #共读写2个块conv=noerror. #遇到读写错误是继续执行3.
重新挂载分区
挂载命令:mount -t ext4 /dev/vdb1 /mnt/ext4/
这个时候会提示如下错误:
mount: /mnt/ext4: wrong fs type, bad option, bad superblock on /dev/vdb1,missing codepage or helper program, or other error.
大致意思是/dev/vdb1分区的超级块已经损坏无法进行挂载分区到目录。
核心扩展点:为什么出现挂载失败的提示?就是因为刚才通过dd命令使用连续的0字节流对/dev/vdb1分区的前2KB空间清空了数据,而ext4文件系统的主超级块处于分区的头1KB处,2kB的连续0字节刚好把主超级块数据抹掉了。而使用mount命令挂载分区的时候会首先读取的主超级块这个关键元数据。
4.使用fsck工具对文件系统进行检查和修复

最后提示“/dev/vdb1: ***** FILE SYSTEM WAS MODIFIED *****”表示修复完成。
5.再次挂载分区成功

四、核心要点
1.本章节主要是讲述linux环境如何卸载分区,并模拟了ext4文件系统超级块损坏的情况下,使用fsck命令进行检查恢复的基础操作。
2. fsck命令主要针对ext系列文件系统(ext2、ext3、ext4)有效,如果是xfs、btrfs等其他的文件系统会有对应的工具。
最后简单汇总下不同文件系统的检测方法:
文件系统 | 检查工具 | 示例命令 |
Ext2/ext3/ext4 | e2fsck | Fsck.ext4 -f /dev/sda |
xfs | xfs_repair | Xfs_repair /dev/sda |
btrfs | Btrfs check | Btrfs check --repair /dev/sda |
Fat/ntfs | dosfsck | Fsck.fat -a /dev/sda |
请注意!不同文件系统的数据存储方式不一样,因此检测工具和工具的使用方法都不一样。