From 0bd652e219bfc4fe397e09cc52ca20fa42950965 Mon Sep 17 00:00:00 2001 From: kneutron <50146127+kneutron@users.noreply.github.com> Date: Mon, 19 Jul 2021 08:44:25 -0500 Subject: [PATCH] Add files via upload --- ZFS/iscsi-server-config.tar | Bin 0 -> 61440 bytes ZFS/iscsi-vm-configs.tar | Bin 0 -> 51200 bytes ZFS/run-qemu.sh | 54 +++++++++ ZFS/ssh-into-qemu-vm.sh | 4 + ZFS/zfs-mk-draid-qemu-24d.sh | 206 +++++++++++++++++++++++++++++++++++ 5 files changed, 264 insertions(+) create mode 100644 ZFS/iscsi-server-config.tar create mode 100644 ZFS/iscsi-vm-configs.tar create mode 100644 ZFS/run-qemu.sh create mode 100644 ZFS/ssh-into-qemu-vm.sh create mode 100644 ZFS/zfs-mk-draid-qemu-24d.sh diff --git a/ZFS/iscsi-server-config.tar b/ZFS/iscsi-server-config.tar new file mode 100644 index 0000000000000000000000000000000000000000..76f46702241b0b8b716a4db26a01c37218f33bfe GIT binary patch literal 61440 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 literal 0 HcmV?d00001 diff --git a/ZFS/iscsi-vm-configs.tar b/ZFS/iscsi-vm-configs.tar new file mode 100644 index 0000000000000000000000000000000000000000..058b6e4b983c3dbe9966719a8f469a5299522bd9 GIT binary patch literal 51200 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 literal 0 HcmV?d00001 diff --git a/ZFS/run-qemu.sh b/ZFS/run-qemu.sh new file mode 100644 index 0000000..3c18da0 --- /dev/null +++ b/ZFS/run-qemu.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# NOTE Ctrl+Alt+G to ungrab maus +# REF: https://qemu-project.gitlab.io/qemu/system/images.html#disk-images + +# bash if not +if [ ! -e zfsfile01.raw.img ]; then + echo "$(date) - Creating disks" + for disk in $(seq -w 1 26); do + time qemu-img create -f raw zfsfile$disk.raw.img 4G + done +fi + +# Provides port forward to ssh into guest +# 2xcpu, 8GB RAM, dvd mounted to copy data to DRAID pool instead of using network +# REQUIRES test-zfs-21-Draid-sata0-0.vdi vdisk to boot from! +qemu-system-x86_64 \ + test-zfs-21-Draid-sata0-0.vdi \ + -smp cpus=2, \ + -m 8G, \ + -cdrom /zmsata480/shrcompr/udfisos.iso \ + -display gtk,gl=on \ + -vga vmware \ + -netdev user,id=eth0,ipv6=off,net=10.1.0.0/8,hostfwd=tcp::32222-:22 \ + -device e1000,netdev=eth0,mac=52:54:58:76:54:32 \ + -drive file=zfsfile01.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile02.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile03.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile04.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile05.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile06.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile07.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile08.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile09.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile10.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile11.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile12.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile13.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile14.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile15.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile16.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile17.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile18.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile19.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile20.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile21.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile22.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile23.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile24.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile25.raw.img,format=raw,if=virtio,media=disk,cache=writeback \ + -drive file=zfsfile26.raw.img,format=raw,if=virtio,media=disk,cache=writeback + +# ssh localhost -p 32222 ## ssh to vm +# Difficulty: virtio drives have no disk/by-path and are vda..vdz diff --git a/ZFS/ssh-into-qemu-vm.sh b/ZFS/ssh-into-qemu-vm.sh new file mode 100644 index 0000000..da71ffa --- /dev/null +++ b/ZFS/ssh-into-qemu-vm.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# portfwd to squid on pi; run-qemu is listening for ssh on 32222 +ssh -2 -C -Y -oTCPKeepAlive=yes -g -R 3128:10.1.0.4:3128 -l user localhost -p 32222 diff --git a/ZFS/zfs-mk-draid-qemu-24d.sh b/ZFS/zfs-mk-draid-qemu-24d.sh new file mode 100644 index 0000000..27dab3a --- /dev/null +++ b/ZFS/zfs-mk-draid-qemu-24d.sh @@ -0,0 +1,206 @@ +#!/bin/bash + +# Use this for 1-offs under 32 disks +echo "$0 - 2021 Dave Bechtel - make a ZFS DRAID pool" +echo "- pass arg1='reset' to destroy test pool" +echo "- pass arg1='fail' and arg2=dev2fail to simulate failure" +echo "Reboot to clear simulated device failures before issuing reset" + +# Requires at least zfs 2.1.0 +DD=/dev/disk +#DBI=/dev/disk/by-id + +# total disks for pool / children +td=24 + +# raidz level - usually 2 +rzl=1 + +# spares +spr=1 + +# TODO EDITME +zp=zdraidtest + +function zps () { + zpool status -v |awk 'NF>0' +} + +pooldisks1=$(echo /dev/vda /dev/vdb) # 2 +pooldisks2=$(echo /dev/vdc /dev/vdd) +pooldisks3=$(echo /dev/vde /dev/vdf) # 6 +pooldisks4=$(echo /dev/vdg /dev/vdh) +pooldisks5=$(echo /dev/vdi /dev/vdj) #10 +pooldisks6=$(echo /dev/vdk /dev/vdl) +pooldisks7=$(echo /dev/vdm /dev/vdn) #14 +pooldisks8=$(echo /dev/vdo /dev/vdp) +pooldisks9=$(echo /dev/vdq /dev/vdr) #18 +pooldisksA=$(echo /dev/vds /dev/vdt) +pooldisksB=$(echo /dev/vdu /dev/vdv) #22 +pooldisksC=$(echo /dev/vdw /dev/vdx) + +pooldisks=$(echo /dev/vd{a..x}) # y,z=spare +# sdb sdc sdd sde sdf sdg sdh sdi sdj sdk sdl sdm sdn sdo sdp sdq sdr sds sdt sdu sdv sdw sdx sdy + +# extending to 32 disks +#pooldisks2=$(echo /dev/sda{a..h}) +#sdaa sdab sdac sdad sdae sdaf sdag sdah + +# failexit.mrg +function failexit () { + echo '! Something failed! Code: '"$1 $2" # code # (and optional description) + exit $1 +} + +# cre8 drive translation table - NOTE 32 disk config gets overridden vv +source ~/bin/boojum/draid-pooldisks-assoc.sh $td + +declare -a hotspares # regular indexed array +hotspares=(vdx vdz) # sday sdaz sdby sdbz sdcy sdcz) + + +# Flame the pool and start over from 0 +if [ "$1" = "reset" ]; then + logger "$(date) - $0 - RESET issued - destroying $zp" + +# no need to worry if its not imported / already destroyed + if [ $(zpool list |grep -c $zp) -gt 0 ]; then + zpool destroy $zp || failexit 999 "Failed to destroy $zp" + fi + + for d in $pooldisks; do + echo -e -n "o Clearing label for disk $d \r" + zpool labelclear -f "$d"1 + done + echo '' +# also reset hotspares +# echo ${hotspares[@]} +# zpool status -v |egrep 'sdz|sday|sdaz|sdby|sdbz|sdcy|sdcz' + for d in ${hotspares[@]}; do +#echo $d # DEBUG + echo -e -n "o Clearing label for Hotspare disk $d \r" + zpool labelclear -f "/dev/$d"1 + done + echo '' + + zpool status -v + + exit; # early +fi + +# Simulate a drive failure; if zed daemon is running, a spare should auto kick in +if [ "$1" = "fail" ]; then +# NOTE we do NO error checking here, so if you fail your ROOT DISK, THAT'S ON YOU! + +# also cp syslog + echo "$(date) - $0 - Simulating disk failure for $2 $(ls -lR $DD |grep $2)" |tee |logger + echo offline > /sys/block/$2/device/state + cat /sys/block/$2/device/state |tee |logger + + time dd if=/dev/urandom of=/$zp/^^tmpfileDELME bs=1M count=$td; sync + # force a write; if not work, try scrub + + zps + + exit; # early +fi + +# zpool create draid[][:d][:c][:s] +# ex: draid2:4d:1s:11c +# -o ashift=12 + +# TODO EDITME +iteration=OBM +#iteration=1 +if [ "$iteration" = "1" ]; then +# raidz level (usually 2) + rzl=1 +# Vspares - you DON'T want to skimp! + spr=2 +( set -x +time zpool create -o autoreplace=on -o autoexpand=on -O atime=off -O compression=lz4 \ + $zp \ + draid$rzl:8d:12'c':$spr's' $pooldisks1 $pooldisks2 $pooldisks3 $pooldisks4 $pooldisks5 $pooldisks6 \ + draid$rzl:8d:12'c':$spr's' $pooldisks7 $pooldisks8 $pooldisks9 $pooldisksA $pooldisksB $pooldisksC \ +|| failexit 101 "Failed to create DRAID" +) +elif [ "$iteration" = "2" ]; then +# td=16 +# raidz level (usually 2) + rzl=2 +# Vspares - if youre using DRAID then you want at least 1! + spr=2 +# b c d e f g h i j k l m n o p q r s t u v w x y z=spare +# 1 2 3 4 5 6 7 8 9 10 1112131415161718192021222324 25 +( set -x +time zpool create -o autoreplace=on -o autoexpand=on -O atime=off -O compression=lz4 \ + $zp \ + draid$rzl:8d:12'c':$spr's' $pooldisks1 $pooldisks2 $pooldisks3 $pooldisks4 $pooldisks5 $pooldisks6 \ + draid$rzl:8d:12'c':$spr's' $pooldisks7 $pooldisks8 $pooldisks9 $pooldisksA $pooldisksB $pooldisksC \ +|| failexit 101 "Failed to create DRAID" +) +else +# One Big Mother + spr=2 +( set -x +time zpool create -o autoreplace=on -o autoexpand=on -O atime=off -O compression=lz4 \ + $zp \ + draid$rzl:8d:$td'c':$spr's' $pooldisks \ +|| failexit 101 "Failed to create DRAID" +) +fi + +rc=$? +[ $rc -gt 0 ] && exit $rc +# ^ Need this check because of subshell, will not exit early otherwise + +# [ $(zpool list |grep -c "no pools") -eq 0 ] && \ +# zpool add $zp spare ${hotspares[@]} +# zpool add $zp spare sdz sday sdaz + +# cre8 datasets +# requires external script in the same PATH +# going with lz4 so not limited by CPU for compression +zfs-newds.sh 11 $zp shrcompr +zfs-newds.sh 10 $zp notshrcompr +zfs-newds-zstd.sh 10 $zp notshrcompr-zstd +zfs-newds.sh 00 $zp notshrnotcompr + +$zps # zpool status -v |awk 'NF>0' +zpool list +zfs list + +df -hT |egrep 'ilesystem|zfs' + +#echo "NOTE - best practice is to export the pool and # zpool import -a -d $DBI" + +date +exit; + + +# REFS: +https://openzfs.github.io/openzfs-docs/Basic%20Concepts/dRAID%20Howto.html + +https://www.reddit.com/r/zfs/comments/lnoh7v/im_trying_to_understand_how_draid_works_but_im/ + +https://insider-voice.com/a-deep-dive-into-the-new-openzfs-2-1-distributed-raid-topology/ + +https://docs.google.com/presentation/d/1uo0nBfY84HIhEqGWEx-Tbm8fPbJKtIP3ICo4toOPcJo/edit#slide=id.g9d6b9fd59f_0_27 + +Group size must divide evenly into draid size +E.g., 30 drives can only support +3 drive group +5 drive group +10 drive group +15 drive group + +Only need to specify group size at creation + +Group Size - the number of pieces the data is partitioned into plus the amount of parity +o The amount of parity determines the redundancy +o The number of data pieces determines the overhead + +dRAID Size - the number of drives used for data +(Does not include spare drives) + +-----