MPII/O(基于ROMIO)对NFS配置的要求

如果我们的并行程序使用了MPI定义的I/O函数的话(在MPICH中是ROMIO这个库),那么,我们在配置NFS的时候是有一些特殊的地方的:

1、要求NFS的版本至少是3

2、要求nfslock这个service一定要打开

3、要求从节点在/etc/fstab文件中定义mount主节点的NFS的目录的时候,option一栏不能填defaults,至少要将 noac(no attribute cache)这个option配上(该配置不允许NFS缓存文件的属性,虽然noac会降低一些性能,但是它能保证在有多个NFS client读写文件的时候,都能正确读写数据)。

长见识啊!这里还有篇参考文档,这个文档中作者还配置了bg和intr这两个option,其中bg很有用,这表示当NFS连不上的时候,第二次 重试连接开始,将在后台执行(默认配置进程都在前台执行,所以以前当NFS连不上的时候,登录都无法登录,很痛苦啊);intr这个option将允许 NFS中断一个文件读写操作(当NFS连接出现的问题的时候),NFS将返回一个EINTR的signal给调用程序处理,默认情况下这是不会的,换句话 说,文件操作错了还会继续往下操作。

这里是这篇文章,写的不错:


上述问题,出错的错误信息大致如下:


RESULTS FOR RESTART ARE WRITTEN ON FILE 11

File locking failed in ADIOI_Set_lock. If the file system is NFS, you need
to use NFS version 3, ensure that the lockd daemon is running on all the
machines, and mount the directory with the 'noac' option (no attribute
caching).

[0] MPI Abort by user Aborting program !

[0] Aborting program!

p0_6662: p4_error: : 1

forrtl: error (69): process interrupted (SIGINT)

rm_l_1_6702: (72.949219) net_send: could not write to fd=5, errno = 32

p1_6666: (72.949219) net_send: could not write to fd=5, errno = 32

"Napa6.500M.o7" 633L, 48056C

经过测试,发现,在不同速率的网络结构下,这种问题出现的比较普遍

比如,在一个cluster中,有些节点是百兆的速度,有些节点是千兆的速度,那么,他们混合计算的时候,NFS没有配置好,就会出现上述的错误,而且几率很高。如果都是百兆或是千兆的话,出现这种问题的概率还是比较低的。
 

原文地址:https://www.cnblogs.com/super119/p/2025529.html