Difference between revisions of "Features"

Jump to navigation Jump to search
8,019 bytes added ,  08:25, 22 August 2013
no edit summary
m (Csiden moved page OpenZFSFeatures to OpenZFS Features)
Line 1: Line 1:
== Feature Comparison: Open ZFS vs Oracle ZFS ==
== Feature Flags Overview ==
This is where the table goes! I'm not sure what that table will look like, but here are a couple of possibilities...


{| border=1
== libzfs_core ==
!Open ZFS
 
!Oracle ZFS
== 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 <tt>zpool set</tt> command, but can be read even if the pool is not imported, so it is accessible even if the pool cannot be imported.
 
{| class="wikitable"
|-
|'''illumos'''
|[https://github.com/illumos/illumos-gate/commit/8704186e373c9ed74daa395ff3f7fd745396df9e Nov 2011]
|-
|'''FreeBSD'''
|??
|-
|'''ZFS on Linux'''
|??
|-
|'''Mac ZFS'''
|??
|}
 
==== Size Estimates for <tt>zfs send</tt> and <tt>zfs destroy</tt> ====
 
This feature enhances OpenZFS's internal space accounting information. This new accounting information is used to provide a <tt>-n</tt> (dry-run) option for <tt>zfs send</tt> which can instantly calculate the amount of send stream data a specific <tt>zfs send</tt> command would generate. It is also used for a <tt>-n</tt> option for <tt>zfs destroy</tt> which can instantly calculate the amount of space that would be reclaimed by a specific <tt>zfs destroy</tt> command.
 
{| class="wikitable"
|-
|'''illumos'''
|[https://github.com/illumos/illumos-gate/commit/e5351341b58845eee9d722bd71543d5a7c26b6cc Nov 2011]
|-
|'''FreeBSD'''
|??
|-
|'''ZFS on Linux'''
|??
|-
|'''Mac ZFS'''
|??
|}
 
==== vdev Information in <tt>zpool list</tt> ====
 
OpenZFS adds a <tt>-v</tt> option to the <tt>zpool list</tt> 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      -      -      -        -
 
{| class="wikitable"
|-
|'''illumos'''
|[https://github.com/illumos/illumos-gate/commit/4263d13f00c9691fa14620eff82abef795be0693 Jan 2012]
|-
|'''FreeBSD'''
|??
|-
|'''ZFS on Linux'''
|??
|-
|'''Mac ZFS'''
|??
|}
 
==== <tt>zfs send</tt> Progress Reporting ====
 
OpenZFS introduces a <tt>-v</tt> option to <tt>zfs send</tt> 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.
 
{| class="wikitable"
|-
|'''illumos'''
|[https://github.com/illumos/illumos-gate/commit/4e3c9f4489a18514e5e8caeb91d4e6db07c98415 May 2012]
|-
|'''FreeBSD'''
|??
|-
|'''ZFS on Linux'''
|??
|-
|'''Mac ZFS'''
|??
|}
 
==== Arbitrary Snapshot Arguments to <tt>zfs snapshot</tt> ====
 
{| class="wikitable"
|-
|'''illumos'''
|[https://github.com/illumos/illumos-gate/commit/4445fffbbb1ea25fd0e9ea68b9380dd7a6709025 Jun 2012]
|-
|'''FreeBSD'''
|??
|-
|'''ZFS on Linux'''
|??
|-
|'''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.
 
{| class="wikitable"
|-
|'''illumos'''
|[https://github.com/illumos/illumos-gate/commit/ad135b5d644628e791c3188a6ecbd9c257961ef8 May 2012]
|-
|'''FreeBSD'''
|??
|-
|'''ZFS on Linux'''
|??
|-
|'''Mac ZFS'''
|??
|}
 
==== empty bpobjs? ====
 
{| class="wikitable"
|-
|'''illumos'''
|[https://github.com/illumos/illumos-gate/commit/f17457368189aa911f774c38c1f21875a568bdca Aug 2012]
|-
|'''FreeBSD'''
|??
|-
|'''ZFS on Linux'''
|??
|-
|'''Mac ZFS'''
|??
|}
 
==== single copy arc? ====
 
{| class="wikitable"
|-
|'''illumos'''
|[https://github.com/illumos/illumos-gate/commit/9253d63df408bb48584e0b1abfcc24ef2472382e Sep 2012]
|-
|'''FreeBSD'''
|??
|-
|'''ZFS on Linux'''
|??
|-
|'''Mac ZFS'''
|??
|}
 
==== George's massive spacemap performance improvments (the set from 2012)? ====
 
also 16a4a8074274d2d7cc408589cf6359f4a378c861 and 9eb57f7f3fbb970d4b9b89dcd5ecf543fe2414d5
 
{| class="wikitable"
|-
|'''illumos'''
|[https://github.com/illumos/illumos-gate/commit/01f55e48fb4d524eaf70687728aa51b7762e2e97 Nov 2012]
|-
|'''FreeBSD'''
|??
|-
|'''ZFS on Linux'''
|??
|-
|'''Mac ZFS'''
|??
|}
 
==== nop-write? ====
 
{| class="wikitable"
|-
|'''illumos'''
|[https://github.com/illumos/illumos-gate/commit/80901aea8e78a2c20751f61f01bebd1d5b5c2ba5 Nov 2012]
|-
|'''FreeBSD'''
|??
|-
|'''ZFS on Linux'''
|??
|-
|'''Mac ZFS'''
|??
|}
 
==== lz4 compression ====
 
{| class="wikitable"
|-
|'''illumos'''
|[https://github.com/illumos/illumos-gate/commit/a6f561b4aee75d0d028e7b36b151c8ed8a86bc76 Jan 2013]
|-
|'''FreeBSD'''
|??
|-
|'''ZFS on Linux'''
|??
|-
|-
|Feature A<br>Feature B<br>Feature C<br>
|'''Mac ZFS'''
|Feature A
|??
|}
|}


<br>
==== synctask rewrite ====
 
3b2aab18808792cbd248a12f1edf139b89833c13
 
==== l2arc compression ====
 
aad02571bc59671aa3103bb070ae365f531b0b62
 
==== arc shouldn't cache freed blocks ====
 
6e6d5868f52089b9026785bd90257a3d3f6e5ee2
 
== Dataset Properties ==
 
These are new filesystem, volume, and snapshot properties which can be accessed with the <tt>zfs(1)</tt> command's <tt>get</tt> subcommand. See the <tt>zfs(1)</tt> manpage for your distribution for more details on each of these properties.


{| border=1
{| class="wikitable"
!Feature
!Property
!Open ZFS
!Description
!Oracle ZFS
!illumos
!FreeBSD
!ZFS on Linux
!Mac ZFS
|-
|-
|Feature A
|<tt>refcompressratio</tt>
|Yes
|The compression ratio acheived for all data referenced by (but not necessarily unique to) a snapshot, filesystem, or volume, expressed as a multiplier.
|Yes
|[https://github.com/illumos/illumos-gate/commit/187d6ac08adc31ea6868bde0cfbbb288826254e8 Jun 2011]
|??
|??
|??
|-
|-
|Feature B
|<tt>clones</tt>
|Yes
|For snapshots, this property is a comma-separated list of filesystems or volumes which are clones of this snapshot.
|No
|[https://github.com/illumos/illumos-gate/commit/e5351341b58845eee9d722bd71543d5a7c26b6cc Nov 2011]
|??
|??
|??
|-
|-
|Feature C
|<tt>written</tt>
|Yes
|The ammount of referenced space written to this dataset since the previous snapshot.
|No
|[https://github.com/illumos/illumos-gate/commit/e5351341b58845eee9d722bd71543d5a7c26b6cc Nov 2011]
|??
|??
|??
|-
|<tt>written@''<snap>''</tt>
|The ammount 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.
|[https://github.com/illumos/illumos-gate/commit/e5351341b58845eee9d722bd71543d5a7c26b6cc Nov 2011]
|??
|??
|??
|}
|}
more props lused lcompressed
77372cb0f35e8d3615ca2e16044f033397e88e21
Editor
44

edits

Navigation menu