Project

General

Profile

action #41459 ยป btrfs_stress.sh

szarate, 2019-01-24 08:54

 
#!/bin/bash
set -x
set -e
mkdir /srv/tests || true
export DEST=$(mktemp -d -t BTRFS-XXX -p /srv/tests)
export MOCK="/srv/btrfs-testing"
export DISK="/dev/vdb1"

echo "DEST"

#stress-ng --class io --sequential 0 --hdd 1 | awk '{print $5}'
sync
(umount $DISK )|| true
sync
echo mkfs.btrfs -f $DISK && mount $DISK $DEST
mount -o bind $DEST $MOCK;

cd $MOCK
btrfs quota enable $MOCK

for i in btrfs{-balance,-scrub,-trim}; do echo "Triggering systemd timed service $i" && systemctl start $i.service && echo not masking :systemctl mask $i.{service,timer}; done;

ls -l $MOCK
echo "DEST is $MOCK"
for c in {e..h}; do btrfs subvolume create $MOCK/$c; done;
echo "We are in $MOCK"

# Fill with data
for c in {1..4}; do dd if=/dev/urandom bs=1M count=250 of=e/file$c; done;
for c in {1..4}; do dd if=/dev/urandom bs=1M count=250 of=f/file$c; done;
for c in {1..20}; do dd if=/dev/urandom bs=1M count=250 of=g/file$c; done;
for c in {1..15}; do dd if=/dev/urandom bs=1M count=250 of=h/file$c; done;

time sync

git config --global user.name "Santiago Zarate"
git config --global user.email santiago@zarate.co
git clone --depth 1 https://github.com/torvalds/linux.git /root/linux.git

snapper create --command 'for dir in {a..d}; do git clone --depth 1 /root/linux.git /srv/btrfs-testing/$(date | base64| sed s/=//)_linux; done;' --description "Before and after COMMAND"

snapper list

btrfs subvolume snapshot e z;
btrfs subvolume snapshot f y;
btrfs subvolume snapshot g x;
btrfs subvolume snapshot h w;

snapper list

time sync
# Remove data in original subvolume
rm {e,f,g,h}/file*;

# Re-fill original subvolumes
for c in {1..4}; do dd if=/dev/urandom bs=1M count=1024 of=e/file$c; done;
for c in {1..4}; do dd if=/dev/urandom bs=1M count=512 of=f/file$c; done;
for c in {1..20}; do dd if=/dev/urandom bs=1M count=128 of=g/file$c; done;
for c in {1..15}; do dd if=/dev/urandom bs=1M count=256 of=h/file$c; done;

# Remove original data in original subvolume
rm {e,f,g,h}/file*;

#for c in {a..d}; do btrfs subvolume delete $c; done;

sync;
snapper list
for c in {w..z}; do btrfs subvolume delete $MOCK/$c; done;
for c in {e..h}; do btrfs subvolume delete $MOCK/$c; done;
sync
for i in btrfs{-balance,-scrub,-trim}; do echo "Triggering systemd timed service $i" && systemctl start $i.service && echo not masking :systemctl mask $i.{service,timer}; done;
umount $MOCK
umount $DEST
    (1-1/1)