Dla tych, którzy natkną się na to pytanie w 2016 roku ... Użyj ext4. Próbowałem btrfs i różnica jest znacząca. W ciągu 10 dni zapisywanie operacji we / wy na ext4 wyniosło 17 800 sektorów. Btrfs? 490 400 sektorów. Ten sam dysk SSD, identyczny system plików, różne partycje. Zasadniczo to samo obciążenie pracą.
Zarówno ext4, jak i btrfs „cicho”, gdy na dysku jest zero operacji zapisu. Dobre.
Ext4 zapisze zmodyfikowane dane plus pewne koszty ogólne. Koszty ogólne dotyczą zapisanych danych. Zapis 4K (1 blok) przesuwa około 50-80 bloków narzutu przy następnym zatwierdzeniu. (Dziennik ext4 jest w pełni włączony)
Zmodyfikuj pojedynczy blok 4K na btrfs, a przy następnym zatwierdzeniu przepchniesz między 4000-5000 bloków narzutu. Domyślnie zatwierdzenie wynosi 30 sekund. Użyłem 120.
Teraz zależy to od sposobu korzystania z dysku SSD. Jako root istnieje zwykle dość stały, niski poziom strumienia zapisów. Pliki dziennika, pliki driftu ntp, odbudowy man db, aktualizacje topologii opensm itp. Każde zdarzenie spowoduje uszkodzenie dysku btrfs kolejnymi zapisami 4000-5000.
Powyższe 10-dniowe liczby dotyczą mojego dysku SSD z ograniczeniem zapisu. Większość tych 17 800 sektorów była wynikiem niewielkiej aktualizacji systemu. Jedna kopia btrfs nie ucierpiała. Moimi pisarzami są właśnie drift ntp, topologia opensm i aktualizacje man db (co noc). Nic innego nie uderza w ten dysk, z wyjątkiem aktywnie inicjowanych rzeczy, takich jak aktualizacje systemu vim /etc/whatever
itp.
Na całych dyskach SSD będzie naprawdę dużo zapisów. Po prostu nie widzę sensu w ich marnowaniu, ponieważ media podążają za królikami i tęczami. Jeśli chcesz zapłacić tę cenę za COW, idź po nią. Nie chodzi o „wydajność”. Jest to dysk SSD i prawdopodobnie mógłbyś umieścić na nim najgorszy „system plików” znany człowiekowi i nadal uzyskać pewien poziom wydajności - tylko brutalną siłą. Ext4 nie jest zdecydowanie najgorszym znanym systemowi plików.
Brak comiesięcznej kontroli FS. Wypróbuj poniższy skrypt. Jest to 100% włamanie, nie będzie działać dla punktów montowania 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
Powie ci, ile bloków zostało napisanych, zgodnie z samym napędem i dokładnie, które pliki zostały zaktualizowane. Potrzebuje uprawnień roota. Sam zobacz. Uruchomiam SSD na głównym systemie plików i wywołuję skrypt stat.sh. Więc...sudo ./stat.sh /