Difference between revisions of "Features"

From OpenZFS
Jump to navigation Jump to search
m (typos)
(Add ZFSOnLinux Commit Links and Dates)
Line 20: Line 20:
|-
|-
|'''ZFS on Linux'''
|'''ZFS on Linux'''
|??
|[https://github.com/zfsonlinux/zfs/commit/d96eb2b1538db13ee7a716ec0e1162f5735edc12 Aug 2012]
|-
|-
|'''Mac ZFS'''
|'''Mac ZFS'''
Line 39: Line 39:
|-
|-
|'''ZFS on Linux'''
|'''ZFS on Linux'''
|??
|[https://github.com/zfsonlinux/zfs/commit/330d06f90d143b41b276796526a66a1c1fff046d Jul 2012]
|-
|-
|'''Mac ZFS'''
|'''Mac ZFS'''
Line 86: Line 86:
|-
|-
|'''ZFS on Linux'''
|'''ZFS on Linux'''
|??
|[https://github.com/zfsonlinux/zfs/commit/1bd201e70d57464fd26bf9089ea4b44fd49e4f2d Sept 2012]
|-
|-
|'''Mac ZFS'''
|'''Mac ZFS'''
Line 105: Line 105:
|-
|-
|'''ZFS on Linux'''
|'''ZFS on Linux'''
|??
|[https://github.com/zfsonlinux/zfs/commit/37abac6d559a1da8ab8e5379442f491b73998f6a Sept 2012]
|-
|-
|'''Mac ZFS'''
|'''Mac ZFS'''
Line 122: Line 122:
|-
|-
|'''ZFS on Linux'''
|'''ZFS on Linux'''
|??
|[https://github.com/zfsonlinux/zfs/commit/6f1ffb06655008c9b519108ed29fbf03acd6e5de August 2013]
|-
|-
|'''Mac ZFS'''
|'''Mac ZFS'''
Line 147: Line 147:
|-
|-
|'''ZFS on Linux'''
|'''ZFS on Linux'''
|??
|[https://github.com/zfsonlinux/zfs/commit/9ae529ec5dbdc828ff8326beae58062971d74b2e Jan 2013]
|-
|-
|'''Mac ZFS'''
|'''Mac ZFS'''
Line 164: Line 164:
|-
|-
|'''ZFS on Linux'''
|'''ZFS on Linux'''
|??
|[https://github.com/zfsonlinux/zfs/commit/753c38392ddff9d3cf140bb4d28f3bfba52c92d2 Dec 2012]
|-
|-
|'''Mac ZFS'''
|'''Mac ZFS'''
Line 181: Line 181:
|-
|-
|'''ZFS on Linux'''
|'''ZFS on Linux'''
|??
|[https://github.com/zfsonlinux/zfs/commit/1eb5bfa3dcdaecb19543d9df13131374a7a42947 Dec 2012]
|-
|-
|'''Mac ZFS'''
|'''Mac ZFS'''
Line 200: Line 200:
|-
|-
|'''ZFS on Linux'''
|'''ZFS on Linux'''
|??
|[https://github.com/zfsonlinux/zfs/commit/55d85d5a8c45c4559a4a0e675c37b0c3afb19c2f May 2013]
|-
|-
|'''Mac ZFS'''
|'''Mac ZFS'''
Line 217: Line 217:
|-
|-
|'''ZFS on Linux'''
|'''ZFS on Linux'''
|??
|Not yet (as of Sept. 13, 2013)
|-
|-
|'''Mac ZFS'''
|'''Mac ZFS'''
Line 234: Line 234:
|-
|-
|'''ZFS on Linux'''
|'''ZFS on Linux'''
|??
|[https://github.com/zfsonlinux/zfs/commit/9759c60f1a1503e48dc5c45a209c3edd5758319f Jan 2013]
|-
|-
|'''Mac ZFS'''
|'''Mac ZFS'''
Line 241: Line 241:


==== synctask rewrite ====
==== synctask rewrite ====
{| class="wikitable"
|-
|'''illumos'''
|[https://github.com/illumos/illumos-gate/commit/3b2aab18808792cbd248a12f1edf139b89833c13 Feb 2013]
|-
|'''FreeBSD'''
|??
|-
|'''ZFS on Linux'''
|[https://github.com/zfsonlinux/zfs/commit/13fe019870c8779bf2f5b3ff731b512cf89133ef Sept 2013]
|-
|'''Mac ZFS'''
|??
|}


3b2aab18808792cbd248a12f1edf139b89833c13
3b2aab18808792cbd248a12f1edf139b89833c13
Line 246: Line 261:
==== l2arc compression ====
==== l2arc compression ====


aad02571bc59671aa3103bb070ae365f531b0b62
{| class="wikitable"
|-
|'''illumos'''
|[https://github.com/illumos/illumos-gate/commit/aad02571bc59671aa3103bb070ae365f531b0b62 Jun 2013]
|-
|'''FreeBSD'''
|??
|-
|'''ZFS on Linux'''
|[https://github.com/zfsonlinux/zfs/commit/3a17a7a99a1a6332d0999f9be68e2b8dc3933de1 Aug 2013]
|-
|'''Mac ZFS'''
|??
|}


==== arc shouldn't cache freed blocks ====
==== arc shouldn't cache freed blocks ====


6e6d5868f52089b9026785bd90257a3d3f6e5ee2
{| class="wikitable"
|-
|'''illumos'''
|[https://github.com/illumos/illumos-gate/commit/6e6d5868f52089b9026785bd90257a3d3f6e5ee2 Jun 2013]
|-
|'''FreeBSD'''
|??
|-
|'''ZFS on Linux'''
|[https://github.com/zfsonlinux/zfs/commit/df4474f92d0b1b8d54e1914fdd56be2b75f1ff5e Jun 2013]
|-
|'''Mac ZFS'''
|??
|}


== Dataset Properties ==
== Dataset Properties ==
Line 268: Line 309:
|[https://github.com/illumos/illumos-gate/commit/187d6ac08adc31ea6868bde0cfbbb288826254e8 Jun 2011]
|[https://github.com/illumos/illumos-gate/commit/187d6ac08adc31ea6868bde0cfbbb288826254e8 Jun 2011]
|??
|??
|??
|[https://github.com/zfsonlinux/zfs/commit/77999e804fff35782ab4b578d2cecf064c54a841 Aug 2012]
|??
|??
|-
|-
Line 275: Line 316:
|[https://github.com/illumos/illumos-gate/commit/e5351341b58845eee9d722bd71543d5a7c26b6cc Nov 2011]
|[https://github.com/illumos/illumos-gate/commit/e5351341b58845eee9d722bd71543d5a7c26b6cc Nov 2011]
|??
|??
|??
|[https://github.com/zfsonlinux/zfs/commit/330d06f90d143b41b276796526a66a1c1fff046d Jul 2012]
|??
|??
|-
|-
Line 282: Line 323:
|[https://github.com/illumos/illumos-gate/commit/e5351341b58845eee9d722bd71543d5a7c26b6cc Nov 2011]
|[https://github.com/illumos/illumos-gate/commit/e5351341b58845eee9d722bd71543d5a7c26b6cc Nov 2011]
|??
|??
|??
|[https://github.com/zfsonlinux/zfs/commit/330d06f90d143b41b276796526a66a1c1fff046d Jul 2012]
|??
|??
|-
|-
Line 289: Line 330:
|[https://github.com/illumos/illumos-gate/commit/e5351341b58845eee9d722bd71543d5a7c26b6cc Nov 2011]
|[https://github.com/illumos/illumos-gate/commit/e5351341b58845eee9d722bd71543d5a7c26b6cc Nov 2011]
|??
|??
|??
|[https://github.com/zfsonlinux/zfs/commit/330d06f90d143b41b276796526a66a1c1fff046d Jul 2012]
|??
|??
|}
|}
Line 295: Line 336:
more props lused lcompressed
more props lused lcompressed
77372cb0f35e8d3615ca2e16044f033397e88e21
77372cb0f35e8d3615ca2e16044f033397e88e21
Not yet ported to ZFSOnLinux (as of Sept. 13, 2013)

Revision as of 14:22, 13 September 2013

Feature Flags Overview

libzfs_core

CLI Usability

These are improvements to the command line interface. While the end result is a generally more friendly user interface, getting the desired behavior often required modifications to the core of ZFS.

Pool Comment

OpenZFS has a per-pool comment property which can be set with the zpool set command, but can be read even if the pool is not imported, so it is accessible even if the pool cannot be imported.

illumos Nov 2011
FreeBSD ??
ZFS on Linux Aug 2012
Mac ZFS ??

Size Estimates for zfs send and zfs destroy

This feature enhances OpenZFS's internal space accounting information. This new accounting information is used to provide a -n (dry-run) option for zfs send which can instantly calculate the amount of send stream data a specific zfs send command would generate. It is also used for a -n option for zfs destroy which can instantly calculate the amount of space that would be reclaimed by a specific zfs destroy command.

illumos Nov 2011
FreeBSD ??
ZFS on Linux Jul 2012
Mac ZFS ??

vdev Information in zpool list

OpenZFS adds a -v option to the zpool list command which shows detailed sizing information about the vdevs in the pool:

$ zpool list -v
NAME          SIZE  ALLOC   FREE  EXPANDSZ    CAP  DEDUP  HEALTH  ALTROOT
dcenter      5.24T  3.85T  1.39T         -    73%  1.00x  ONLINE  -
  mirror      556G   469G  86.7G         -
    c2t1d0       -      -      -         -
    c2t0d0       -      -      -         -
  mirror      556G   493G  63.0G         -
    c2t3d0       -      -      -         -
    c2t2d0       -      -      -         -
  mirror      556G   493G  62.7G         -
    c2t5d0       -      -      -         -
    c2t4d0       -      -      -         -
  mirror      556G   494G  62.5G         -
    c2t8d0       -      -      -         -
    c2t6d0       -      -      -         -
  mirror      556G   494G  62.2G         -
    c2t10d0      -      -      -         -
    c2t9d0       -      -      -         -
  mirror      556G   494G  61.9G         -
    c2t12d0      -      -      -         -
    c2t11d0      -      -      -         -
  mirror     1016G   507G   509G         -
    c1t1d0       -      -      -         -
    c1t5d0       -      -      -         -
  mirror     1016G   496G   520G         -
    c1t3d0       -      -      -         -
    c1t4d0       -      -      -         -
illumos Jan 2012
FreeBSD ??
ZFS on Linux Sept 2012
Mac ZFS ??

zfs send Progress Reporting

OpenZFS introduces a -v option to zfs send which reports per-second information on how much data has been sent, how long it has taken, and how much data remains to be sent.

illumos May 2012
FreeBSD ??
ZFS on Linux Sept 2012
Mac ZFS ??

Arbitrary Snapshot Arguments to zfs snapshot

illumos Jun 2012
FreeBSD ??
ZFS on Linux August 2013
Mac ZFS ??

Performance

Asynchronous Filesystem and Volume Destruction

Destroying a filesystem requires traversing all of its data in order to return its used blocks to the pool's free list. Before this feature the filesystem was not fully removed until all blocks had been reclaimed. If the destroy operation was interrupted by a reboot or power outage the next attempt to import the pool (probably during boot) would need to complete the destroy operation synchronously, possibly delaying a boot for long periods of time.

With asynchronous destruction the filesystem's data is immediately moved to a "to be freed" list, allowing the destroy operation to complete without traversing any of the filesystem's data. A background process reclaims blocks from this "to be freed" list and is capable of resuming this process after reboots without slowing the pool import process.

The new freeing algorithm also has a significant performance improvement when destroying clones. The old algorithm took time proportional to the number of blocks referenced by the clone, even if most of those blocks could not be reclaimed because they were still referenced by the clone's origin. The new algorithm only takes time proportional to the number of blocks unique to the clone.

illumos May 2012
FreeBSD ??
ZFS on Linux Jan 2013
Mac ZFS ??

empty bpobjs?

illumos Aug 2012
FreeBSD ??
ZFS on Linux Dec 2012
Mac ZFS ??

single copy arc?

illumos Sep 2012
FreeBSD ??
ZFS on Linux Dec 2012
Mac ZFS ??

George's massive spacemap performance improvments (the set from 2012)?

also 16a4a8074274d2d7cc408589cf6359f4a378c861 and 9eb57f7f3fbb970d4b9b89dcd5ecf543fe2414d5

illumos Nov 2012
FreeBSD ??
ZFS on Linux May 2013
Mac ZFS ??

nop-write?

illumos Nov 2012
FreeBSD ??
ZFS on Linux Not yet (as of Sept. 13, 2013)
Mac ZFS ??

lz4 compression

illumos Jan 2013
FreeBSD ??
ZFS on Linux Jan 2013
Mac ZFS ??

synctask rewrite

illumos Feb 2013
FreeBSD ??
ZFS on Linux Sept 2013
Mac ZFS ??

3b2aab18808792cbd248a12f1edf139b89833c13

l2arc compression

illumos Jun 2013
FreeBSD ??
ZFS on Linux Aug 2013
Mac ZFS ??

arc shouldn't cache freed blocks

illumos Jun 2013
FreeBSD ??
ZFS on Linux Jun 2013
Mac ZFS ??

Dataset Properties

These are new filesystem, volume, and snapshot properties which can be accessed with the zfs(1) command's get subcommand. See the zfs(1) manpage for your distribution for more details on each of these properties.

Property Description illumos FreeBSD ZFS on Linux Mac ZFS
refcompressratio The compression ratio acheived for all data referenced by (but not necessarily unique to) a snapshot, filesystem, or volume, expressed as a multiplier. Jun 2011 ?? Aug 2012 ??
clones For snapshots, this property is a comma-separated list of filesystems or volumes which are clones of this snapshot. Nov 2011 ?? Jul 2012 ??
written The amount of referenced space written to this dataset since the previous snapshot. Nov 2011 ?? Jul 2012 ??
written@<snap> The amount of referenced space written to this dataset since the specified snapshot. This is the space referenced by this dataset, but not referenced by the specified snapshot. Nov 2011 ?? Jul 2012 ??

more props lused lcompressed 77372cb0f35e8d3615ca2e16044f033397e88e21 Not yet ported to ZFSOnLinux (as of Sept. 13, 2013)