Answers:
根据phoronix的测试,它始终取决于许多因素。在某种情况下,Btrfs
它比EXT4
在SSD上读取大文件时要好得多。同样,在考虑磁盘事务性能时,Ext4
可以比以后更好地执行。
但总而言之,即使在SSD模式下使用Btrfs,目前也没有EXT4文件系统在数量上的性能优势。
因此,您Ext4
现在可以选择。
对于2016年在这个问题上遇到困难的人...使用ext4。我尝试了btrfs,差异很大。在10天的时间里,对ext4的IO写入总数为17,800个扇区。Btrfs?490,400个部门。相同的SSD,相同的文件系统,不同的分区。基本上,相同的工作量。
当驱动器上的写入活动为零时,ext4和btrfs都“安静”。那很好。
Ext4将写入修改后的数据,以及一些开销。开销与写入的数据有关。4K写操作(1个块)在下一次提交时会产生大约50-80个块的开销。(ext4 Journal已完全启用)
修改btrfs上的单个4K块,在下一次提交时将推入4000-5000个开销块。我相信默认提交时间是30秒。我用了120
现在,这取决于您如何使用SSD。作为根,通常会有相当恒定的低级别写入流在进行。日志文件,ntp漂移文件,man db重建,opensm拓扑更新等,每个事件都会使btrfs驱动器产生4000-5000次写操作。
上面的10天数字是针对我的“写限制” SSD。在这17,800个行业中,大部分是系统更新较小的结果。一个btrfs副本没有受到影响。我的作者正是ntp漂移,opensm拓扑和man db更新(每晚)。除了主动启动的东西(例如系统升级vim /etc/whatever
等)外,其他任何东西都不会击中该磁盘。
实际上,整个SSD都会遭受大量写入。我只是看不见浪费他们的意思,因为新闻媒体在追逐兔子和彩虹。如果您想为COW支付这个价格,那就去买。对于“性能”,不是很多。它是固态硬盘,您可能会在上面放上人们所知的最糟糕的“文件系统”,并且仍然可以通过蛮力获得某种程度的性能。到目前为止,Ext4并不是最糟糕的文件系统。
没有每月的FS支票。试试下面的脚本。这是100%的骇客,不适用于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
它会告诉您根据驱动器本身写入了多少个块,以及确切地更新了哪些文件。需要root特权。你自己看。我在根文件系统上运行SSD,并调用脚本stat.sh。所以...sudo ./stat.sh /
上次我测试它时,我在任何地方都没有听到不同的声音,ext4 吃固态介质。(拇指驱动器,固态驱动器等),我不建议在这样的设备上使用它。请改用ext3。对于大多数情况下的SSD,无论如何您都无法分辨出差异。
BTRFS尚未十分稳定。但是,它对于非关键应用程序足够稳定。这就是我用来制作可启动闪存驱动器的东西。如果使用compress = zlib和ssd作为安装选项,则压缩将弥补大多数固态介质的较低写入速度,并且ssd会将分配算法更改为在此类设备上性能明显更好的分配算法,并且将弥补硬件的平均磨损程度较差。仍然存在的一个性能问题是同步调用速度很慢。这对于一般使用来说不是问题,但是dpkg在每次操作后都会调用sync,因此安装和更新软件的速度可能会很慢。BTRFS还提供快照和其他高级功能,在某些情况下非常有用。
如果决定使用BTRFS,请确保使用内核3.2.0-2或更高版本的发行版。如果需要,3.1.x是可行的。对于较旧的内核,您需要自己编译最新的BTRFS模块。内置的几乎是稳定的,但是错误校正在较旧的版本中不起作用,如果出现问题,这可能会使您陷入困境。最新版本的fsck实际上可以修复最常见的故障。
最后一个警告,我听说有报道说BTRFS文件系统上的swapfiles将损坏它。这个问题可能已经解决,但是在实施之前一定要仔细检查。
如果您需要任何帮助以所需方式配置BTRFS设置,请告诉我。我做了一些疯狂的事情,在某些特定的事情上表现得很好。
基于轶事证据和我自己的经验,我不会在固态驱动器上使用ext4,因为与文件系统相关的读写次数很多,因此我认为ext4可以大大缩短SSD的寿命。我最近阅读的一篇文章建议,在SSD上未经优化(考虑页面大小等)的ext4可以将磁盘寿命缩短一半。经过一周的故障排除后,我得出的结论是,由于此问题,我自己的SSD仅能使用八个月。如果您使用SSD,请大量阅读有关如何基于闪存页面大小之类的文件来优化文件系统的知识,这些内容可能与设置文件系统的典型柱面大小不同。