Warning: this page is outdated. Instead, please see Chapter 9 of Frequently Asked Questions for FreeBSD … and Chapter 20 of the FreeBSD Handbook.
General
SUN's ZFS file system became part of FreeBSD on 6th April 2007.
More about ZFS and OpenZFS:
More about the ZFS port to FreeBSD (the work was first presented on AsiaBSDCon2007):
Guide to creating Root on ZFS configuration for both MBR and GPT disks
Tuning Guide for ZFS (Work in Progress)
Live demos:
This page was mostly created to coordinate further work on ZFS, as there are some missing features, not everything works as well as it should, etc.
TODO
Task |
Status |
Responsible |
Description |
file(1) |
In progress |
Eygene Ryabinkin |
file(1) should be able to recognize dumps created by 'zfs send' command. You may find this commit useful. And here you can find output of 'zfs send' command from FreeBSD/i386, Solaris/i386 and Solaris/sparc. |
fstat(1) |
Done |
fstat(1) should be able to recognize ZFS file system objects. Equivalent of UFS inode in ZFS is znode. Structure znode_phys from this file describes on-disk format of the znode. |
|
slow mmap(2) |
Done |
During the porting work, the decision was made to bypass FreeBSD buffer cache entirely to avoid caching data twice, to simplify the code and to speed up common workloads. This may (but doesn't have to) be the reason that operating on mmaped files is slow. It is much slower than UFS. Another theory (actually more possible) is that ZFS destroys vmobject on vnode inactive, not on vnode reclaim as other file systems do. This problem has to be analysed and fixed. You may find this tool useful. |
|
FreeBSD namecache |
Done |
There were problems with using FreeBSD's namecache with ZFS, probably because of wrong usage of namecache KPI and OpenSolaris' namecache (DNLC) is used instead. It will be great to be able to teach ZFS about FreeBSD's namecache. You may find code under FREEBSD_NAMECACHE #define helpful to see what was done and didn't work. |
|
missing support for some architectures |
Done |
Currently ZFS on FreeBSD is only available for i386 and amd64 architectures. Mostly because of missing atomic operations that are implemented in assembler. It would be best to implement missing atomic operations in FreeBSD itself. Assembler implementation of those atomic operations for OpenSolaris (i386/amd64/sparc) you can find here. |
|
zfsboot |
Done |
|
|
ACL |
Done |
Currently ZFS on FreeBSD doesn't support ACLs. ZFS itself supports NFSv4-style ACLs, which is different than the existing POSIX.1e implementation in FreeBSD, which means that first thing to do is to add support for NFSv4-style ACLs to FreeBSD, which is being done as a GSoC project (NFSv4_ACLs). |
|
extattr |
Done |
ZFS supports extended attributes, but there are huge differences between OpenSolaris extended attributes and FreeBSD extended attributes. In FreeBSD an attribute is described by name space, name and value. In OpenSolaris an attribute is logically a file, which is available in attributes name space. One can also create directories hierarchies in attributes name space, etc. Read more here. Of course it would be nice to be able to access extended attributes created on OpenSolaris from FreeBSD and vice versa. My suggestion is to treat whole path to OpenSolaris' attribute as a attribute name in FreeBSD. We could also define that EXTATTR_NAMESPACE_USER is simply org.freebsd.user directory in OpenSolaris attributes name space (similar for EXTATTR_NAMESPACE_SYSTEM and POSIX1E_ACL_ACCESS_EXTATTR_NAMESPACE/POSIX1E_ACL_DEFAULT_EXTATTR_NAMESPACE if we want support for POSIX.1e ACLs in ZFS). |
|
iSCSI support |
Not done |
|
Similar to ZFS file system NFS-sharing, it is possible to share ZVOLs via iSCSI. There is no iSCSI target daemon in FreeBSD currently that's why 'zfs set shareiscsi' is not supported. Which means there are two things to do: import iSCSI target to FreeBSD base (there is one implementation from NetBSD in the ports collection) and work on shareiscsi property to produce syntax understandable by the iSCSI target daemon. |
documentation |
In progress |
To help users to get used to ZFS easily and be able to try all those nifty features we need decent documentation. It would be best to have a chapter about ZFS in FreeBSD's handbook. The entire ZFS functionality available in Solaris is described in ZFS Administration Guide, but there are differences between Solaris and FreeBSD version. There is some FreeBSD-specific functionality, some functionality is not supported and some bits around ZFS needs to be documented (like rc.d/zfs script, root on ZFS configuration, etc.). This is very important task and it has to be done before 7.0-RELEASE. |
|
Delegated Administration |
Done |
The Delegated Administration feature was added to ZFS after ZFS was ported to FreeBSD, but because we want to have all the cool features, it will be nice to port it. You can read more about Delegated Administration here. |
|
Support chflags(2) |
Done |
As the incoming ZFS import have support for extra attributes similar to those used by chflags(2), it would be nice to be able to use those flags on ZFS filesystems. |
TODO (v15)
Task |
Status |
Responsible |
Description |
Python interface |
done |
The new ZFS have implemented some functionality in Python. Currently we plan to implement a few very important ones in C and make the rest a port. |
|
ZFSv14 interface compatibility shims |
done |
In order to be MFC'able we need to teach the kernel to talk with older zfs(1M) binary, at least to import zpool and mount file system. |
|
zfsboot compatibility |
done |
Test if we can boot from zpool and fix it if necessary |
|
ZFSv15 import |
done |
Merge ZFS v15 code into -HEAD when all above is met |
TODO (v28)
Task |
Status |
Responsible |
Description |
ZFSv28 import |
done |
Merge ZFS v28 code into -HEAD and -STABLE |
Send me an e-mail (<pjd AT FreeBSD DOTorg> if you would like to work on any of those items or to propose more tasks.