xfs文件系统修复

1. 错误描述

启动CentOS7系统,发现进步了图形界面,并报如下错误:

Error getting authority: Error initializing authority:
Could not connect: No such file or directory (g-io-error-quark, 1)

根据系统提示:先登录系统,然后使用journalctl -xb查看系统日志。

使用journalctl -xb命令

# journalctl -xb

#看到错误上是有关I/O的错误,首先想到是不是磁盘问题,搜索/mount,按n逐步搜索,看下有没有错误

错误信息:Failed to /mount /dev/sdb1

肯定是磁盘上坏块等原因,导致mount失败,所以我们可以先在/etc/fstab中,把该块磁盘自动mount注释掉

2. 解决方法

2.1 修改/etc/fstab配置文件

# vi /etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon Jul 30 21:52:27 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=18e49f02-2719-4b91-aae0-dfb73e36d6bc /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
#/dev/sdb1               /data                   xfs     defaults        0 0

2.2 重启操作系统,让系统能够进入图形界面

2.3 手动mount磁盘

# mount /dev/sdb1 /data
mount: /dev/sdb1 is write-protected, mounting read-only
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

2.4 根据报错信息,修复磁盘(xfs_repair)

由于磁盘是xfs_repair格式,所以对应的修复命令是xfs_repair

# xfs_repair /dev/sdb1
Phase 1 - find and verify superblock...
bad primary superblock - bad magic number !!!

attempting to find secondary superblock...
..............................................

执行一会儿后…

verified secondary superblock...
writing modified primary superblock
sb realtime bitmap inode 18446744073709551615 (NULLFSINO) inconsistent with calculated value 65
resetting superblock realtime bitmap ino pointer to 65
sb realtime summary inode 18446744073709551615 (NULLFSINO) inconsistent with calculated value 66
resetting superblock realtime summary ino pointer to 66
Phase 2 - using internal log
        - zero log...
ERROR: The filesystem has valuable metadata changes in a log which needs to
be replayed.  Mount the filesystem to replay the log, and unmount it before
re-running xfs_repair.  If you are unable to mount the filesystem, then use
the -L option to destroy the log and attempt a repair.
Note that destroying the log may cause corruption -- please attempt a mount
of the filesystem before doing this.

提示修复失败,可以尝试使用xfs_repair -L,但可能会造成数据丢失。

2.5 执行xfs_repair -L

# xfs_repair -L /dev/sdb1
Phase 1 - find and verify superblock...
sb realtime bitmap inode 18446744073709551615 (NULLFSINO) inconsistent with calculated value 65
resetting superblock realtime bitmap ino pointer to 65
sb realtime summary inode 18446744073709551615 (NULLFSINO) inconsistent with calculated value 66
resetting superblock realtime summary ino pointer to 66
Phase 2 - using internal log
        - zero log...
ALERT: The filesystem has valuable metadata changes in a log which is being
destroyed because the -L option was used.
        - scan filesystem freespace and inode maps...
agi unlinked bucket 1 is 6368769 in ag 2 (inode=73477633)
agi unlinked bucket 2 is 6368770 in ag 2 (inode=73477634)
agi unlinked bucket 3 is 6368771 in ag 2 (inode=73477635)
agi unlinked bucket 4 is 6368772 in ag 2 (inode=73477636)
agi unlinked bucket 15 is 53775 in ag 2 (inode=67162639)
agi unlinked bucket 16 is 53776 in ag 2 (inode=67162640)
agi unlinked bucket 17 is 53777 in ag 2 (inode=67162641)
agi unlinked bucket 21 is 53781 in ag 2 (inode=67162645)
sb_icount 0, counted 1024
sb_ifree 0, counted 185
sb_fdblocks 13100529, counted 9976617
        - 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 ...
disconnected inode 67162639, moving to lost+found
disconnected inode 67162640, moving to lost+found
disconnected inode 67162641, moving to lost+found
disconnected inode 67162645, moving to lost+found
disconnected inode 73477633, moving to lost+found
disconnected inode 73477634, moving to lost+found
disconnected inode 73477635, moving to lost+found
disconnected inode 73477636, moving to lost+found
Phase 7 - verify and correct link counts...
Maximum metadata LSN (1:39499) is ahead of log (1:2).
Format log to cycle 4.
done

2.6 执行xfs_repair

# xfs_repair /dev/sdb1
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

修复成功

2.7 手动mount,修改/etc/fstab文件

# mount /dev/sdb1 /data


# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Jul 30 21:52:27 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=18e49f02-2719-4b91-aae0-dfb73e36d6bc /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/sdb1               /data                   xfs     defaults        0 0
posted @ 2018-08-10 09:00  DB-Engineer  阅读(7405)  评论(0编辑  收藏  举报