Skip to content

Bold is a v4-series NFS server written in async Rust based on Tokio.

License

Notifications You must be signed in to change notification settings

Schille/bold-nfs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bold - a Network File System (NFS) server

This is Bold. A version 4-series compatible NFS server written in async Rust based on Tokio.

NFS is the most widely used network file system for production server workloads.

(This is a Bold claim)

Goals

Bold's design goals are:

  1. simplicity
  2. robustness
  3. portability
  4. extendability
  5. performance

Anti goals include complicated compile-time computations, such as macro or type trickery.

Demo and testing

There is a crate bold-mem (binary), which reads in a YAML file and serves this as in-memory file system.

On Linux:

# bold-mem/memoryfs.yaml
name: 
contents:
  - !Dir
    name: home
    contents:
      - !Dir
        name: user
        contents:
          - !File
            name: file1
            contents: |
              This is the content of file1
          - !File
            name: file2
            contents: |
              This is the content of file2

You can compile and run it from the repo:

  1. cargo build -p bold-mem

  2. ./target/debug/bold-mem bold-mem/memoryfs.yaml
    (optionally, you can enable the --debug flag)

  3. Open another terminal

  4. mkdir /tmp/demo

  5. sudo mount.nfs4 -n -v -o fg,soft,sec=none,vers=4.0,port=11112 127.0.0.1:/ /tmp/demo

  6. ls /tmp/demo/, cat /tmp/demo/home/user/file1
    (have a look around in your mounted file system)

  7. Don't forget to unmount sudo umount /tmp/demo, before stopping bold-mem

State of implementation

Version 4.0

  • WIP

Version 4.1

  • Not started

Version 4.2

  • Not started

Importand RFC for the implementation

License

Distributed under the MIT license. See LICENSE for more information.

About

Bold is a v4-series NFS server written in async Rust based on Tokio.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published