如何配置 NFS (v3) lockd 以跨多个 IP 地址工作?

如何配置 NFS (v3) lockd 以跨多个 IP 地址工作?

考虑以下简短的程序,其中/nfsmount/merlin是一个 NFS 挂载目录。

import java.io.*; 
import java.nio.channels.*; 

public class Main{ 
    public static void main(String[] args) throws Exception { 
        String evilFile = "/nfsmount/merlin/foobar"; 
        RandomAccessFile raf = new RandomAccessFile(evilFile, "rw"); 
        FileChannel chan = raf.getChannel(); 
        FileLock lock = chan.tryLock(); 
    } 
} 

NFS 服务器有两个 IP 地址。当挂载到第一个 IP 时,上述程序运行正常。但是,当挂载到第二个 IP 时,程序会报错。

Exception in thread "main" java.io.IOException: No locks available
    at sun.nio.ch.FileDispatcherImpl.lock0(Native Method)
    at sun.nio.ch.FileDispatcherImpl.lock(FileDispatcherImpl.java:91)
    at sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1095)
    at java.nio.channels.FileChannel.tryLock(FileChannel.java:1154)
    at Main.main(Main.java:11)

快速搜索可找到这个问题,这似乎表明 有问题lockd。该程序在一个 IP 上运行的事实意味着lockd仅绑定到一个 IP。

我该如何配置它才能让它lockd在多个 IP 上正常工作?

相关内容