Added new script to help clear ZFS labels from a disk
authorAlan J. Pippin <ajp@pippins.net>
Sun, 8 Jan 2023 17:19:58 +0000 (10:19 -0700)
committerAlan J. Pippin <ajp@pippins.net>
Sun, 8 Jan 2023 17:19:58 +0000 (10:19 -0700)
Change-Id: I0eea1cafb1f8ab4405809ee7156ce120a1927ae6

zfs-labelclear [new file with mode: 0755]

diff --git a/zfs-labelclear b/zfs-labelclear
new file mode 100755 (executable)
index 0000000..a1f07b4
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/bash
+# Wipes the ZFS labels off of a disk
+# The metadata of zfs is stored in the first and last two 256kB of each disk involved in zfs.
+
+DISK=$1
+
+if [[ -z "$1" ]]; then
+  echo "Usage: $0 <disk>"
+  exit 1
+fi
+
+# List the labels
+echo "-> About to clear these labels off of this disk: $DISK" 
+lsblk --output NAME,FSTYPE,MODEL,LABEL,PTTYPE,SIZE -e 7 "$DISK"
+echo "-> Are you sure you want to continue? (y/n)"
+read input && if [ "$input" != "y" ]; then exit 1; fi
+
+# Wipe all partitions
+sudo sgdisk -Z "$DISK"
+
+# Wipe the metadata off the front of the disk
+sudo dd if=/dev/zero of="$DISK" count=1 bs=512k
+
+# Wipe the metadata off the back of the disk
+sudo dd if=/dev/zero of="$DISK" seek=$(( $(blockdev --getsz "$DISK") - ( ( 256 * 1024 * 2) / $(blockdev --getpbsz "$DISK") ) ))
+
+# List the labels
+echo "-> Labels now on the disk"
+lsblk --output NAME,FSTYPE,MODEL,LABEL,PTTYPE,SIZE -e 7 "$DISK"