点击访问 Linux 命令大全 >>
Linux 文件系统在系统发生异常(如宕机、突然断电、内核崩溃)时会产生文件不一致。对于文件系统较小的损坏,fsck 命令可以很好地解决问题。特别是对 ext3fs 和 ReiserFS 这样的日志文件系统,fsck 可以快速执行检查,并将日志回滚到上一次正常的状态中。
fsck 命令的英文全称是“filesystem check”,即检查文件系统的意思,常用于检查并修复 Linux 文件系统的一些错误信息。注意:操作文件系统前,需要先备份重要数据,以防丢失。
Linux fsck 命令用于检查并修复 Linux 文件系统,可以同时检查一个或多个 Linux 文件系统;若系统掉电或磁盘发生问题,可利用 fsck 命令对文件系统进行检查。
语法格式:fsck [OPTIONS] [FILE SYSTEM]
OPTIONS 选项说明:
选 项 | 说 明 |
-a | 自动修复文件系统,不询问任何问题 |
-A | 依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统 |
-N | 不执行指令,仅列出实际执行会进行的动作 |
-P | 当搭配”-A”参数使用时,则会同时检查所有的文件系统 |
-r | 采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式 |
-R | 当搭配”-A”参数使用时,则会略过/目录的文件系统不予检查 |
-t | 指定要检查的文件系统类型 |
-T | 执行fsck指令时,不显示标题信息 |
-V | 显示指令执行过程 |
运行 fsck 命令后 ,它将返回退出代码:
# man fsck 0 No errors 1 Filesystem errors corrected 2 System should be rebooted 4 Filesystem errors left uncorrected 8 Operational error 16 Usage or syntax error 32 Checking canceled by user request 128 Shared-library error
实例:查看 fsck 软件版本信息
[root@localhost ~]# fsck --version fsck,来自 util-linux 2.23.2
实例:修复坏的分区文件系统
[root@localhost ~]# fsck -t ext3 -r /usr/local fsck from util-linux 2.23.2 e2fsck 1.42.9 (28-Dec-2013) fsck.ext3: Is a directory while trying to open /usr/local The superblock could not be read or does not describe a correct ext2 filesystem. If the device is valid and it really contains an ext2 filesystem (and not swap or ufs or something else), then the superblock is corrupt, and you might try running e2fsck with an alternate superblock: e2fsck -b 8193 /usr/local: status 8, rss 1232, real 0.020288, user 0.002022, sys 0.005354
实例:自检全部的硬盘
[root@localhost ~]# fsck
可使用 xfs_repair 命令尝试修复受损的 xfs 文件系统。语法如下:
[root@localhost ~]# xfs_repair Usage: xfs_repair [options] device Options: -f The device is a file -L Force log zeroing. Do this as a last resort. -l logdev Specifies the device where the external log resides. -m maxmem Maximum amount of memory to be used in megabytes. -n No modify mode, just checks the filesystem for damage. -P Disables prefetching. -r rtdev Specifies the device where the realtime section resides. -v Verbose output. -c subopts Change filesystem parameters - use xfs_admin. -o subopts Override default behaviour, refer to man page. -t interval Reporting interval in seconds. -d Repair dangerously. -V Reports version and exits.
下面将先查看笔者 Linux 的文件系统类型,如下:
[root@localhost ~]# df -hT 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 17G 1.3G 16G 8% / devtmpfs devtmpfs 898M 0 898M 0% /dev tmpfs tmpfs 910M 0 910M 0% /dev/shm tmpfs tmpfs 910M 9.6M 901M 2% /run tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 146M 869M 15% /boot tmpfs tmpfs 182M 0 182M 0% /run/user/0
根据上面信息可以看出,/dev/sda1 和 /dev/mapper/centos-root 使用的均是 xfs 文件系统类型。
实例:使用 xfs_repair 命令检查和修复 /dev/sda1 文件系统。
## 尝试去检查和修复 /dev/sda1 文件系统,但是抛出了已挂载文件系统错误 [root@localhost ~]# xfs_repair /dev/sda1 xfs_repair: /dev/sda1 contains a mounted filesystem xfs_repair: /dev/sda1 contains a mounted and writable filesystem fatal error -- couldn't initialize XFS library ## 使用 umount 将 /dev/sda1 文件系统卸载 [root@localhost ~]# umount /dev/sda1 ## 再次尝试去检查和修复 /dev/sda1 文件系统,成功了 ^_^ [root@localhost ~]# xfs_repair /dev/sda1 Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan and clear agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 0 - agno = 1 - agno = 2 - agno = 3 Phase 5 - rebuild AG headers and trees... - reset superblock... Phase 6 - check inode connectivity... - resetting contents of realtime bitmap and summary inodes - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify and correct link counts... done
xfs 相关命令如下:
xfs_admin:调整 xfs 文件系统的各种参数
xfs_copy:拷贝 xfs 文件系统的内容到一个或多个目标系统(并行方式)
xfs_db:调试或检测 xfs 文件系统(查看文件系统碎片等)
xfs_check:检测 xfs 文件系统的完整性
xfs_bmap:查看一个文件的块映射
xfs_repair:尝试修复受损的 xfs 文件系统
xfs_fsr:碎片整理
xfs_quota:管理 xfs 文件系统的磁盘配额
xfs_metadump:将 xfs 文件系统的元数据 (metadata) 拷贝到一个文件中
xfs_mdrestore:从一个文件中将元数据 (metadata) 恢复到 xfs 文件系统
xfs_growfs:调整一个 xfs 文件系统大小(只能扩展)
xfs_logprint:printthe log of an XFS filesystem
xfs_mkfile:创建一个 XFS 文件
xfs_info:expand an XFS filesystem
xfs_ncheck:generate pathnames from i-numbers for XFS
xfs_rtcp:XFS realtime copy command
xfs_freeze:suspend access to an XFS filesystem
xfs_io:debug the I/O path of an XFS filesystem