OCF_HEARTBEAT_NFSSER(7)

πŸ’… ocf_heartbeat_nfsserver β€” the manual page bestie (like, it's ocf_heartbeat_nfsserver(7) if you're being formal ✨)

okay so picture this: you've got an NFS server, you want it to fail over like a boss, and you want somebody else to handle the messy bits. That's this resource agent. Welcome to the group chat 🫢


🌸 NAME 🌸

ocf_heartbeat_nfsserver β€” manages an NFS server. That's it, that's the whole vibe. A whole resource agent whose entire job is "keep the NFS server alive and looking cute."


✨ SYNOPSIS ✨

nfsserver [start | stop | monitor | meta-data | validate-all]

Five actions, pick your fighter. πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

So nfsserver helps you manage the Linux nfs server as a failover-able resource in Linux-HA. Iconic behavior, truly. πŸ‘‘

But here's the tea: it depends on Linux-specific NFS implementation details, so it's considered not portable to other platforms yet. Like, it's a Linux girlie through and through. No cap. 🌈


πŸŽ€ SUPPORTED PARAMETERS πŸŽ€

okay bestie, here's where you actually have to make some choices. Buckle up. πŸ“

  • nfs_init_script β€” this is the default init script shipped with your Linux distro. The nfsserver resource agent straight-up offloads the start/stop/monitor work to the init script, because the procedure to start/stop/monitor nfsserver varies on different Linux distros (chaotic, honestly). In the event that this option is not set, this agent will attempt to use an init script at this location, /etc/init.d/nfsserver, or detect a systemd unit-file to use in the event that no init script is detected. Smart little detective, we love her πŸ” (optional, string, default "auto detected")
  • nfsv4_only β€” run in NFSv4 only mode, with rpc-statd and rpcbind services masked. Minimalist queen 🧚 (optional, boolean, default false)
  • nfs_no_notify β€” do not send reboot notifications to NFSv3 clients during server startup. Like leaving them on read, but for servers πŸ™ˆ (optional, boolean, default false)
  • nfs_notify_foreground β€” keeps the sm-notify attached to its controlling terminal and running in the foreground. Main character energy, refuses to background herself πŸ’… (optional, boolean, default false)
  • nfs_smnotify_retry_time β€” specifies the length of sm-notify retry time, in minutes, to continue retrying notifications to unresponsive hosts. If this option is not specified, sm-notify attempts to send notifications for 15 minutes. Specifying a value of 0 causes sm-notify to continue sending notifications to unresponsive peers until it is manually killed. Ma'am, that's commitment 😭 (optional, integer, no default)
  • nfs_server_scope β€” okay this one comes with a whole essay, so here's RFC8881, 8.4.2.1 State Reclaim, quoted straight up:
If the server scope is different, the client should not attempt to reclaim locks. In this situation, no lock reclaim is possible. Any attempt to re-obtain the locks with non-reclaim operations is problematic since there is no guarantee that the existing filehandles will be recognized by the new server, or that if recognized, they denote the same objects. It is best to treat the locks as having been revoked by the reconfiguration event.

For lock reclaim to even be attempted, we have to define and set the same server scope for NFSD on all cluster nodes in the NFS failover cluster. fr fr, all of them.

And heads up: this agent won't "guess" a suitable server scope name for you β€” you need to explicitly specify this. But without it, NFSv4 lock reclaim after failover won't work properly. Suggested value: the failover "service IP". 🫢 (optional, string, no default)

  • nfs_ip β€” comma separated list of floating IP addresses used to access the nfs service. Keep the commas, bestie, they matter ✨ (optional, string, no default)
  • nfs_shared_infodir β€” the nfsserver resource agent will save nfs related information in this specific directory. And this directory must be able to fail-over before nfsserver itself. Order of operations, queen πŸ‘‘ (optional, string, no default)
  • rpcpipefs_dir β€” the mount point for the sunrpc file system. Default is /var/lib/nfs/rpc_pipefs. This script will mount (bind) nfs_shared_infodir on /var/lib/nfs/ (cannot be changed), and this script will mount the sunrpc file system on /var/lib/nfs/rpc_pipefs (default, can be changed by this parameter). If you want to move only rpc_pipefs/ (e.g. to keep rpc_pipefs/ local) from default, please set this value. iykyk πŸ’œ (optional, string, default "/var/lib/nfs/rpc_pipefs")

πŸ”₯ SUPPORTED ACTIONS πŸ”₯

This resource agent supports the following actions (operations). Timeouts included because punctuality is a vibe ⏰

  • start β€” starts the resource. Suggested minimum timeout: 40s.
  • stop β€” stops the resource. Suggested minimum timeout: 20s.
  • monitor β€” performs a detailed status check. Suggested minimum timeout: 20s. Suggested interval: 10s.
  • meta-data β€” retrieves resource agent metadata (internal use only). Suggested minimum timeout: 5s.
  • validate-all β€” performs a validation of the resource configuration. Suggested minimum timeout: 30s.

🌈 EXAMPLE CRM SHELL 🌈

The following is an example configuration for a nfsserver resource using crm(8) shell:

primitive p_nfsserver ocf:heartbeat:nfsserver \
  op monitor depth="0" timeout="20s" interval="10s"

copy it, paste it, slay it πŸ’… (and yeah, it's depth="0" here β€” don't come for me, that's literally what it says)


⭐ EXAMPLE PCS ⭐

The following is an example configuration for a nfsserver resource using pcs(8):

pcs resource create p_nfsserver ocf:heartbeat:nfsserver \
  op monitor OCF_CHECK_LEVEL="0" timeout="20s" interval="10s"

and yes, in pcs land it's OCF_CHECK_LEVEL="0" β€” different syntax, same energy πŸ¦‹


πŸ’– SEE ALSO πŸ’–


πŸ‘‘ AUTHOR πŸ‘‘

ClusterLabs contributors (see the resource agent source for information about individual authors). We stan a collective ✨


okay that's the whole page!! go fail over something and think of me πŸ’œ

mwah πŸ’‹ this has been resource-agents UNKNOWN, dated 10/01/2026 β€” catch you on the next manpage, bestie πŸŽ€

πŸ“¦ where this page comes from