mirror_zfs/man/man8
George Amanakis b7654bd794
Trim L2ARC
The l2arc_evict() function is responsible for evicting buffers which
reference the next bytes of the L2ARC device to be overwritten. Teach
this function to additionally TRIM that vdev space before it is
overwritten if the device has been filled with data. This is done by
vdev_trim_simple() which trims by issuing a new type of TRIM,
TRIM_TYPE_SIMPLE.

We also implement a "Trim Ahead" feature. It is a zfs module parameter,
expressed in % of the current write size. This trims ahead of the
current write size. A minimum of 64MB will be trimmed. The default is 0
which disables TRIM on L2ARC as it can put significant stress to
underlying storage devices. To enable TRIM on L2ARC we set
l2arc_trim_ahead > 0.

We also implement TRIM of the whole cache device upon addition to a
pool, pool creation or when the header of the device is invalid upon
importing a pool or onlining a cache device. This is dependent on
l2arc_trim_ahead > 0. TRIM of the whole device is done with
TRIM_TYPE_MANUAL so that its status can be monitored by zpool status -t.
We save the TRIM state for the whole device and the time of completion
on-disk in the header, and restore these upon L2ARC rebuild so that
zpool status -t can correctly report them. Whole device TRIM is done
asynchronously so that the user can export of the pool or remove the
cache device while it is trimming (ie if it is too slow).

We do not TRIM the whole device if persistent L2ARC has been disabled by
l2arc_rebuild_enabled = 0 because we may not want to lose all cached
buffers (eg we may want to import the pool with
l2arc_rebuild_enabled = 0 only once because of memory pressure). If
persistent L2ARC has been disabled by setting the module parameter
l2arc_rebuild_blocks_min_l2size to a value greater than the size of the
cache device then the whole device is trimmed upon creation or import of
a pool if l2arc_trim_ahead > 0.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Adam D. Moss <c@yotes.com>
Signed-off-by: George Amanakis <gamanakis@gmail.com>
Closes #9713
Closes #9789 
Closes #10224
2020-06-09 10:15:08 -07:00
..
.gitignore Ignore *.o.ur-safe build artifacts 2018-05-13 18:59:02 -07:00
fsck.zfs.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
Makefile.am Small program that converts a dataset id and an object id to a path 2020-05-20 10:05:33 -07:00
mount.zfs.8 zfs.8 & mount.zfs.8: fix a few typos 2016-05-16 12:26:31 -07:00
vdev_id.8 vdev_id support for device link aliases 2012-12-03 14:04:47 -08:00
zdb.8 Improvements on persistent L2ARC 2020-05-07 16:34:03 -07:00
zed.8.in Change http://zfsonlinux.org links to https://zfsonlinux.org 2020-01-13 16:43:59 -08:00
zfs_ids_to_path.8 Small program that converts a dataset id and an object id to a path 2020-05-20 10:05:33 -07:00
zfs-allow.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-bookmark.8 Implement bookmark copying 2020-02-11 13:19:12 -08:00
zfs-change-key.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-clone.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-create.8 zfs_create: round up volume size to multiple of bs 2020-04-24 19:04:34 -07:00
zfs-destroy.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-diff.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-get.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-groupspace.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-hold.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-inherit.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-jail.8 Add FreeBSD jail support hooks 2019-12-11 11:58:37 -08:00
zfs-list.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-load-key.8 Document zfs change-key caveats 2020-01-14 10:11:07 -08:00
zfs-mount-generator.8.in Systemd mount generator: Generate noauto units; add control properties 2020-02-14 15:32:55 -08:00
zfs-mount.8 Add notice that forcefully unmount is not supported on Linux 2020-02-18 13:36:23 -08:00
zfs-program.8 Support setting user properties in a channel program 2020-02-14 13:41:42 -08:00
zfs-project.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-projectspace.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-promote.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-receive.8 Remove deduplicated send/receive code 2020-04-23 10:06:57 -07:00
zfs-recv.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-redact.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-release.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-rename.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-rollback.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-send.8 Remove deduplicated send/receive code 2020-04-23 10:06:57 -07:00
zfs-set.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-share.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-snapshot.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-unallow.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-unjail.8 Add FreeBSD jail support hooks 2019-12-11 11:58:37 -08:00
zfs-unload-key.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-unmount.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-upgrade.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-userspace.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfs-wait.8 Add 'zfs wait' command 2020-04-01 10:02:06 -07:00
zfs.8 mount: use the mount syscall directly 2020-05-20 18:02:41 -07:00
zfsconcepts.8 Reorganize zfs(8) man page into sections 2019-11-12 11:17:40 -08:00
zfsprops.8 OpenZFS 3254 - add support in zfs for aclmode=restricted 2020-04-30 11:23:59 -07:00
zgenhostid.8 Correct man page dates 2019-05-08 10:59:32 -07:00
zinject.8 Multiple DVA Scrubbing Fix 2019-03-15 14:14:31 -07:00
zpool-add.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-attach.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-checkpoint.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-clear.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-create.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-destroy.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-detach.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-events.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-export.8 Add notice that forcefully unmount is not supported on Linux 2020-02-18 13:36:23 -08:00
zpool-get.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-history.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-import.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-initialize.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-iostat.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-labelclear.8 Persistent L2ARC 2020-04-10 10:33:35 -07:00
zpool-list.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-offline.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-online.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-reguid.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-remove.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-reopen.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-replace.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-resilver.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-scrub.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-set.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-split.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-status.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-sync.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-trim.8 Add trim support to zpool wait 2020-03-04 15:07:11 -08:00
zpool-upgrade.8 Reorganize zpool(8) man page into sections 2019-11-13 09:21:07 -08:00
zpool-wait.8 Add trim support to zpool wait 2020-03-04 15:07:11 -08:00
zpool.8 Fix ZPOOL_VDEV_NAME_PATH option description 2020-01-06 10:43:32 -08:00
zpoolconcepts.8 Persistent L2ARC 2020-04-10 10:33:35 -07:00
zpoolprops.8 Trim L2ARC 2020-06-09 10:15:08 -07:00
zstream.8 Add zstream redup command to convert deduplicated send streams 2020-04-10 10:39:55 -07:00
zstreamdump.8 Eliminate useless double-bolding in man pages 2019-04-24 17:04:35 -07:00