Skip to content

Failure creating btrfs filesystem on nbd device using Hetzner #98

Description

@tve

I created a bucket in Hetzner's object storage and started zerofs with:

export SLATEDB_CACHE_DIR='/var/cache/zerofs'
export SLATEDB_CACHE_SIZE_GB='10'
export ZEROFS_ENCRYPTION_PASSWORD='...'
export ZEROFS_MEMORY_CACHE_SIZE_GB='1'
export ZEROFS_NBD_PORTS='10809'
export ZEROFS_NBD_DEVICE_SIZES_GB='2000'
export RUST_LOG='zerofs=debug'

# Hetzner Nurenberg S3 API
export AWS_ENDPOINT='https://nbg1.your-objectstorage.com'
export AWS_ACCESS_KEY_ID='...'
export AWS_SECRET_ACCESS_KEY='...'

Launching zerofs went fine. I ran nbd-client and then mkfs.btrfs. It hung for ~4 minutes before spitting out an error:

> sudo mkfs.btrfs --checksum xxhash /dev/nbd0
btrfs-progs v6.15
See https://btrfs.readthedocs.io for more information.

Performing full device TRIM /dev/nbd0 (1.95TiB) ...
NOTE: several default settings have changed in version 5.15, please make sure
      this does not affect your deployments:
      - DUP for metadata (-m dup)
      - enabled no-holes (-O no-holes)
      - enabled free-space-tree (-R free-space-tree)

ERROR: error during mkfs: Operation not permitted
Took 4.2min

zerofs did spit out 4 errors around that time (this is from one of them):

2025-08-21T08:45:41.712640Z DEBUG zerofs::nbd::server: NBD command: Flush, offset=0, length=0
2025-08-21T08:46:51.364103Z ERROR zerofs::nbd::server: Error handling NBD client 127.0.0.1:43070: IO error: early eof

I unmounted the nbd device and restarted zerofs, this time it seems it has created the filesystem OK. I mounted the FS but at some point it failed:

2025-08-21T09:04:30.232714Z ERROR zerofs: Garbage collection failed: IoError

Maybe I need to try all this with AWS S3 first...

Update:

  • I restarted zerofs
  • I re-ran mkfs.btrfs
  • I re-mounted the filesystem
  • Now I can create a file...
  • But a bit later (sitting idle) I got:
2025-08-21T09:22:29.764160Z DEBUG zerofs::nbd::server: NBD command: Flush, offset=0, length
=0                                                                                         
                                                                                           
thread 'tokio-runtime-worker' panicked at /home/runner/.cargo/git/checkouts/slatedb-a6e7398
2df30678a/6e13868/slatedb/src/compactor.rs:297:18:                                         
fatal error loading manifest: ObjectStoreError(Generic { store: "S3", source: ListResponseB
ody { source: HttpError { kind: Interrupted, source: reqwest::Error { kind: Body, source: r
eqwest::Error { kind: Decode, source: reqwest::Error { kind: Body, source: hyper::Error(Bod
y, Os { code: 104, kind: ConnectionReset, message: "Connection reset by peer" }) } } } } } 
})                                                                                         
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace              
2025-08-21T09:22:34.248958Z ERROR zerofs::fs::flush_coordinator: Automatic flush failed: Er
r(IoError)                                                                                 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions