/etc/auto.netは正しいですか?誤字だと思います。

/etc/auto.netは正しいですか?誤字だと思います。

多くの人のように、私もNFSv3サーバーが利用できない(ダウンしたとき)システムがハングアップする現象を経験しました。ソフト/ハード、intr、bgなど様々な提案が設定されるのを見ましたが... あまり仕事ではないようで再び初めて戻りました。 /etc/auto.netは、自動的にインストールできる項目を決定するために実行されるスクリプトです。スクリプトを見ると実行するのは非常に安全に見え、文字列だけを出力します。 CNAMEが「nas」のNASがあります(元の名前を知っています)。

graeme@real:/etc$ MOUNT_NFS_DEFAULT_PROTOCOL=4 ./auto.net nas
-fstype=nfs4,hard,intr,nodev,nosuid,async nas:/
graeme@real:/etc$ MOUNT_NFS_DEFAULT_PROTOCOL=3 ./auto.net nas
 \
    /Download nas:/Download \
    /InternalAdmin nas:/InternalAdmin \
    /Multimedia nas:/Multimedia \
    /Public nas:/Public \
    /Recordings nas:/Recordings \
    /USBUploads nas:/USBUploads \
    /Web nas:/Web \
    /git nas:/git \
    /homes nas:/homes \
    /svn nas:/svn

ご覧のとおり、NFSv4の場合はマウントオプションを印刷してから、NFSv4エクスポートを印刷します。 NFSv3の場合、スクリプトを見るとエクスポートのみが一覧表示されます(オプションなし)。

SHOWMOUNT="$SMNT --no-headers -e $key"

    $SHOWMOUNT | LC_ALL=C cut -d' ' -f1 | LC_ALL=C sort -u | \
        awk -v key="$key" -v opts="$opts" -- '
        BEGIN   { ORS=""; first=1 }
            { if (first) { print opts; first=0 }; print " \\\n\t" $1, key ":" $1 }
        END { if (!first) print "\n"; else exit 1 }
        ' | sed 's/#/\\#/g'
    opts="-fstype=nfs,hard,intr,nodev,nosuid"
else
    # NFSv4
    opts="-fstype=nfs4,hard,intr,nodev,nosuid,async"

    echo "$opts $key:/"
fi

elseの前のビットはNFSv3、elseの前のビットはNFSv4です。ご覧のとおり、NFSv4はoptsを設定してから$optsと$keyをエコーし​​ますが、NFSv3はoptsを同じ方法で設定します。しかし、それでは使用しないでください。

今、optがより早く、好ましくは次の形式で割り当てられることを意図しているのだろうか。

: ${opts:="-fstype=nfs,hard,intr,nodev,nosuid"}

これにより、次のような結果が得られます。

graeme@real:/etc$ MOUNT_NFS_DEFAULT_PROTOCOL=3 /tmp/auto.net nas
-fstype=nfs,hard,intr,nodev,nosuid \
    /Download nas:/Download \
    /InternalAdmin nas:/InternalAdmin \
    /Multimedia nas:/Multimedia \
    /Public nas:/Public \
    /Recordings nas:/Recordings \
    /USBUploads nas:/USBUploads \
    /Web nas:/Web \
    /git nas:/git \
    /homes nas:/homes \
    /svn nas:/svn

関連情報