[zfs-announce] v0.7.0 released
behlendorf1 at llnl.gov
Wed Jul 26 19:47:58 EDT 2017
### New Features
* Resumable zfs send/receive - Allow an interrupted zfs receive to be
resumed if the stream was prematurely terminated (e.g. due to remote
system or network failure).
* Compressed zfs send/receive - Use the zfs send -c option to directly
send the compressed data in the ARC or on-disk to another pool without
needing to decompress it.
* Multiple Import Protection - Prevents a shared pool in a fail-over
configuration from being imported on different hosts at the same time.
When the multihost pool property is on, perform an activity check
prior to importing the pool to verify it is not in use.
* Customized zpool iostat|status columns - Additional columns can be
added to the zpool iostat and zpool status output to show more
information. Several useful scripts are provided which can report
drive temperature, SMART data, enclosure LED status, and more.
Administrators and users can add additional scripts to meet their
* Latency and request size histograms - Use the zpool iostat -l option
to show on-the-fly latency stats and zpool iostat -w to generate a
histogram showing the total latency of each IO. The zpool iostat -r
option can be used to show the size of each IO. These statistics are
available per-disk to aid in finding misbehaving devices.
* Scrub Pause - The zpool scrub -p option can be used to pause/resume an
active scrub without having to cancel it.
* Delegations - The zfs allow and zfs unallow subcommands can be used to
delegate ZFS administrative permissions for the file systems to
* Large dnodes - This feature improves metadata performance allowing
extended attributes, ACLs, and symbolic links with long target names
to be stored in the dnode. This benefits workloads such as SELinux,
distributed filesystems like Lustre and Ceph, and any application
which makes use of extended attributes.
* User/group object accounting and quota - This feature adds per-object
user/group accounting and quota limits to the existing space
accounting and quota functionality. The zfs userspace and zfs
groupspace subcommands have been extended to set quota limits and
report on object usage.
* Cryptographic checksums - Stronger SHA-512, Skein, or Edon-R checksums
* JBOD Management
* Automatic drive online - Newly detected devices which are determined
to be part of an imported pool are automatically brought online.
* Automatic drive replacement - When the autoreplace pool property is
on, any new device found in the same physical location as a device
that previously belonged to the pool, is automatically formatted and
* Automatic hot spares - When a device is faulted start a rebuild to a
hot-spare device if available.
* Fault LEDs - Set the fault LED for a device when it's faulted, clear
it when it has been replaced.
* Drive health monitoring - Automatically fault a device when an
excessive number of read, write, or checksum errors are detected.
* Force fault - Use zpool offline -f to proactively fault a
* Multipath - Can be used with advanced multipath configurations.
* ARC Buffer Data (ABD) - Allocates ARC data buffers using scatter lists
of pages instead of virtual memory. This approach minimizes
fragmentation on the system allowing for a more efficient use of
memory. The reduced demand for virtual memory also improves stability
and performance on 32-bit architectures.
* Compressed ARC - Cached file data is compressed by default in memory
and uncompressed on demand. This allows for an larger effective cache
which improves overall performance.
* Vectorized RAIDZ - Hardware optimized RAIDZ which reduces CPU usage.
Supported SIMD instructions: sse2, ssse3, avx2, avx512f, and avx512bw,
* Vectorized checksums - Hardware optimized Fletcher-4 checksums which
reduce CPU usage. Supported SIMD instructions: sse2, ssse3, avx2,
* GZIP compression offloading - Hardware optimized GZIP compression
offloading with QAT accelerator.
* Metadata performance - Overall improved metadata performance.
Optimizations include a multi-threaded allocator, batched quota
updates, improved prefetching, and streamlined call paths.
* Faster RAIDZ resilver - When resilvering RAIDZ intelligently skips
sections of the device which don't need to be rebuilt.
### Changes in Behavior
* Non-privileged users are allowed to run zpool list, zpool iostat,
zpool status, zpool get, zfs list, and zfs get. These commands no
longer need to be added to the /etc/sudoers file.
* By default task queues are now dynamic and worker threads will be
created and destroyed as needed. This allows the system to
automatically tune itself to ensure the optimal number of threads
are used for the active workload which can result in a performance
### Supported Kernels
Compatible with 2.6.32 - 4.12 Linux kernels.
### Module Options
* The default values for the module options were selected to yield good
performance for the majority of workloads and configurations. They
should not need to be tuned for most systems but are available for
performance analysis and tuning. See the zfs-module-parameters(5) man
page for a more complete description of the options and what they
* dbuf_cache_hiwater_pct - Percent over dbuf_cache_max_bytes when
dbufs must be evicted
* dbuf_cache_lowater_pct - Percent below dbuf_cache_max_bytes when
dbufs stop being evicted
* dbuf_cache_max_bytes - Maximum size in bytes of the dbuf cache
* dbuf_cache_max_shift - Cap the size of the dbuf cache to a log2
fraction of arc size
* dmu_object_alloc_chunk_shift - CPU-specific allocator grabs 2^N
objects at once
* send_holes_without_birth_time - Ignore hole_birth txg for zfs send
* zfetch_max_distance - Max bytes to prefetch per stream
* zfs_abd_scatter_enabled - Toggle whether ABD allocations must be
* zfs_abd_scatter_max_order - Maximum order allocation used for a
* zfs_arc_dnode_limit - Minimum bytes of dnodes in ARC
* zfs_arc_dnode_limit_percent - Percent of ARC meta buffers for dnodes
* zfs_arc_dnode_reduce_percent - Percentage of excess dnodes to try to
* zfs_arc_meta_limit_percent - Percent of arc size for arc meta limit
* zfs_arc_pc_percent - Percent of pagecache to reclaim ARC to
* zfs_compressed_arc_enabled - Disable compressed arc buffers
* zfs_deadman_checktime_ms - Dead I/O check interval in milliseconds
* zfs_delete_blocks - Delete files larger than N blocks asynchronously
* zfs_dmu_offset_next_sync - Enable forcing txg sync to find holes
* zfs_free_bpobj_enabled - Enable processing of the free_bpobj
* zfs_metaslab_segment_weight_enabled - Enable segment-based metaslab
* zfs_metaslab_switch_threshold - Metaslab selection max buckets
* zfs_multihost_fail_intervals - Max allowed period without a
successful mmp write
* zfs_multihost_history - Historical statistics for last N multihost
* zfs_multihost_import_intervals - Number of zfs_multihost_interval
periods to wait for activity
* zfs_multihost_interval - Milliseconds between mmp writes to each
* zfs_multilist_num_sublists - Number of sublists used in each
* zfs_per_txg_dirty_frees_percent - Percentage of dirtied blocks from
frees in one TXG
* zfs_sync_taskq_batch_pct - Percentage of CPUs to run an IO worker
* zfs_vdev_mirror_non_rotating_inc - Non-rotating media load increment
for non-seeking I/O's
* zfs_vdev_mirror_non_rotating_seek_inc - Non-rotating media load
increment for seeking I/O's
* zfs_vdev_mirror_rotating_inc - Rotating media load increment for
* zfs_vdev_mirror_rotating_seek_inc - Rotating media load increment
for seeking I/O's
* zfs_vdev_mirror_rotating_seek_offset - Offset in bytes from the last
I/O to trigger seek increment
* zfs_vdev_queue_depth_pct - Queue depth percentage for each top-level
* zfs_vdev_raidz_impl - Select RAIDZ implementation.
* zil_slog_bulk - Limit in bytes slog sync writes per commit
* zio_dva_throttle_enabled - Throttle block allocations in the ZIO
* zvol_request_sync - Synchronously handle bio requests
* zvol_threads - Max number of threads to handle I/O requests
* zvol_volmode - Default volmode property value
* spl_max_show_tasks - Max number of tasks shown in taskq proc
* spl_panic_halt - Cause kernel panic on assertion failures
* l2arc_nocompress - Skip compressing L2ARC buffers
* zfetch_block_cap - Max number of blocks to fetch at a time
* zfs_arc_num_sublists_per_state - Number of sublists used in each of
the ARC state lists
* zfs_disable_dup_eviction - Disable duplicate buffer eviction
* zfs_vdev_mirror_switch_us - Switch mirrors every N microseconds
* zil_slog_limit - Max commit bytes to separate log device
* zfs_admin_snapshot - Enable mkdir/rmdir/mv in .zfs/snapshot
More information about the zfs-announce