mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-11-15 00:09:00 +01:00
Update NFS-Server.md
1 parent
4aa1a38c9d
commit
a2751a1517
1 file changed
+9
-36
+9
-36
@@ -152,45 +152,18 @@ servers are not reachable from the NFS host.
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
subgraph Clients["NFS clients"]
|
||||
LinuxClient["Linux kernel<br/>nfs.ko (v3)"]
|
||||
MacClient["macOS kernel<br/>nfsv3"]
|
||||
end
|
||||
Client["NFS client<br/>(Linux / macOS)"]
|
||||
NFS["weed nfs"]
|
||||
Filer["Filer"]
|
||||
Volumes["Volume servers"]
|
||||
|
||||
subgraph NFSHead["weed nfs (NFSv3 head)"]
|
||||
direction TB
|
||||
RPC["NFSv3 / MOUNT RPC<br/>go-nfs backend"]
|
||||
Handles["Deterministic filehandles<br/>exportID | kind | inode | gen"]
|
||||
MetaSub["Metadata subscription<br/>(SubscribeMetadata)"]
|
||||
Cache["Shared chunk reader cache"]
|
||||
ACL["Client allowlist<br/>(CIDR / host)"]
|
||||
RPC --> Handles
|
||||
RPC --> Cache
|
||||
MetaSub -. invalidate .-> Cache
|
||||
end
|
||||
|
||||
subgraph Cluster["SeaweedFS cluster"]
|
||||
direction TB
|
||||
Filer["Filer<br/>metadata + AssignVolume"]
|
||||
InodeIdx[("Inode secondary index<br/>inode -> paths, generation")]
|
||||
Volumes["Volume servers<br/>chunk read / write"]
|
||||
Filer --- InodeIdx
|
||||
Filer -. AssignVolume .-> Volumes
|
||||
end
|
||||
|
||||
LinuxClient -- "port=2049<br/>mountport=2049" --> RPC
|
||||
MacClient -- "port=2049<br/>mountport=2049" --> RPC
|
||||
ACL -. gate .-> RPC
|
||||
|
||||
Handles -- "lookup / readdir / create<br/>rename / remove / link" --> Filer
|
||||
Handles -- "resolve inode -> path" --> InodeIdx
|
||||
Filer -- "change events" --> MetaSub
|
||||
|
||||
RPC -- "chunk read / write<br/>(direct | publicUrl | filerProxy)" --> Volumes
|
||||
RPC -. "inline <= 4 MiB fast path<br/>UpdateEntry only" .-> Filer
|
||||
Client -- "NFSv3 RPC" --> NFS
|
||||
NFS -- "metadata" --> Filer
|
||||
NFS -- "chunk read / write" --> Volumes
|
||||
Filer -. "AssignVolume" .-> Volumes
|
||||
```
|
||||
|
||||
Request flow in one line: NFS RPC arrives at the head, the filehandle decodes into an inode, the filer resolves the inode through its secondary index for metadata work, and chunk bytes flow straight between the NFS head and the volume servers. The filer's `SubscribeMetadata` stream keeps the head's chunk cache coherent with other writers.
|
||||
Metadata RPCs go to the filer; chunk bytes flow directly between the NFS head and volume servers.
|
||||
|
||||
### Deterministic Filehandles
|
||||
|
||||
|
||||
Reference in new issue
Block a user