2016'da bu soruya rastlayanlar için ... ext4 kullanın. Ben btrfs denedim ve fark önemli. 10 günlük bir süre içinde ext4'e IO'lar yazın 17.800 sektör. Btrfs? 490.400 sektör. Aynı SSD, özdeş dosya sistemi, farklı bölümler. Temel olarak, aynı iş yükü.
Sürücüde sıfır yazma etkinliği olduğunda hem ext4 hem de btrfs "sessiz" olur. Bu iyi.
Ext4 değiştirilen verileri ve bazı ek yükleri yazar. Genel gider, yazılan verilerle ilgilidir. 4K yazma (1 blok) bir sonraki işlemde yaklaşık 50-80 blok ek yükü iter. (Ext4 Journal tamamen etkindir)
Btrfs üzerinde tek bir 4K bloğu değiştirin ve bir sonraki işlemde 4000-5000 blok ek yükü itin. Varsayılan taahhüt 30 saniye, sanırım. 120 kullandım.
Şimdi, SSD'yi nasıl kullandığınıza bağlı. Kök olarak, genellikle oldukça sabit, düşük seviyeli bir yazma akışı vardır. Günlük dosyaları, ntp drift dosyaları, man db yeniden oluşturma, opensm topoloji güncellemeleri, vb.
Yukarıdaki 10 günlük sayılar "yazma sınırlı" SSD'm içindir. Bu 17.800 sektörün büyük bir kısmı ufacık bir sistem güncellemesinin sonucuydu. Biri btrfs kopyası acı çekmedi. Yazarlarım tam olarak ntp drift, opensm topolojisi ve man db güncellemeleri (her gece). Sistem yükseltmeleri vim /etc/whatever
vb. Gibi aktif olarak başlatılanlar dışında başka hiçbir şey bu diske vurmaz .
Genel olarak, SSD'ler gerçekten çok sayıda yazıya maruz kalacak. Onları boşa harcamanın nedenini göremiyorum, çünkü haber medyası tavşanları ve gökkuşağıları takip ediyor. COW için bu fiyatı ödemek istiyorsanız, bunun için gidin. "Performans" için çok fazla değil. Bu bir SSD ve muhtemelen insan tarafından bilinen en kötü "dosya sistemini" koyabilir ve yine de kaba bir güçle bir miktar performans elde edebilirsiniz. Ext4, insanoğlunun bildiği en kötü dosya sistemi değil.
Aylık fs kontrolü yok. Aşağıdaki komut dosyasını deneyin. % 100 kesmek, md montaj noktaları için çalışmaz,
#! /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
Sürücünün kendisine göre kaç blok yazıldığını ve tam olarak hangi dosyaların güncellendiğini söyleyecektir. Root privs gerekir. Kendin için gör. Kök dosya sisteminde SSD çalıştırıyorum ve stat.sh komut dosyasını çağırıyorum. Yani...sudo ./stat.sh /