如果vxfs文件系统需要做fullfsck, 先做space-optimized snapshot 以备查找原因

文章: 100050686
上次发布时间: 2021-08-26
评级: 0 0
产品: InfoScale & Storage Foundation

Description

客户经常遇到vxfs文件系统需要做fullfsck的情况。如果文件系统fullfsck被标记,下次再挂载文件系统时候,必须做fullfsck检查。

fullfsck flag 被标记一般可以检查系统日志发现,错误信息类似如下:

Apr 1 01:17:23 XXX  kernel: vxfs: msgcnt 3 mesg 096: V-2-96: vx_setfsflags - /dev/vx/dsk/XXdg/XXvol file system fullfsck flag set - vx_mapbad

 

客户经常担心做fsck 会丢失数据。可以先用 “fsck -o full -n” 测试看一下,如果fullfsck实际做下去,会修复什么问题:

 #fsck -t vxfs -o full -n /dev/vx/dsk/XXdg/XXvol
fsck from util-linux 2.23.2
pass0 - checking structural files
pass1 - checking inode sanity and blocks
pass2 - checking directory linkage
pass3 - checking reference counts
fileset 999 primary-ilist inode 123 unreferenced file, reconnect? (ynq)n
fileset 999 primary-ilist inode 123 clear? (ynq)n
pass4 - checking resource maps
au 123 emap incorrect - fix? (ynq)n
au 123 summary incorrect - fix? (ynq)n
au 456 emap incorrect - fix? (ynq)n
au 456 summary incorrect - fix? (ynq)n
au 890 emap incorrect - fix? (ynq)n
au 890 summary incorrect - fix? (ynq)n
free block count incorrect 123451 expected 123452 fix? (ynq)n
free extent vector incorrect fix? (ynq)n
OK to clear log? (ynq)n
sanity checks/updates have not been completed - restart? (ynq)n

===================================================

 

实际上从fullfsck  flag 被标记的时候,该文件系统元数据已经发现有损坏,但为了保证可用性,这个时候文件系统还是可以访问的。只有当文件系统被umount(或者机器重启),需要重新挂载时候,才会在命令行提示需要做fullfsck。 "fsck -o full -y" 是目前可得的最好的修复文件系统,尽快恢复文件系统可用的方法。修复完成后,它会把一些可以挽留的孤儿数据放到 lost+found 目录里面。

 

为了保留一个恢复的机会,可以在 “fsck -o full -y” 真正实施前,给所有需要的数据卷做一个space-optimized snapshot.

 

具体步骤如下:

1. 首先创建10T  chache object(这个cache空间大小根据客户数据变化量和实际可用存储空间决定,可以设置autogrow=yes):

#vxassist -g XXdg make vcachevol 10t

#vxmake -g XXdg cache vcacheobj cachevolname=vcachevol   autogrow=yes

#vxcache -g XXdg start vcacheobj

 

2. 每个卷已经做prepare:

# vxsnap -g XXdg prepare XXvol01

# vxsnap -g XXdg prepare XXvol02

# vxsnap -g XXdg prepare XXvol03

# vxsnap -g XXdg prepare XXvol04

 

3. 一条命令完成做space-optimzed snapshot:

# vxsnap -g XXdg make source=XXvol01/newvol=s1_XXvol01/cache=vcacheobj  source=XXvol02/newvol=s1_XXvol02/cache=vcacheobj  source=XXvol03/newvol=s1_XXvol03/cache=vcacheobj source=XXvol04/newvol=s1_XXvol04/cache=vcacheobj          

 

4. 查看当前snapshot :

# vxsnap -g XXdg -v list

# vxsnap -g XXdg -v print

 

5. 如果需要可以用原来数据卷刷新snapshot,命令如下:                  

 # vxsnap -g XXdg refresh s1_XXvol01   source=XXvol01  s1_XXvol02 source=XXvol02 s1_XXvol03 source=XXvol03     s1_XXvol04 source=XXvol04

 

6. 如果认为 “fsck -o full -y” 做的不好,可以用snapshot 恢复数据卷 ,命令格式如下:

 # vxsnap -g XXdg restore XXvol01  source=s1_XXvol01 XXvol02 source=s1_XXvol02 XXvol03 source=s1_XXvol03 XXvol04 source=s1_XXvol04                                           

                                                      

如果不需要保留snapshot, 要尽快解除关联,删除snapshot object,否则会随用户数据变化,占用越来越多的cache space。

1. 解除snapshot 关联命令格式如下:

# vxsnap [-f] -g XXdg dis s1_XXvol01

# vxsnap [-f] -g XXdg dis s1_XXvol02

# vxsnap [-f] -g XXdg dis s1_XXvol03

# vxsnap [-f] -g XXdg dis s1_XXvol04

 

2. 删除snapshot volume 命令格式如下:        

 # vxedit -g XXdg -rf rm s1_XXvol01 

 # vxedit -g XXdg -rf rm s1_XXvol02 

 # vxedit -g XXdg -rf rm s1_XXvol03

 # vxedit -g XXdg -rf rm s1_XXvol04

 

更详细操作命令可以查看对应产品手册。如果只有一个卷需要做fullfsck,可以只建立一个snapshot volume。 

 

此内容是否有用?