Skip to content

Commit db43866

Browse files
clementnusssmira
authored andcommitted
feat: add nfs-utils extension
contains rpc.statd, needed to support locking with NFSv3 shares Signed-off-by: Andrey Smirnov <[email protected]> Signed-off-by: Clément Nussbaumer <[email protected]>
1 parent 31bc8c8 commit db43866

25 files changed

+955
-1
lines changed

.kres.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ spec:
3636
- nebula
3737
- netbird
3838
- newt
39+
- nfs-utils
3940
- nfsd
4041
- nfsrahead
4142
- nut-client

MAINTAINERS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ If the field is marked as `Needs Maintainer`, it means that the package is curre
4040
| metal-agent | Sidero Labs | NA |
4141
| nebula | s e | [iamwacko](https://github.com/iamwacko) |
4242
| netbird | Łukasz Szczepański | [l-szczepanski-speednet](https://github.com/l-szczepanski-speednet) |
43+
| nfs-utils | Clément Nussbaumer | [clementnuss](https://github.com/clementnuss) |
4344
| nut-client | Sidero Labs | NA |
4445
| nvidia-container-toolkit-lts | Sidero Labs | NA |
4546
| nivida-container-toolkit-production | Sidero Labs | NA |

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT.
22
#
3-
# Generated on 2025-10-30T03:39:23Z by kres cd5a938.
3+
# Generated on 2025-11-04T11:21:40Z by kres cd5a938.
44

55
# common variables
66

@@ -93,6 +93,7 @@ TARGETS += metal-agent
9393
TARGETS += nebula
9494
TARGETS += netbird
9595
TARGETS += newt
96+
TARGETS += nfs-utils
9697
TARGETS += nfsd
9798
TARGETS += nfsrahead
9899
TARGETS += nut-client

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ tiers based on support level:
145145
| [fuse3](storage/fuse3) | :green_square: core | [ghcr.io/siderolabs/fuse3](https://github.com/siderolabs/extensions/pkgs/container/fuse3) | `3.17.4` | This system extension provides fuse3 functionality. |
146146
| [iscsi-tools](storage/iscsi-tools) | :green_square: core | [ghcr.io/siderolabs/iscsi-tools](https://github.com/siderolabs/extensions/pkgs/container/iscsi-tools) | `v0.2.0` | This system extension provides iscsi-tools. |
147147
| [mdadm](storage/mdadm) | :white_large_square: contrib | [ghcr.io/siderolabs/mdadm](https://github.com/siderolabs/extensions/pkgs/container/mdadm) | `v4.4` | This system extension provides mdadm binary. |
148+
| [nfs-utils](storage/nfs-utils) | :white_large_square: contrib | [ghcr.io/siderolabs/nfs-utils](https://github.com/siderolabs/extensions/pkgs/container/nfs-utils) | `v0.1.1` | This system extension provides rpcbind and rpc.statd for NFSv3 file locking support. rpcbind is a server that converts RPC program numbers into universal addresses. rpc.statd is the NSM (Network Status Monitor) service daemon that notifies NFS peers of restarts. These services are required for NFSv3 mounts with file locking support. |
148149
| [nfsd](storage/nfsd) | :yellow_square: extra | [ghcr.io/siderolabs/nfsd](https://github.com/siderolabs/extensions/pkgs/container/nfsd) | `VERSION` | This system extension provides kernel module driver for NFSD built against a specific Talos version. |
149150
| [nfsrahead](storage/nfsrahead) | :white_large_square: contrib | [ghcr.io/siderolabs/nfsrahead](https://github.com/siderolabs/extensions/pkgs/container/nfsrahead) | `2.8.3` | This system extension provides nfsrahead, a tool to configure the readahead for NFS mounts. |
150151
| [zfs](storage/zfs) | :yellow_square: extra | [ghcr.io/siderolabs/zfs](https://github.com/siderolabs/extensions/pkgs/container/zfs) | `2.4.0-rc2-VERSION` | This system extension provides the ZFS kernel module, the ZFS utilities, and a service to import all ZFS pools on start and unmount all pools on stop. |

storage/nfs-utils/README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# nfs-utils
2+
3+
This extension provides `rpcbind` and `rpc.statd` daemons for NFSv3 file locking support.
4+
5+
## What's Included
6+
7+
- **rpcbind**: Converts RPC program numbers into universal addresses, required for RPC-based services
8+
- **rpc.statd**: NSM (Network Status Monitor) service daemon that notifies NFS peers of host restarts
9+
- **sm-notify**: Companion utility for rpc.statd
10+
11+
## Use Case
12+
13+
These services are essential for:
14+
- NFSv3 mounts with file locking support
15+
- Kubernetes environments using Trident or other NFS-based storage provisioners
16+
- Any scenario requiring POSIX file locking on NFSv3 shares
17+
18+
## How It Works
19+
20+
The extension runs two containerized services:
21+
22+
1. **rpcbind**: Starts first and provides the RPC portmapper service
23+
2. **rpc.statd**: Depends on rpcbind and provides NFS lock state monitoring
24+
25+
Both services start automatically and persist state across reboots in `/var/lib/nfs/statd` and `/var/lib/rpcbind`.
26+
27+
## References
28+
29+
- [rpcbind man page](https://linux.die.net/man/8/rpcbind)
30+
- [rpc.statd man page](https://linux.die.net/man/8/rpc.statd)
31+
- [Related Trident issue](https://github.com/NetApp/trident/issues/806#issuecomment-2399332314)

storage/nfs-utils/files/netconfig

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
udp tpi_clts v inet udp - -
2+
tcp tpi_cots_ord v inet tcp - -
3+
udp6 tpi_clts v inet6 udp - -
4+
tcp6 tpi_cots_ord v inet6 tcp - -
5+
rawip tpi_raw - inet - - -
6+
local tpi_cots_ord - loopback - - -
7+
unix tpi_cots_ord - loopback - - -

storage/nfs-utils/files/passwd

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
root:x:0:0:root:/root:/bin/sh
2+
nobody:x:65534:65534:nobody:/:/bin/false

0 commit comments

Comments
 (0)