Linux XFS文件系统修复
普通文件系统
# 普通文件系统,模拟文件损坏
# 1. 先格式化
[root@localhost ~]# mkfs.xfs -f /dev/sdb
meta-data=/dev/sdb isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# 2. 挂载分区
[root@localhost ~]# mount /dev/sdb /mnt && echo "xxxxxxxxxxxx" > /mnt/test.txt
# 3. 使用xfs_db命令丢弃随机文件系统元数据块来模拟文件系统损坏(需要umount)
[root@localhost ~]# umount /mnt
[root@localhost ~]# xfs_db -x -c blockget -c "blocktrash -s 512109 -n 1000" /dev/sdb
# 4. 使用使用-n 标志执行试运行修复
[root@localhost ~]# xfs_repair -n /dev/sdb 如果失败使用-F,可能会导致数据丢失
[root@localhost ~]# xfs_repair /dev/sdb
LVM
# LVM 中使用xfs_repair修复
# 如果lvm处于inactive,需要先将其置位active
[root@localhost ~]# lvscan
ACTIVE '/dev/kylinsec/swap' [3.00 GiB] inherit
ACTIVE '/dev/kylinsec/root' [<26.00 GiB] inherit
inactive '/dev/kylin/test' [1020.00 MiB] inherit
[root@localhost ~]# lvchange -ay /dev/mapper/kylin-test
# 在修复之前需求提前umount
[root@localhost ~]# umount /dev/mapper/kylin-test
# 修复
[root@localhost ~]# xfs_repair /dev/mapper/kylin-test