rustfs 集成zerofs 测试

在以前版本对于zerofs 集成进行测试发现是有问题的,在新版本中发现rustfs 可以直接作为zerofs 的存储了,以下是一个简单的测试

rustfs 启动

我使用了rustfs 1.0.0-alpha.73,直接本地运行, 之后需要创建zerofs 桶,注意账户是rustfsadmin

./rustfs   ./data/

zerofs 启动

  • 配置
[cache]
dir = "${HOME}/.cache/zerofs"
disk_size_gb = 10.0
memory_size_gb = 1.0

[storage]
url = "s3://zerofs/zerofs-data"
encryption_password = "dalongdemo"

[servers.nfs]
addresses = ["127.0.0.1:2049"]

[servers.ninep]
addresses = ["127.0.0.1:5564"]
unix_socket = "/tmp/zerofs.9p.sock"

[servers.nbd]
addresses = ["127.0.0.1:10809"]
unix_socket = "/tmp/zerofs.nbd.sock"

[servers.rpc]
addresses = ["127.0.0.1:7000"]
unix_socket = "/tmp/zerofs.rpc.sock"

[aws]
access_key_id = "rustfsadmin"
secret_access_key = "rustfsadmin"
endpoint = "http://localhost:9000" 
default_region = "us-east-1"
allow_http = "true"

[filesystem]
max_size_gb = 100.0  # Limit filesystem to 100 GB


# [lsm]
# l0_max_ssts = 16                 # Max SST files in L0 before compaction (default: 16, min: 4)
# max_unflushed_gb = 1.0           # Max unflushed data before forcing flush in GB (default: 1.0, min: 0.1)
# max_concurrent_compactions = 8   # Max concurrent compaction operations (default: 8, min: 1)
# flush_interval_secs = 30         # Interval between periodic flushes in seconds (default: 30, min: 5)
  • 启动
./zerofs run -c ./zerofs.toml

信息, 可以看到启动正常

