From 64f640ba94a15ac92135ce31595814424c62edfa Mon Sep 17 00:00:00 2001 From: kneutron <50146127+kneutron@users.noreply.github.com> Date: Sun, 11 Jul 2021 14:37:22 -0500 Subject: [PATCH] Add files via upload --- ZFS/zfs-drive-slicer.sh | 62 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 ZFS/zfs-drive-slicer.sh diff --git a/ZFS/zfs-drive-slicer.sh b/ZFS/zfs-drive-slicer.sh new file mode 100644 index 0000000..84040a4 --- /dev/null +++ b/ZFS/zfs-drive-slicer.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +# 2021 Dave Bechtel +# Get me a set of disks for DRAID +# DONE [b..y] a[a..x] get slices of X disks and be able to verify with wc -w + +# REF: https://tldp.org/LDP/abs/html/arrays.html +# regular array - STARTS AT 0 +declare -a fullset=(sd{b..y} sda{a..x} sdb{a..x} sdc{a..x}) # Total 96, excluding spares +# sdz, sday sdaz, sdby sdbz, sdcy sdcz == Reserved for spares (7) + +# integer +declare -i howmany sliceby idx x + +function slice () { + howmany=$1 + sliceby=$2 + idx=0 + for x in $(seq 0 1 $howmany); do + [ $x -ge $howmany ] && break + + let idx=$idx+1 + +# echo -n "${fullset[$idx]} " + printf "${fullset[$x]} " # no newline + + if [ $idx -ge $sliceby ]; then + echo ' \' + idx=0 + fi + done +echo '' +} + +if [ "$1" = "" ]; then +# Demo +# copypasta not-including the '\' and verify with: echo '[paste]' |wc -w + slice 72 72 + echo '===== ^^ 72 / 72' + + slice 72 36 + echo '===== ^^ 72 / 36' + + slice 72 24 + echo '===== ^^ 72 / 24' +# = sd{b..y} sda{a..l} \ +#sda{m..x} sdb{a..x} +exit; # early +fi + +# Basic sanity +if [ "$1" -lt "$2" ]; then + echo "$0 - Failed sanity check, \$2 must be greater than \$1" + exit 999; # Somebody call Scotland Yard, we have a violation +fi + +slice $1 $2 + +# This is a decent method because we can give it arbitrary numbers of disks (up to total defined) +# and divide as needed; try 26 2, 24 2, 32 4, 32 8 +# NOTE all output lines should have the same length - if you dont you wont have a balanced set of disks +# e.g. 32 6 = invalid config (32 4 = valid) but we just give you output - sanity checks are up 2U