mirror_zfs/tests/zfs-tests/tests/functional
Brian Behlendorf b2255edcc0
Distributed Spare (dRAID) Feature
This patch adds a new top-level vdev type called dRAID, which stands
for Distributed parity RAID.  This pool configuration allows all dRAID
vdevs to participate when rebuilding to a distributed hot spare device.
This can substantially reduce the total time required to restore full
parity to pool with a failed device.

A dRAID pool can be created using the new top-level `draid` type.
Like `raidz`, the desired redundancy is specified after the type:
`draid[1,2,3]`.  No additional information is required to create the
pool and reasonable default values will be chosen based on the number
of child vdevs in the dRAID vdev.

    zpool create <pool> draid[1,2,3] <vdevs...>

Unlike raidz, additional optional dRAID configuration values can be
provided as part of the draid type as colon separated values. This
allows administrators to fully specify a layout for either performance
or capacity reasons.  The supported options include:

    zpool create <pool> \
        draid[<parity>][:<data>d][:<children>c][:<spares>s] \
        <vdevs...>

    - draid[parity]       - Parity level (default 1)
    - draid[:<data>d]     - Data devices per group (default 8)
    - draid[:<children>c] - Expected number of child vdevs
    - draid[:<spares>s]   - Distributed hot spares (default 0)

Abbreviated example `zpool status` output for a 68 disk dRAID pool
with two distributed spares using special allocation classes.

```
  pool: tank
 state: ONLINE
config:

    NAME                  STATE     READ WRITE CKSUM
    slag7                 ONLINE       0     0     0
      draid2:8d:68c:2s-0  ONLINE       0     0     0
        L0                ONLINE       0     0     0
        L1                ONLINE       0     0     0
        ...
        U25               ONLINE       0     0     0
        U26               ONLINE       0     0     0
        spare-53          ONLINE       0     0     0
          U27             ONLINE       0     0     0
          draid2-0-0      ONLINE       0     0     0
        U28               ONLINE       0     0     0
        U29               ONLINE       0     0     0
        ...
        U42               ONLINE       0     0     0
        U43               ONLINE       0     0     0
    special
      mirror-1            ONLINE       0     0     0
        L5                ONLINE       0     0     0
        U5                ONLINE       0     0     0
      mirror-2            ONLINE       0     0     0
        L6                ONLINE       0     0     0
        U6                ONLINE       0     0     0
    spares
      draid2-0-0          INUSE     currently in use
      draid2-0-1          AVAIL
```

When adding test coverage for the new dRAID vdev type the following
options were added to the ztest command.  These options are leverages
by zloop.sh to test a wide range of dRAID configurations.

    -K draid|raidz|random - kind of RAID to test
    -D <value>            - dRAID data drives per group
    -S <value>            - dRAID distributed hot spares
    -R <value>            - RAID parity (raidz or dRAID)

The zpool_create, zpool_import, redundancy, replacement and fault
test groups have all been updated provide test coverage for the
dRAID feature.

