mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 03:09:34 +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
79 lines
2.3 KiB
Makefile
79 lines
2.3 KiB
Makefile
pkgdatadir = $(datadir)/@PACKAGE@
|
|
|
|
dist_pkgdata_SCRIPTS = \
|
|
zimport.sh \
|
|
zfs.sh \
|
|
zfs-tests.sh \
|
|
zloop.sh \
|
|
zfs-helpers.sh
|
|
|
|
EXTRA_DIST = \
|
|
commitcheck.sh \
|
|
common.sh.in \
|
|
cstyle.pl \
|
|
dkms.mkconf \
|
|
dkms.postbuild \
|
|
enum-extract.pl \
|
|
kmodtool \
|
|
make_gitrev.sh \
|
|
man-dates.sh \
|
|
paxcheck.sh \
|
|
zfs2zol-patch.sed \
|
|
zol2zfs-patch.sed
|
|
|
|
define EXTRA_ENVIRONMENT
|
|
|
|
# Only required for in-tree use
|
|
export INTREE="yes"
|
|
export GDB="libtool --mode=execute gdb"
|
|
export LDMOD=/sbin/insmod
|
|
|
|
export CMD_DIR=@abs_top_builddir@/cmd
|
|
export UDEV_RULE_DIR=@abs_top_builddir@/udev/rules.d
|
|
export ZEDLET_ETC_DIR=$$CMD_DIR/zed/zed.d
|
|
export ZEDLET_LIBEXEC_DIR=$$CMD_DIR/zed/zed.d
|
|
export ZPOOL_SCRIPT_DIR=$$CMD_DIR/zpool/zpool.d
|
|
export ZPOOL_SCRIPTS_PATH=$$CMD_DIR/zpool/zpool.d
|
|
export CONTRIB_DIR=@abs_top_builddir@/contrib
|
|
export LIB_DIR=@abs_top_builddir@/lib
|
|
export SYSCONF_DIR=@abs_top_builddir@/etc
|
|
|
|
export INSTALL_UDEV_DIR=@udevdir@
|
|
export INSTALL_UDEV_RULE_DIR=@udevruledir@
|
|
export INSTALL_MOUNT_HELPER_DIR=@mounthelperdir@
|
|
export INSTALL_SYSCONF_DIR=@sysconfdir@
|
|
export INSTALL_PYTHON_DIR=@pythonsitedir@
|
|
|
|
export KMOD_SPL=@abs_top_builddir@/module/spl/spl.ko
|
|
export KMOD_ZAVL=@abs_top_builddir@/module/avl/zavl.ko
|
|
export KMOD_ZNVPAIR=@abs_top_builddir@/module/nvpair/znvpair.ko
|
|
export KMOD_ZUNICODE=@abs_top_builddir@/module/unicode/zunicode.ko
|
|
export KMOD_ZCOMMON=@abs_top_builddir@/module/zcommon/zcommon.ko
|
|
export KMOD_ZLUA=@abs_top_builddir@/module/lua/zlua.ko
|
|
export KMOD_ICP=@abs_top_builddir@/module/icp/icp.ko
|
|
export KMOD_ZFS=@abs_top_builddir@/module/zfs/zfs.ko
|
|
export KMOD_FREEBSD=@abs_top_builddir@/module/openzfs.ko
|
|
export KMOD_ZZSTD=@abs_top_builddir@/module/zstd/zzstd.ko
|
|
endef
|
|
|
|
export EXTRA_ENVIRONMENT
|
|
|
|
all-local:
|
|
-$(SED) -e '\|^export BIN_DIR=|s|$$|@abs_top_builddir@/bin|' \
|
|
-e '\|^export SBIN_DIR=|s|$$|@abs_top_builddir@/bin|' \
|
|
-e '\|^export ZTS_DIR=|s|$$|@abs_top_srcdir@/tests|' \
|
|
-e '\|^export SCRIPT_DIR=|s|$$|@abs_top_srcdir@/scripts|' \
|
|
$(abs_top_srcdir)/scripts/common.sh.in >common.sh
|
|
-echo "$$EXTRA_ENVIRONMENT" >>common.sh
|
|
|
|
clean-local:
|
|
-$(RM) common.sh
|
|
|
|
install-data-hook:
|
|
-$(SED) -e '\|^export BIN_DIR=|s|$$|@bindir@|' \
|
|
-e '\|^export SBIN_DIR=|s|$$|@sbindir@|' \
|
|
-e '\|^export ZTS_DIR=|s|$$|@datadir@/@PACKAGE@|' \
|
|
-e '\|^export SCRIPT_DIR=|s|$$|@datadir@/@PACKAGE@|' \
|
|
$(abs_top_srcdir)/scripts/common.sh.in \
|
|
>$(DESTDIR)$(datadir)/@PACKAGE@/common.sh
|