オンラインで見つけたNFSロックメカニズムについて学びたい。使用nfslockd
しないと、 rpc.lockd
私たちはできます。しかし、Debianにはパッケージはありません。 Debianでこれを行う必要がある場合は、誰でも私を助けてください。
答え1
以前のバージョンのNFS(v2 / v3)はロックなしで使用できます。ロックをサポートするために、nfsdを持つサーバーは別々のロックデーモンを使用します。
質問にタグ付けされたNFSv4の場合、ロックはプロトコルの不可欠な部分であり、v4サービスは別々のロックデーモンを使用しません。
nfsv4マウントがある場合は、ローカルファイルシステムと同様にファイルをロックできる必要があります。
ご意見ありがとうございます。あるクライアントがファイルを使用している場合は、最初のクライアントがそのファイルを解放するまで別のクライアントがそのファイルにアクセスできないように、サーバー自体からファイルをロックしたいと思います。このような競争状況を避けたい。
Unixは、ファイルシステムではなくクライアントに適用されるアドバイザリロックを使用します(Windowsではこれを好む)。これは、すべてのクライアントがロックに参加する必要があることを意味します。
クライアントがファイルにアクセスする前にロックを要求すると、すべてがうまくいくでしょう。他のクライアントがロックを解除し、他のクライアントがロックを獲得した後にのみ可能です。 fcntl
ローカルファイルと NFS ファイルシステムの両方が通常、呼び出しをサポートします。
見てUNIXのファイルロックウィキペディアの背景知識を得る。
答え2
NFS ロックは NFS プロセスの一部です。あなたはそれをインストールしません。また、これは思ったように動作しません。この機能を使用すると、MUTEX ロックはすべてのサーバーに転送されません。私が見た唯一のソフトウェアはVERITASです。
答え3
Debianについて具体的に言うことはできませんが、これは/etc/sysconfig/nfs
SLES 11.4の私のファイルです(私の考えにはNFS v3を使用しているようです)。
# # Path: Network/File systems/NFS server
# # Description: number of threads for kernel nfs server
# # Type: integer
# # Default: 4
# # ServiceRestart: nfsserver
#
# the kernel nfs-server supports multiple server threads
#
USE_KERNEL_NFSD_NUMBER="4"
# # Path: Network/File systems/NFS server
# # Description: use fixed port number for mountd
# # Type: integer
# # Default: ""
# # ServiceRestart: nfsserver
#
# Only set this if you want to start mountd on a fixed
# port instead of the port assigned by rpc. Only for use
# to export nfs-filesystems through firewalls.
#
MOUNTD_PORT=" xxx " set to port opened in firewall!
# # Path: Network/File systems/NFS server
# # Description: GSS security for NFS
# # Type: yesno
# # Default: yes
# # ServiceRestart: nfs nfsserver
#
# Enable RPCSEC_GSS security for NFS (yes/no)
#
NFS_SECURITY_GSS="no"
# # Path: Network/File systems/NFS server
# # Description: NFSv4 protocol support
# # Type: yesno
# # Default: yes
# # ServiceRestart: nfs nfsserver
#
# Enable NFSv4 support (yes/no)
#
NFS4_SUPPORT="no"
# # Path: Network/File systems/NFS server
# # Description: NFSv4 server minor version
# # Type: integer
# # Default: 0
# # ServiceRestart: nfsserver
#
# Select NFSv4 minor version for server to support (0, 1).
# If '1' is selected, both NFSv4.0 and NFSv4.1 will be supported.
NFS4_SERVER_MINOR_VERSION="0"
# # Path: Network/File systems/NFS server
# # Description: Network Status Monitor options
# # Type: string
# # Default: ""
#
# If a fixed port should be used to send reboot notification
# messages to other systems, that port should be given
# here as "-p portnumber".
#
SM_NOTIFY_OPTIONS="-p xxxxx" set to port opened in firewall
# # Path: Network/File systems/NFS server
# # Description: Always start NFS services
# # Type: yesno
# # Default: no
# # ServiceRestart nfs
#
# Always start NFS services (gssd, idmapd), not only if
# there are nfs mounts in /etc/fstab. This is likely to be
# needed if you use an automounter for NFS.
#
NFS_START_SERVICES=""
# # Path: Network/File systems/NFS server
# # Description: Port rpc.statd should listen on
# # Type: integer
# # Default: ""
# # ServiceRestart: nfsserver
#
# Statd will normally choose a random port to listen on and
# SuSE-Firewall is able to detect which port and allow for it.
# If you have another firewall, you may want to set a fixed
# port number which can then be opened in that firewall.
#
STATD_PORT="xxxxx" set to port opened in firewall
# # Path: Network/File systems/NFS server
# # Description: Hostname used by rpc.statd
# # Type: string
# # Default: ""
# # ServiceRestart: nfsserver
#
# statd will normally use the system hostname in status
# monitoring conversations with other hosts. If a different
# host name should be used, as can be useful with fail-over
# configurations, that name should be given here.
#
STATD_HOSTNAME=""
# # Path: Network/File systems/NFS server
# # Description: TCP Port that lockd should listen on
# # Type: integer
# # Default: ""
# # ServiceRestart: nfsserver
#
# Lockd will normally choose a random port to listen on and
# SuSE-Firewall is able to detect which port and allow for it.
# If you have another firewall, you may want to set a fixed
# port number which can then be opened in that firewall.
# lockd opens a UDP and a TCP port. This setting only affect
# the TCP port.
#
LOCKD_TCPPORT="xxxxx" set to port opened in firewall
# # Path: Network/File systems/NFS server
# # Description: UDP Port that lockd should listen on
# # Type: integer
# # Default: ""
# # ServiceRestart: nfsserver
#
# Lockd will normally choose a random port to listen on and
# SuSE-Firewall is able to detect which port and allow for it.
# If you have another firewall, you may want to set a fixed
# port number which can then be opened in that firewall.
# lockd opens a UDP and a TCP port. This setting only affect
# the UDP port.
#
LOCKD_UDPPORT="xxxxx" set to port opened in firewall
# # Path: Network/File systems/NFS server
# # Description: Lease time for NFSv4 leases
# # Type: integer
# # Default: ""
#
# Set the lease time for the NFSv4 server. This allows new locks
# to be taken sooner after a server restart, so it is useful for
# servers which need to recover quickly after a failure, particularly
# in fail-over configurations. Reducing the lease time can be a
# problem is some clients connect over high latency networks.
# The default is 90 seconds. A number like 15 might be appropriate
# in a fail-over configuration with all clients on well connected
# low latency links.
NFSV4LEASETIME=""
# # Path: Network/File systems/NFS server
# # Description: Alternate mount point for rpc_pipefs filesystem
# # Type: string
# # Default: ""
#
# In a high-availabilty configuration it is possible that /var/lib/nfs
# is redirected so some shared storage and so it is not convenient to
# mount the rpc_pipefs filesystem at /var/lib/nfs/rpc_pipefs. In that
# case an alternate mount point can be given here.
RPC_PIPEFS_DIR=""
# # Path: Network/File systems/NFS server
# # Description: Options for svcgssd
# # Type: string
# # Default: ""
#
# Normally svcgssd does not require any option. However in a
# high-availabilty configuration it can be useful to pass "-n"
# to guide the choice of default credential. To allow for that
# case or any other requiring options ot svcgssd, they can
# be specified here.
SVCGSSD_OPTIONS=""
# # Path: Network/File systems/NFS server
# # Description: Extra options for nfsd
# # Type: string
# # Default: ""
#
# This setting allows extra options to be specified for NFSD, such as
# -H <shared_hostname> in a high-availability configuration.
NFSD_OPTIONS=""
# # Path: Network/File systems/NFS server
# # Description: Extra options for gssd
# # Type: string
# # Default: ""
#
# Normally gssd does not require any options. In some circumstances,
# -n, -l or other options might be useful. See "man 8 rpc.gssd" for
# details. Those options can be set here.
GSSD_OPTIONS=""
# # Path: Network/File systems/NFS server
# # Description: Extra options for mountd
# # Type: string
# # Default: ""
#
# Normally mountd does not require any options. In some circumstances,
# -n, -t, -g or other options might be useful. See "man 8 rpc.mountd" for
# details. Those options can be set here.
# -p or -N should be set using MOUNTD_PORT or NFS4_SUPPORT rather than
# this option.
MOUNTD_OPTIONS=""
# # Path: Network/File systems/NFS server
# # Description: Avoid DNS lookups for kerberos principal
# # Type: yesno
# # Default: no
# # ServiceRestart: gssd
#
# Avoid DNS lookups when determining kerberos identity
# of NFS server (yes/no)
# "yes" is safest, but "no" might be needed to preserve
# correct behaviour at sites that don't use
# Fully Qualified Domain Names when mounting NFS Shares.
#
NFS_GSSD_AVOID_DNS="no"
「nfsロックデーモン」は、インストールされているnfsパッケージにデフォルトで存在し、正しく機能する必要があります。 NFSへの依存関係はおよびrpc.mountd
を持つrpc.statd
RPCですrpc.lockd
。したがって、NFSが正しくインストールされている場合(およびRPCやPortmapなどの必要な依存関係)、ファイアウォールの電源を切るかlockd
静的ポートを設定および指定する限り、機能する必要がありますmountd
。静的ポートを指定しない場合、NFS はこれらのポートを選択します。ランダムに【起動中】毎回。ファイアウォール(通常はデフォルトでオン)を使用すると、ランダムに選択されたポート番号を考慮することはできません。ロックメカニズムは毎回機能しません。
私の情報はNFSv4には適用されません。