#!/bin/bash set -e function get_random() { local number=0 while [ "$number" -le 20 ] do number=$RANDOM let "number %= 50" done echo $number } file=$(mktemp -u --tmpdir=. vgfile.XXXX) group=$(mktemp -u testgrp-XXXX) thingroup=$(mktemp -u thingrp-XXXX) mntpath=$(mktemp -d --tmpdir=. mntdir-XXXX) volume_name=$(mktemp -u testvol-XXXX) volume_size=200M truncate ${file} --size 10G loopdev=$(losetup -f --show ${file}) pvcreate --metadatasize 1M ${loopdev} vgcreate ${group} -s 1MiB ${loopdev} pe_size=$(vgdisplay "/dev/${group}" | grep 'PE Size' | awk '{print $3}') thin_size=$(echo "$(vgdisplay "/dev/${group}" | grep 'Free PE' | awk '{print $5}')*${pe_size}-180" | bc -l) lvcreate --ignoreactivationskip -Z n -L ${thin_size}M -T "/dev/${group}/${thingroup}" lvcreate --ignoreactivationskip -V${volume_size} -T "${group}/${thingroup}" -n "${volume_name}" mkfs.ext4 /dev/$group/$volume_name sync vgchange -Kan $group losetup -d $loopdev echo "Volume created, doing work" for i in {1..10}; do echo "Doing iteration $i" loopdev=$(losetup -f --show ${file}) vgchange -Kay $group if ! mount /dev/$group/$volume_name $mntpath; then echo "kor" exit 1 fi rm -rf $mntpath/* dd if=/dev/urandom of=$mntpath/$(mktemp -u tmpfile.XXXX) bs=$(get_random)M count=1 umount $mntpath vgchange -Kan $group losetup -d $loopdev done