#!/bin/bash -e
vg="tuvg"
file_size=4 # suponiendo que son 4 G
fs_size=6 # suponiendo que el lv tendrá 6 G
log_file=/tmp/vmstat-test.log
declare -A mkfs
mkfs[ext4]="mkfs.ext4 -q"
mkfs[jfs]="mkfs.jfs -q"
mkfs[xfs]="mkfs.xfs -q"
mkfs[btrfs]="mkfs.btrfs -f"

# Ya no más variables
for fs in ext4 jfs xfs btrfs;
do
	vmstat 1  > $log_file.$fs 2> /dev/null &
	pid=$!
	echo Sistema de ficheros $fs ... >> $log_file
	mnt="/mnt/tmp/$fs"
	dev="/dev/$vg/$fs"
	mkdir -p $mnt
	echo "Test de fichero $size en $fs ..."
	echo "--------------------------------"
	echo -n "Creando lv ... "
	lvcreate  -L${fs_size}G -n $fs $vg  &> /dev/null
	dd if=/dev/zero of=$dev bs=1M count=4 &> /dev/null
	echo ok
	echo -n "Formateando $dev en $fs ... "
	${mkfs[$fs]} $dev  &> /dev/null
	echo ok
	echo -n "Montando $dev en $mnt ... "
	mount $dev $mnt &> /dev/null
	echo ok
	echo "Creación"
	echo "--------"
	time (fallocate -l $((1024*1024*1024*file_size)) \
	 	$mnt/test  &> /dev/null || 
	dd if=/dev/zero of=$mnt/test bs=1024k \
		count=$((file_size*1024)) &> /dev/null)
	echo "Lectura"
	echo "-------"
	time cat $mnt/test > /dev/null
	echo -n "Limpiando  ($mnt y $dev) ... "
	umount $mnt &> /dev/null
	rmdir $mnt &> /dev/null
	lvremove -f $dev &> /dev/null
	echo ok
	disown $pid
	kill $pid &> /dev/null
done

