From 9a0b5d68f6edc7be7804b34c05f20116f059d8ce Mon Sep 17 00:00:00 2001 From: kneutron <50146127+kneutron@users.noreply.github.com> Date: Sat, 16 Apr 2022 18:04:54 -0500 Subject: [PATCH] Add files via upload --- ZFS/zfs-on-optical-disc.sh | 90 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 ZFS/zfs-on-optical-disc.sh diff --git a/ZFS/zfs-on-optical-disc.sh b/ZFS/zfs-on-optical-disc.sh new file mode 100644 index 0000000..d5a0de4 --- /dev/null +++ b/ZFS/zfs-on-optical-disc.sh @@ -0,0 +1,90 @@ +#!/bin/bash5 + +# osx, should adapt easily to linux +# REF: http://girlyngeek.blogspot.com/2014/02/zfs-on-read-only-devices.html +# Having trouble importing zpool on osx from "raw" write w/no containing filesystem, +# decided to switch to UDF filesystem for optical - mount that and import zfs file-based pool + +# failexit.mrg +function failexit () { + echo '! Something failed! Code: '"$1 $2" # code # (and optional description) + exit $1 +} + +userowns=dave # xxx TODO EDITME + +# xxx EDITME +zpfile=zopticalpool +fsize=4400 # MB - for standard DVD+/-R +howmany=1 # for 4.7G DVD+RW + +function mkpool () { + echo "o $PWD - Creating optical zpool of $howmany""x$fsize"" MB" + for z in $(seq 1 $howmany); do + time gdd if=/dev/zero of="$zpfile"_$z bs=1M conv=sparse count=$fsize \ + || failexit 99 "Failed to DD output zpool file $z" + done +} + +# Only if not exist +[ -e "$zpfile"_1 ] || mkpool + +chown -v $userowns $zpfile* + +# xxx EDITME +zp=myzfsdvd +devs=$(echo $PWD/zopticalpool_*) +# -O mountpoint=$HOME/myzfsdvd -O checksum=sha256 \ +# NOTE RAID0 +zpool create -o ashift=11 -o failmode=continue -o autoexpand=off -o autoreplace=off \ + -O checksum=sha256 -O compression=gzip-9 -O dedup=on \ + -O atime=off -O devices=off -O exec=off -O setuid=off \ + $zp $devs \ + || failexit 101 "Failed to create zpool $zp" + +mp=$(zfs get mountpoint $zp |tail -n 1 |awk '{print $3}') +#NAME PROPERTY VALUE SOURCE +#myzfsdvd mountpoint /Volumes/myzfsdvd default +#/Volumes/myzfsdvd + +# osx +[ $(df |grep -c Volumes/$zp) -gt 0 ] && chown -v $userowns /Volumes/$zp +# Linux +[ -e /$zp ] && chown -v $userowns /$zp + +zpool status -v $zp |awk 'NF>0' +ls -al $mp +echo '' +gdf -hT |head -n 1 +gdf -hT |grep $zp + +echo '=====' +echo "To burn to disc, FIRST zpool export $zp" +echo "To re-import $zp -- mount dvd, cd to it, then zpool import -o readonly=on $zp -d \$PWD" + +echo "/Volumes/zfsoptical # zpool import -a -o readonly=on -d \$PWD" > howto-reimport-zpool.txt +cp -v $0 $PWD + +exit; + + +# OSX disc burning REF: https://support.apple.com/guide/mac-help/burn-cds-and-dvds-mchl8addfd95/12.0/mac/12.0 +# to burn dvd on osx from files, better to use "burn" app as it can also Erase RW discs + +# For larger media, e.g. 50GB Bluray, might want to do copies=2 and forgo raidz1 as seeking will slow down I/O + +declare -A ASsector # assoc array + +ASsector[74min]=333000 # for 74-min CD-Rs and CD-RWs / 650MB +ASsector[80min]=360000 # for 80-min CD-Rs and CD-RWs / 700MB +ASsector[dvd]=2298496 # for single-layer DVD-Rs +ASsector[dvddouble]=4171712 # for double-layer DVD-Rs +ASsector[dvdplusr]=2295104 # for single-layer DVD+Rs +ASsector[dvdplusr2]=4173824 # for double-layer DVD+Rs +ASsector[bluray]=12219392 # for single-layer Blu-rays +ASsector[bluray2]=24438784 # for double-layer Blu-rays +ASsector[bluray3]=48878592 # for triple-layer Blu-rays +ASsector[bluray4]=62500864 # for quad-layer Blu-rays + +usesector=${ASsector[dvdplusr]} +#echo $usesector