Per coloro che si imbattono in questa domanda nel 2016 ... Usa ext4. Ho provato btrfs e la differenza è sostanziale. In un periodo di 10 giorni scrivere IO su ext4 ammonta a 17.800 settori. Btrfs? 490.400 settori. Stesso SSD, file system identico, partizioni diverse. Fondamentalmente, stesso carico di lavoro.
Sia ext4 che btrfs diventano "silenziosi" quando non vi è alcuna attività di scrittura sull'unità. Quello è buono.
Ext4 scriverà i dati modificati, oltre ad alcune spese generali. Le spese generali si riferiscono ai dati scritti. Una scrittura 4K (1 blocco) spinge circa 50-80 blocchi di overhead al prossimo commit. (Il journal ext4 è completamente abilitato)
Modifica un singolo blocco 4K su btrfs e al prossimo commit passerai tra 4000-5000 blocchi di overhead. Il commit predefinito è di 30 secondi, credo. Ho usato 120.
Ora dipende da come usi l'SSD. Come root, c'è in genere un flusso abbastanza costante di basso livello di scritture in corso. File di registro, file di deriva ntp, ricostruzioni man db, aggiornamenti di topologia opensm, ecc. Ecc. Ogni evento martellerà un'unità btrfs con altre 4000-5000 scritture.
I numeri di 10 giorni sopra indicati sono per il mio SSD "write limited". La maggior parte di questi 17.800 settori erano il risultato di un aggiornamento del sistema di piccole dimensioni. Uno della copia di btrfs non ha sofferto. I miei scrittori sono, esattamente, ntp drift, opensm topology e man db updates (nightly). Nient'altro colpisce quel disco, tranne cose avviate attivamente come aggiornamenti di sistema vim /etc/whatever
, ecc.
Nel complesso, gli SSD subiranno molte scritture, davvero. Non riesco proprio a capire il motivo di sprecarli solo perché i media stanno inseguendo coniglietti e arcobaleni. Se vuoi pagare questo prezzo per COW, provalo. Per "performance", non tanto. È un SSD e probabilmente potresti mettere il peggior "file system" conosciuto dall'uomo su di esso, e ottenere comunque un certo livello di prestazioni - solo con la forza bruta. Ext4 non è di gran lunga il peggior file system conosciuto dall'uomo.
Nessun controllo mensile fs. Prova lo script qui sotto. È un hack al 100%, non funzionerà con mountpoint md,
#! /bin/bash
dev=`cat /proc/mounts | grep " $1 " | awk '{print $1}'`
x=`basename $dev`
vmnam=`lsblk $dev -o MOUNTPOINT,PKNAME | grep "$1" | awk '{print $2}'`
vmx=`vmstat -d | grep $vmnam | awk '{print $8}'`
lbax=`smartctl -a $dev | grep LBA | awk '{print $10}'`
tmpnam=`mktemp XXX`
echo "Tracking device: $dev, mounted on $1 (vmstat on $vmnam)"
tim=`date +%s`
timx=`date +%s`
while true
do
vm=`vmstat -d | grep "$vmnam" | awk '{print $8}'`
lba=`smartctl -a $dev | grep LBA | awk '{print $10}'`
if [ "$vm" != "$vmx" ]
then
tim=`date +%s`
dif=`dc <<< "$vm $vmx - p"`
lbad=`dc <<< "$lba $lbax - p"`
timd=`dc <<< "$tim $timx - p"`
echo `date` " (sec=$timd) writes=$vm (dif=$dif) (lba=$lbad)"
vmx="$vm"
lbax="$lba"
timx="$tim"
find "$1" -mount -newer "$tmpnam" -print | grep -v "/tmp"
touch "$tmpnam"
fi
sleep 1
done
Ti dirà quanti blocchi sono stati scritti, in base all'unità stessa, ed esattamente quali file sono stati aggiornati. Ha bisogno di privilegi di root. Guarda tu stesso. Corro SSD sul filesystem di root e chiamo lo script stat.sh. Così...sudo ./stat.sh /