Co-authored-by: Isaac Huang <he.huang@intel.com>
Co-authored-by: Mark Maybee <mmaybee@cray.com>
Co-authored-by: Don Brady <don.brady@delphix.com>
Co-authored-by: Matthew Ahrens <mahrens@delphix.com>
Co-authored-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Mark Maybee <mmaybee@cray.com>
Reviewed-by: Matt Ahrens <matt@delphix.com>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #10102
2020-11-13 13:51:51 -08:00
..
acl Linux: Initialize zp in zfs_setattr_dir 2020-10-09 09:27:14 -07:00
alloc_class ZTS: minor improvements to alloc_class_009_pos functional test 2020-07-30 09:11:05 -07:00
arc Make dbufstat work on FreeBSD 2020-10-08 09:40:23 -07:00
atime ZTS: Misc fixes for FreeBSD 2020-02-25 16:23:27 -08:00
bootfs Update ZTS to work on FreeBSD 2019-12-18 12:29:43 -08:00
btree ZTS: Fix ksh path in btree tests 2020-01-15 16:23:29 -08:00
cache ZTS: Fix and change testcase cache_010_neg 2020-04-13 10:50:41 -07:00
cachefile Fix typos in tests/ 2019-09-02 18:14:53 -07:00
casenorm ZTS: Adapt casenorm tests for FreeBSD 2020-02-26 08:41:30 -08:00
channel_program Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
chattr Update ZTS to work on FreeBSD 2019-12-18 12:29:43 -08:00
checksum ZTS: Add L1 corruption test 2020-11-05 17:16:25 -08:00
clean_mirror ZTS: clean_mirror and scrub_mirror cleanup 2018-07-09 12:46:14 -07:00
cli_root Distributed Spare (dRAID) Feature 2020-11-13 13:51:51 -08:00
cli_user Cross-platform acltype 2020-10-13 21:25:48 -07:00
compression Add zstd support to zfs 2020-08-20 10:30:06 -07:00
cp_files Fix ENOSPC in "Handle zap_add() failures in ..." 2018-04-18 14:19:50 -07:00
ctime Update ZTS to work on FreeBSD 2019-12-18 12:29:43 -08:00
deadman ZTS: Catalog tunable names for tests in tunables.cfg 2020-01-14 14:57:28 -08:00
delegate Clarify comments in config/*.m4, vdev_geom.c, zfs_allow_*.ksh 2020-06-22 09:46:37 -07:00
devices ZTS: devices_001_pos and devices_002_neg 2019-12-27 12:11:27 -08:00
events ZTS: Wait on all events in events_001_pos.ksh 2020-11-03 09:19:45 -08:00
exec Enable remaining tests 2017-05-22 12:34:32 -04:00
fallocate linux: add basic fallocate(mode=0/2) compatibility 2020-06-18 11:22:11 -07:00
fault Distributed Spare (dRAID) Feature 2020-11-13 13:51:51 -08:00
features ZTS: Catalog tunable names for tests in tunables.cfg 2020-01-14 14:57:28 -08:00
grow ZTS: Adopt OpenZFS test analysis script 2018-06-20 14:03:13 -07:00
history Cross-platform acltype 2020-10-13 21:25:48 -07:00
hkdf Use abs_top_builddir when referencing libraries 2020-07-10 14:26:32 -07:00
inheritance Fixes for make dist 2020-06-26 14:20:02 -07:00
inuse ZTS: Eliminate partitioning from zpool_create etc 2020-02-20 08:10:13 -08:00
io Direct IO support 2018-08-27 10:04:21 -07:00
l2arc Non-l2arc pool reads shouldn't be l2arc misses 2020-10-20 11:39:52 -07:00
large_files ZTS: Another round of changes for FreeBSD 2020-03-06 09:31:32 -08:00
largest_pool Fix typos 2020-06-09 21:24:09 -07:00
libzfs Use abs_top_builddir when referencing libraries 2020-07-10 14:26:32 -07:00
limits Linux 4.10 compat: has_capability() 2020-07-19 09:56:21 -07:00
link_count ZTS: Add zts-report exceptions for FreeBSD 2020-03-04 15:09:40 -08:00
log_spacemap ZTS: Catalog tunable names for tests in tunables.cfg 2020-01-14 14:57:28 -08:00
migration ZTS: Fix a few defaults 2020-01-31 08:51:23 -08:00
mmap Fix typos 2020-06-09 21:24:09 -07:00
mmp ZTS: Catalog tunable names for tests in tunables.cfg 2020-01-14 14:57:28 -08:00
mount ZTS: Catalog tunable names for tests in tunables.cfg 2020-01-14 14:57:28 -08:00
mv_files ZTS: Provide an alternative to shuf for FreeBSD 2020-01-09 09:31:17 -08:00
nestedfs OpenZFS 7290 - ZFS test suite needs to control what utilities it can run 2017-04-06 09:25:36 -07:00
no_space ZTS: Eliminate partitioning from zpool_create etc 2020-02-20 08:10:13 -08:00
nopwrite ZTS: Fix path to /dev/null in nopwrite_recsize 2020-10-08 16:39:23 -07:00
online_offline Add subcommand to wait for background zfs activity to complete 2019-09-13 18:09:06 -07:00
pam pam: implement a zfs_key pam module 2020-06-24 18:45:44 -07:00
pool_checkpoint ZTS: Misc test fixes for FreeBSD 2020-02-13 13:52:34 -08:00
pool_names Fix some ZFS Test Suite issues 2017-09-25 10:32:34 -07:00
poolversion Fix some ZFS Test Suite issues 2017-09-25 10:32:34 -07:00
privilege ZTS: Move privilege tests to sunos.run 2020-02-21 08:52:44 -08:00
procfs ZTS: Fix pool_state cleanup 2019-12-28 08:43:23 -08:00
projectquota Fix typos in tests/ 2019-09-02 18:08:56 -07:00
pyzfs Centralize variable substitution 2020-07-14 17:33:44 -07:00
quota ZTS: Wait for free space between quota tests 2020-03-26 10:48:19 -07:00
raidz Distributed Spare (dRAID) Feature 2020-11-13 13:51:51 -08:00
redacted_send Fix crash caused by invalid snapshot names in redactnvl 2020-10-14 14:04:19 -07:00
redundancy Distributed Spare (dRAID) Feature 2020-11-13 13:51:51 -08:00
refquota ZTS: Catalog tunable names for tests in tunables.cfg 2020-01-14 14:57:28 -08:00
refreserv ZTS: refreserv_005_pos.ksh 2020-05-08 13:50:02 -07:00
removal ZTS: Wait for free space between quota tests 2020-03-26 10:48:19 -07:00
rename_dirs Enable remaining tests 2017-05-22 12:34:32 -04:00
replacement Distributed Spare (dRAID) Feature 2020-11-13 13:51:51 -08:00
reservation Fix typos in tests/ 2019-08-30 16:52:00 -07:00
rootpool Update ZTS to work on FreeBSD 2019-12-18 12:29:43 -08:00
rsend Cross-platform acltype 2020-10-13 21:25:48 -07:00
scrub_mirror ZTS: clean_mirror and scrub_mirror cleanup 2018-07-09 12:46:14 -07:00
slog ZTS: Fix faulty slog_replay_fs_001 test 2020-02-20 08:11:51 -08:00
snapshot ZTS: Catalog tunable names for tests in tunables.cfg 2020-01-14 14:57:28 -08:00
snapused Fix "file is executable, but no shebang" warnings 2018-04-06 16:34:21 -07:00
sparse ZTS: Adopt OpenZFS test analysis script 2018-06-20 14:03:13 -07:00
suid Implement secpolicy_vnode_setid_retain() 2019-07-26 13:52:30 -07:00
threadsappend ZTS: Adopt OpenZFS test analysis script 2018-06-20 14:03:13 -07:00
tmpfile Mark functions as static 2020-06-18 12:20:38 -07:00
trim Distributed Spare (dRAID) Feature 2020-11-13 13:51:51 -08:00
truncate Update ZTS to work on FreeBSD 2019-12-18 12:29:43 -08:00
upgrade ZTS: Fix upgrade_readonly_pool 2019-10-03 09:39:13 -07:00
user_namespace Fix "file is executable, but no shebang" warnings 2018-04-06 16:34:21 -07:00
userquota ZTS: Fix userquota_006_pos on FreeBSD 2020-02-20 08:14:24 -08:00
vdev_zaps ZTS: Fix vdev_zaps_005_pos on CentOS 6 2019-08-22 08:53:44 -07:00
write_dirs Fix typos 2020-06-09 21:24:09 -07:00
xattr ZTS: Fix xattr_004_pos failure, don't use tmpfs 2020-10-30 08:47:42 -07:00
zpool_influxdb Add zpool_influxdb command 2020-10-09 09:29:21 -07:00
zvol ZTS: Skip udev actions in zvol_misc when not Linux 2020-03-31 10:35:14 -07:00
Makefile.am Add zpool_influxdb command 2020-10-09 09:29:21 -07:00