AIX JFS2 Filesystem Concurrent Mount Protection 0506-365 Failure

朋友帮助客户通过复制来创建数据库副本来做测试,操作系统AIX,存储是V7000,使用了存储子系统的FlashCopy来进行复制,FlashCopy是IBM ESS存储服务器所支持的功能之一,主要用于本地的备份和恢复。FlashCopy在某一时间点t0建立源LUN和目标LUN之间的对应关系,随后源LUN数据块(512字节)的更新会将源LUN数据块更新前的原始数据拷贝到目标LUN中。FlashCopy可以保存系统在t-时间的数据映像,如果在T0时间系统中的数据是完整和一致的,那么在目标LUN中的数据就可以用于系统的备份和恢复。但在加载目标LUN对应文件系统时出现了故障,故障信息如下:

#mount /oracle/EP1/origlogB
mount: /dev/origlogBlv on /oracle/EP1/origlogB
0506-365 Cannot mount guarded filesystem.
The filesystem is potentially mounted on another node.

虽然AIX PowerHA可以并发访问多个系统中的卷组,但在多个节点同时mount JFS2文件系统将会造成文件系统损坏。当系统检测到文件系统中的数据或元数据与内存中的文件系统状态冲突时,这些同时mount事件也可能会造成系统崩溃。唯一的例外就是mount只读文件系统,文件或目录不会被改变。

在AIX 7100-01 and 6100-07引入了一个叫作”Mount Guard”的特性用来阻止同进或并发mount相同文件系统。如果一个文件系统已经被mount到另一个节点,那么这个功能就会被启用。AIX将会阻止这个文件系统被mount到其它节点。Mount Guard缺省情况下是没有启用的,但可以通过系统管理员进行配置。但不允许对基本操作系统的文件系统,比如/,/usr,/var等进行设置。

启用Mount Guard
为了对一个文件系统永久启用Mount Guard可以编辑/usr/sbin/chfs:

# chfs -a mountguard=yes /mountpoint

/mountpoint现在就处于保护状态并阻止并发mount。这个选项也可以在创建文件系统是给crfs使用。

# chfs -a mountguard=no /mountpoint

/mountpoint将不再受保护也不会阻止并发mount。

为了判断一个文件系统的mount guard状态,执行以下命令:

# lsfs -q /mountpoint
Name            Nodename   Mount Pt               VFS   Size    Options    Auto Accounting
/dev/fslv34     --         /mountpoint            jfs2  4194304 rw         no   no
  (lv size: 4194304, fs size: 4194304, block size: 4096, sparse files: yes, inline log: no, inline log size: 0, EAformat: v1, Quota: no, DMAPI: no, VIX: yes, EFS: no, ISNAPSHOT: no, MAXEXT: 0, MountGuard: yes)

执行/usr/sbin/mount命令将不会显示mount guard状态。

文件系统的mount与mount guard
当一个受保护的文件系统被并发mount时,第二个mount操作将会出现以下错误信息:

# mount /mountpoint
mount: /dev/fslv34 on /mountpoint:
Cannot mount guarded filesystem.
The filesystem is potentially mounted on another node

在系统崩溃后文件系统可能仍然保留了mount启用标识并且拒绝被mount。在这种情况下可以通过有
“noguard”选项的mount命令来临时覆盖文件系统的guard状态。

# mount -o noguard /mountpoint
mount: /dev/fslv34 on /mountpoint:
Mount guard override for filesystem.
The filesystem is potentially mounted on another node.

这里因为使用flashcopy技术来备份数据是通过复制LUN来完成的,也就复制了文件系统,而原来的文
件系统启用了mount guard,所以在mount目标文件系统现在有两种方法:
1.禁用目标文件系统的mount guard特性
2.使用mount -o noguard来临时覆盖mount guard特性