[Linux-Biella] Cron log
Jumping Jack
jumpingjack a jumpingjack.org
Dom 21 Ago 2016 21:55:43 CEST
On 21/08/2016 10:30, vallini.daniele a bilug.it wrote:
> Sat, Aug 20, 2016 at 09:33:22PM +0200 Jumping Jack ha scritto:
>
>>> da quale processo proviene l'output?
>> quello che vorrei adesso da vari... echo, date, xfs_fsr, xfs_db
>> altrimenti semplicemente dallo script
> echo, date, xfs_fsr, xfs_db non mi paiono processi, danno un output
> all'esecuzione e fine (xfs pero' lo conosco poco)
>
> Non vedo quindi senso a monitorare in tempo reale, piuttosto ripeti
> periodicamente il comando e leggi il relativo output tipo:
>
> date > file_output; xterm -e less file_output
Ho completato lo script concatenando al contrario, ovvero con la
variabile prima.
Lo script originale faceva una cosa buona ma non troppo.
xfs_fsr senza parametri cerca di deframmentare il 10% tra i file più
frammentati di tutte le partizioni. Si può impostare un limite di tempo
di esecuzione. Alla fine va bene senza saper ne leggere ne scrivere, ma
fa schifo di base.
Così ho preso una idea e l'ho elaborata un po', ora tiene frammentazione
bassa e con le modifiche del log posso anche migliorarala.
Potrebbero esserci errori non ho potuto verificare tutte le condizioni
ovviamente.
"
redirect_cmd () {
if [ -f /root/chkxfsfrag.log.on ]
then
$@ >> /var/log/chkxfsfrag.log 2>&1
else
$@
if [ -f /var/log/chkxfsfrag.log ]
then
rm /var/log/chkxfsfrag.log
fi
fi
}
e='/bin/echo -e' # Use the echo command,
not built-in.
xfsfsr=/usr/sbin/xfs_fsr # Set variable with
the path to xfs_fsr.
xfsdb=/usr/sbin/xfs_db # Set variable with
the path to xfs_db.
pctmax=5 # Set maxiumum frag
percent needed for defrag.
pctmax2=20
maxiterations=10
redirect_cmd $e "Start"
redirect_cmd date
array=`df -T|grep xfs|cut -f 1 --delim=" "` # Array of all XFS file
systems.
for i in ${array[@]};
do
percentage=`$xfsdb -c frag -r ${i}|cut -f 7 --delim=" "`
percent2=`$e $percentage|cut -f 1 --delim=.`
if [ "$percent2" -gt "$pctmax" ]
then
redirect_cmd $e "${i} is $percentage fragmented.
Running defragment on ${i}."
redirect_cmd $xfsfsr ${i}
percentage=`$xfsdb -c frag -r ${i}|cut -f 7 --delim=" "`
percent2=`$e $percentage|cut -f 1 --delim=.`
redirect_cmd $e "${i} is $percentage fragmented after
execution."
redirect_cmd date
count=2
while [ "$percent2" -gt "$pctmax2" ]
do
redirect_cmd $e "Running defragmentation #${count}
on ${i}."
redirect_cmd $xfsfsr ${i}
percentage=`$xfsdb -c frag -r ${i}|cut -f 7
--delim=" "`
percent2=`$e $percentage|cut -f 1 --delim=.`
redirect_cmd $e "${i} is $percentage fragmented
after ${count} executions."
redirect_cmd date
let count+=1
if [ "$count" -gt "$maxiterations" ]
then
break
fi
done
if [ "$percent2" -gt "$pctmax" ]
then
redirect_cmd $e "Running final defragmentation on
${i}."
redirect_cmd $xfsfsr ${i}
percentage=`$xfsdb -c frag -r ${i}|cut -f 7
--delim=" "`
redirect_cmd $e "${i} is $percentage fragmented
after ${count} executions."
redirect_cmd date
fi
else
redirect_cmd $e "${i}\t$percentage is not above
fragmentation threshold of $pctmax."
fi
done
exit 0
"
PS: xfs come btrfs devono essere frammentati, ma si può fare online e
sono di gran lunga più funzionali dei vari ext. Poi ho provato anche
altro (non per poco, per mesi) ma non ricordo. Un test era non lasciare
il server sotto ups, qui ogni tanto salta la corrente, e se succedeva
qualcosa FS=cacca. :)
Maggiori informazioni sulla lista
Linux