2025-12-14T04:17:41.098720Z  INFO zerofs::cli::server: Starting ZeroFS server with AmazonS3(zerofs) backend
2025-12-14T04:17:41.099919Z  INFO zerofs::cli::server: DB Path: zerofs-data
2025-12-14T04:17:41.099923Z  INFO zerofs::cli::server: Base Cache Directory: /Users/dalong/.cache/zerofs
2025-12-14T04:17:41.099928Z  INFO zerofs::cli::server: Cache Size: 10 GB
2025-12-14T04:17:41.099939Z  INFO zerofs::cli::server: Checking bucket identity...
2025-12-14T04:17:41.118507Z  INFO zerofs::bucket_identity: Creating new bucket ID: e819cb1c-4046-4117-89cf-9d11cc447a72
2025-12-14T04:17:41.125420Z  INFO zerofs::cli::server: Bucket ID: e819cb1c-4046-4117-89cf-9d11cc447a72, Cache directory: /Users/dalong/.cache/zerofs/bucket_e819cb1c
2025-12-14T04:17:41.129509Z  INFO zerofs::storage_compatibility: Checking storage provider compatibility (conditional writes for fencing)...
2025-12-14T04:17:41.138572Z  INFO zerofs::storage_compatibility: Storage provider compatibility check passed
2025-12-14T04:17:41.138593Z  INFO zerofs::cli::server: Loading or initializing encryption key
2025-12-14T04:17:41.138599Z  INFO zerofs::cli::server: Cache allocation - Disk: 10.00GB, Memory: 1.00GB
2025-12-14T04:17:41.138607Z  INFO zerofs::cli::server: SlateDB in-memory block cache: 1000 MB
2025-12-14T04:17:41.141165Z  INFO zerofs::cli::server: Opening database in read-write mode
2025-12-14T04:17:41.142504Z  INFO slatedb::db::builder: opening SlateDB database [path=zerofs-data, settings={"flush_interval":"30s","wal_enabled":false,"manifest_poll_interval":"1s","manifest_update_timeout":"300s","min_filter_keys":1000,"filter_bits_per_key":10,"l0_sst_size_bytes":134217728,"l0_max_ssts":16,"max_unflushed_bytes":1000000000,"compactor_options":{"poll_interval":"5s","manifest_update_timeout":"300s","max_sst_size":1073741824,"max_concurrent_compactions":8},"compression_codec":null,"object_store_cache_options":{"root_folder":"/Users/dalong/.cache/zerofs/bucket_e819cb1c","max_cache_size_bytes":10000000000,"part_size_bytes":4194304,"cache_puts":false,"preload_disk_cache_on_startup":null,"scan_interval":"3600s"},"garbage_collector_options":{"manifest_options":{"interval":"60s","min_age":"60s"},"wal_options":{"interval":"60s","min_age":"60s"},"compacted_options":{"interval":"60s","min_age":"60s"}},"default_ttl":null}]
2025-12-14T04:17:41.368778Z  INFO zerofs::cli::server: Created .nbd directory for NBD device management
2025-12-14T04:17:41.368799Z  INFO zerofs::cli::server: Starting NFS server on 127.0.0.1:2049
2025-12-14T04:17:41.368819Z  INFO zerofs::cli::server: Starting 9P server on 127.0.0.1:5564
2025-12-14T04:17:41.368841Z  INFO zerofs::cli::server: Starting 9P server on Unix socket: /tmp/zerofs.9p.sock
2025-12-14T04:17:41.368856Z  INFO zerofs::cli::server: Starting NBD server on 127.0.0.1:10809 (devices dynamically discovered from .nbd/)
2025-12-14T04:17:41.368865Z  INFO zerofs::cli::server: Starting NBD server on Unix socket /tmp/zerofs.nbd.sock (devices dynamically discovered from .nbd/)
2025-12-14T04:17:41.368876Z  INFO zerofs::cli::server: Starting RPC server on 127.0.0.1:7000
2025-12-14T04:17:41.368882Z  INFO zerofs::cli::server: Starting RPC server on Unix socket: /tmp/zerofs.rpc.sock
2025-12-14T04:17:41.368899Z  INFO zerofs::ninep::server: 9P server listening on TCP 127.0.0.1:5564
2025-12-14T04:17:41.368950Z  INFO zerofs::fs::gc: Starting garbage collection task (runs continuously)
2025-12-14T04:17:41.369007Z  INFO zerofs::cli::server: Starting stats reporting task (reports to debug every 5 seconds)
2025-12-14T04:17:41.369022Z  INFO zerofs::cli::server: Starting periodic flush task (flushes every 30 seconds)
2025-12-14T04:17:41.369152Z  INFO zerofs::rpc::server: RPC server listening on Unix socket: "/tmp/zerofs.rpc.sock"
2025-12-14T04:17:41.369284Z  INFO zerofs::rpc::server: RPC server listening on 127.0.0.1:7000
2025-12-14T04:17:41.369064Z  INFO zerofs::ninep::server: 9P server listening on Unix socket "/tmp/zerofs.9p.sock"
2025-12-14T04:17:41.368890Z  INFO zerofs_nfsserve::tcp: Listening on 127.0.0.1:2049
2025-12-14T04:17:41.369322Z  INFO zerofs::nfs: NFS server listening on 127.0.0.1:2049
2025-12-14T04:17:41.369388Z  INFO zerofs::nbd::server: NBD server listening on 127.0.0.1:10809
2025-12-14T04:17:41.369505Z  INFO zerofs::nbd::server: NBD server listening on Unix socket "/tmp/zerofs.nbd.sock"

挂载使用

* nfs 挂载

sudo mount -t nfs -o nolocks,vers=3,tcp,port=2049,mountport=2049 127.0.0.1:/ ./nfs

说明

zerofs 对于文件系统的写入是有一些要求的,当前minio 兼容是很不错的,但是因为众所周知的原因,需要选择新的替代,当前rustfs 是一个不错的选择,很值得尝试下

参考资料

https://www.zerofs.net/quickstart

https://github.com/Barre/ZeroFS

https://rustfs.com/

https://github.com/rustfs/rustfs

posted on 2025-12-22 08:00  荣锋亮  阅读(0)  评论(0)    收藏  举报

导航