diff --git a/hosts/skydick/DATAPOOL.md b/hosts/skydick/DATAPOOL.md index 530e6bb..f9eb054 100644 --- a/hosts/skydick/DATAPOOL.md +++ b/hosts/skydick/DATAPOOL.md @@ -12,7 +12,18 @@ | Media library | `/srv/media/library` | `\\SKYDICK\media` | `/media/library` | ro, all @storage users | | Personal files | `/srv/users//files` | `\\SKYDICK\` | `/users/` | rw, SMB owner-authenticated; NFS network-trusted all_squash to owner | -NFS paths are relative to the NFSv4 pseudo-root (`/srv` on the server, exported with `fsid=0`). +The NFS mount paths in the table above are for Linux/Unix NFSv4 clients using the pseudo-root +(`/srv` on the server, exported with `fsid=0`). + +Windows `Client for NFS` is different: Microsoft documents it as supporting only NFSv2/v3, not +NFSv4.1, so it does not use the pseudo-root form above. Windows clients must mount the strict +exported server path instead, for example: + +- `10.0.1.1:/srv/public` +- `10.0.1.1:/srv/media/library` +- `10.0.1.1:/srv/users/` + +For Windows clients, SMB is the preferred protocol unless a workflow specifically requires NFS. The final storage layout is live on `skydick`: @@ -184,6 +195,31 @@ 10.0.1.1:/users/ldx /mnt/skydick nfs4 rw,hard,rsize=1048576,wsize=1048576,nconnect=16,_netdev 0 0 ``` +## Connecting via NFS (Windows) + +Windows `Client for NFS` does not use the NFSv4 pseudo-root paths above. Use the full exported +server path instead. + +First check what the server exports: + +```powershell +showmount -e 10.0.1.1 +``` + +Then mount using the strict exported path: + +```powershell +mount 10.0.1.1:/srv/public Z: +mount 10.0.1.1:/srv/media/library Y: +mount 10.0.1.1:/srv/users/ X: +``` + +Notes: + +- Windows NFS access is network-trusted, not user-authenticated +- The per-user export still maps all writes to the server-side owner via `all_squash` +- If the client is Windows, prefer SMB unless you specifically need NFS + For SMB on `skydick`, keep Samba on its Linux defaults for socket buffers and SMB multichannel unless a benchmark proves a specific override helps. The host-side low-risk storage tuning is `atime=off` on the `dick` pool root so reads do not create extra metadata writes across child