对于我办公室机器的 Ubuntu 11.10(Oneiric)amd64 桌面根分区的 SSD,我应该使用 btrfs(带有 discard、compress=lzo 和 space_cache 选项)还是 Ext4(带有 discard 选项)?
/home 将是一块 HDD,因此 fs 可靠性会影响操作系统而不是我的数据。
答案1
答案2
对于那些在 2016 年遇到这个问题的人来说...使用 ext4。我尝试了 btrfs,差异很大。在 10 天的时间内,写入 ext4 的 IO 达到 17,800 个扇区。Btrfs?490,400 个扇区。相同的 SSD,相同的文件系统,不同的分区。基本上,相同的工作负载。
当驱动器上没有写入活动时,ext4 和 btrfs 都会变得“安静”。这很好。
Ext4 将写入修改后的数据,外加一些开销。开销与写入的数据有关。4K 写入(1 个块)在下次提交时会产生大约 50-80 个块的开销。(ext4 日志已完全启用)
修改 btrfs 上的单个 4K 块,您将在下一次提交时推送 4000-5000 个块的开销。我相信默认提交是 30 秒。我使用了 120 秒。
现在,这取决于您如何使用 SSD。作为 root,通常会有一个相当稳定、低水平的写入流。日志文件、ntp 漂移文件、man db 重建、opensm 拓扑更新等。每个事件都会对 btrfs 驱动器进行另外 4000-5000 次写入。
上面的 10 天数字适用于我的“写入受限”SSD。这 17,800 个扇区中的大部分是小型系统更新的结果。其中一个 btrfs 副本没有受到影响。我的写入器正是 ntp 漂移、opensm 拓扑和 man db 更新(每晚)。除了主动启动的系统升级等之外,没有其他任何东西会访问该磁盘vim /etc/whatever
。
总体而言,SSD 确实会遭受大量写入。我只是不明白,为什么新闻媒体会因为追求美好的事物而浪费它们。如果您愿意为 COW 付出这个代价,那就去做吧。至于“性能”,就没那么重要了。这是一个 SSD,您可能可以在其上安装人类已知的最差的“文件系统”,并且仍能获得一定程度的性能 - 只需通过蛮力即可。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 /
答案3
上次我测试的时候,我还没有听到任何不同的说法,ext4吃固态介质。(拇指驱动器、固态驱动器等)我不建议在这样的设备上使用它。改用 ext3。在大多数情况下,在 SSD 上你无论如何都无法分辨出区别。
BTRFS 还不够稳定。但是,对于非关键应用程序来说,它已经足够稳定了。我用它来制作可启动闪存驱动器。如果您使用 compress=zlib 和 ssd 作为挂载选项,压缩将弥补大多数固态介质较低的写入速度,而 ssd 会将分配算法更改为在此类设备上表现更好的算法,并弥补硬件的任何较差的磨损均衡。仍然存在问题的一个性能领域是同步调用很慢。这对于一般用途来说不是问题,但 dpkg 会在每次操作后调用同步,因此安装和更新软件可能会很慢。BTRFS 还提供快照和其他高级功能,在某些情况下非常有用。
如果您决定使用 BTRFS,请确保使用内核为 3.2.0-2 或更高版本的发行版。如有必要,3.1.x 也是可行的。对于较旧的内核,您需要自己编译最新的 BTRFS 模块。内置的模块几乎是稳定的,但错误更正功能在较旧的版本中不起作用,如果出现问题,这可能会让您陷入困境。最新版本有 fsck,可以修复最常见的故障。
最后要提醒的是,我听说 BTRFS 文件系统上的交换文件会损坏它。这个问题可能已经修复了,但在实施之前一定要仔细检查。
如果您需要任何帮助来按照自己想要的方式配置 BTRFS 设置,请告诉我。我做过几个疯狂的配置,它们对于特定的事情来说效果相当好。
答案4
根据传闻证据和我自己的经验,我不会在固态硬盘上使用 ext4,因为 ext4 会大大缩短 SSD 的使用寿命,因为与文件系统相关的读写次数较多。我最近读到的一篇文章指出,SSD 上未优化的 ext4(考虑到页面大小等)会使磁盘寿命减半。经过一周的故障排除,我得出的结论是,由于这个问题,我自己的 SSD 只使用了 8 个月。如果您使用 SSD,请大量阅读有关如何基于闪存页面大小等因素优化文件系统的资料,这些因素可能与文件系统设置的典型柱面大小不同。