HNHacker News
TopNewBestAskShowJobs

sdadams

26 karma · joined August 14, 2022

submissionscomments
sdadams··on Muxfs – a mirroring, checksumming, and self-healing filesystem layer for OpenBSD
No error correcting codes currently. Just checksums and redundant copies. Currently the supported checksum algorithms are crc32, md5, and sha1.
sdadams··on Muxfs – a mirroring, checksumming, and self-healing filesystem layer for OpenBSD
There is a FUSE implementation of ZFS for Linux but it is still in development. Porting it at this stage could be tricky.
sdadams··on Muxfs – a mirroring, checksumming, and self-healing filesystem layer for OpenBSD
Thanks! I'll try to remember this for any future blog entries.
sdadams··on Muxfs – a mirroring, checksumming, and self-healing filesystem layer for OpenBSD
The OpenBSD FUSE implementation is in base so it should already be well audited.

I don't plan to add "concatenation" as you have described, however this can, in theory, be approximated by layering muxfs on top of multiple RAID0s.

sdadams··on Muxfs – a mirroring, checksumming, and self-healing filesystem layer for OpenBSD
Porting ZFS to OpenBSD has been attempted before. See this blog post from 2013: https://flak.tedunangst.com/post/ZFS-on-OpenBSD
sdadams··on Muxfs – a mirroring, checksumming, and self-healing filesystem layer for OpenBSD
The muxfs source code is a lot smaller than that of ZFS so if security is a concern to you then you might find muxfs easier to audit than ZFS. It also compiles quickly so could be a good match for a source-based system. This said I never aimed to "beat" ZFS.
sdadams··on Muxfs – a mirroring, checksumming, and self-healing filesystem layer for OpenBSD
In another project of mine I considered using extended attributes to tag files into categories. With extended attributes not being universally supported and easily overlooked the conclusion I came to was that I should store that information in a database file. I didn't want to one day lose my (manually assigned) tags to an erroneous move command.

Anything non-native to OpenBSD can still be stored in muxfs as an archive file. You would need to ensure to pass the right arguments to the archiver to preserve the attributes in this case.

sdadams··on Muxfs – a mirroring, checksumming, and self-healing filesystem layer for OpenBSD
OpenBSD removed support for extended attributes.
sdadams··on Muxfs – a mirroring, checksumming, and self-healing filesystem layer for OpenBSD
OpenBSD's FUSE does not implement multithreading.
sdadams··on Muxfs – a mirroring, checksumming, and self-healing filesystem layer for OpenBSD
(1) I believe that stable inode numbers are possible with FUSE but they must be implemented by the FUSE driver. Mirroring over a network is not the intended use case. The mirrors exist to provide data redundancy for use by the muxfs driver. If you need to copy the data to a new location there is the muxfs sync command.

(2) muxfs uses sequence numbers to count the write operations performed on each mirror. Upon failure to mount due to the mirrors being out of sync a report is printed comparing the first mirror with the first non-matching mirror, and this includes their sequence numbers.

sdadams··on Muxfs – a mirroring, checksumming, and self-healing filesystem layer for OpenBSD
Author here. A big thank you to you all for your interest in muxfs! I will try to answer all of your questions as best I can.