mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	|  b2255edcc0 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 | ||
|---|---|---|
| .. | ||
| acl | ||
| alloc_class | ||
| arc | ||
| atime | ||
| bootfs | ||
| btree | ||
| cache | ||
| cachefile | ||
| casenorm | ||
| channel_program | ||
| chattr | ||
| checksum | ||
| clean_mirror | ||
| cli_root | ||
| cli_user | ||
| compression | ||
| cp_files | ||
| ctime | ||
| deadman | ||
| delegate | ||
| devices | ||
| events | ||
| exec | ||
| fallocate | ||
| fault | ||
| features | ||
| grow | ||
| history | ||
| hkdf | ||
| inheritance | ||
| inuse | ||
| io | ||
| l2arc | ||
| large_files | ||
| largest_pool | ||
| libzfs | ||
| limits | ||
| link_count | ||
| log_spacemap | ||
| migration | ||
| mmap | ||
| mmp | ||
| mount | ||
| mv_files | ||
| nestedfs | ||
| no_space | ||
| nopwrite | ||
| online_offline | ||
| pam | ||
| pool_checkpoint | ||
| pool_names | ||
| poolversion | ||
| privilege | ||
| procfs | ||
| projectquota | ||
| pyzfs | ||
| quota | ||
| raidz | ||
| redacted_send | ||
| redundancy | ||
| refquota | ||
| refreserv | ||
| removal | ||
| rename_dirs | ||
| replacement | ||
| reservation | ||
| rootpool | ||
| rsend | ||
| scrub_mirror | ||
| slog | ||
| snapshot | ||
| snapused | ||
| sparse | ||
| suid | ||
| threadsappend | ||
| tmpfile | ||
| trim | ||
| truncate | ||
| upgrade | ||
| user_namespace | ||
| userquota | ||
| vdev_zaps | ||
| write_dirs | ||
| xattr | ||
| zpool_influxdb | ||
| zvol | ||
| Makefile.am | ||