近期我更换了我的群晖 NAS 里的硬盘,在选择存储空间的文件系统时不知该选 ext4 还是 Btrfs,我主要考量的是磁盘的读写性能,于是就写了个脚本测试了下我的群晖 NAS 在两种文件系统下的磁盘读写速度,顺便也测试了下其在不同 RAID 类型下的磁盘读写速度。
[ext4] vs [Btrfs] vs [Btrfs + 校验] vs [Btrfs + 校验 + 压缩]:
ext4 在不同 RAID 类型下的对比:
我的群晖 NAS 是 2013 年款的 DS1513+,五盘位,CPU 是 Intel Atom D2700 Dual Core 2.13 GHz,内存扩充到了 4 GiB,群晖系统版本是 DSM 6.2。
测试使用的硬盘是四个 HGST 昱科的 Deskstar NAS 充氦硬盘(HGST Deskstar NAS 3.5" 10TB 7200 RPM 256MB Cache),型号是 HDN721010ALE604,容量是 10 TB,转速是 7200 RPM,缓存是 256 MiB,网上这款硬盘的评测。
synology_disk_benchmark.sh
和 xfio.conf
到 NAS 上。chmod +x synology_disk_benchmark.sh
sudo ./synology_disk_benchmark.sh 测试名
测试名.md
。sudo hdparm -Tt $device
# 生成一个 1 GiB 大小的随机数据测试文件
head -c 1G </dev/urandom >test
# 清除缓存
sync; echo 3 | sudo tee /proc/sys/vm/drop_caches > /dev/null
# 从 test 文件读取,每次读取 1 MiB 数据,读取 1024 次,共读取 1 GiB 数据
dd if=test of=/dev/null bs=1M count=1024
# 写入 0 到 test 文件,每次写入 x 数据,写入 y 次,共写入 x*y 数据( dsync 不缓存)
dd if=/dev/zero of=test bs=$x count=$y oflag=dsync
分别测试了 bs 读写块大小为 1 GiB、128 MiB、1 MiB、128 KiB、4 KiB、512 bytes 时的写入速度。
fio xfio.conf
fio 测试使用的配置文件:xfio.conf
进行了以下测试:
注:群晖内置了 fio 命令。
1
ryd994 2018-10-05 08:00:45 +08:00 via Android
btrfs 坑过我,而且性能不行
建议试试 zfs |
2
EPCoo 2018-10-05 08:07:31 +08:00 via iPhone
感谢楼主分享!
|
3
SunnyLyx 2018-10-05 08:19:56 +08:00 via Android
V2er 打开此主题就会卡死
另感谢楼主分享 |
4
zhangckid 2018-10-05 09:17:37 +08:00 via Android
虽然 btrfs 不行但是群晖主打啊…我记得群晖的 KVM 不用 btrfs 还不给我用…简直弱智…逼我手动开 qemu
|
6
yingfengi 2018-10-05 09:35:05 +08:00 via Android
你能打开这个帖子会不会卡成狗,Android V2ER 客户端
|
10
Athrob 2018-10-05 11:05:30 +08:00 via iPhone
楼主用心了
|
11
Rabbit52 2018-10-05 11:05:59 +08:00 via Android
我的天,这个贴手机差点卡死了 🤔
|
12
hjc4869 2018-10-05 11:07:22 +08:00 via iPhone
楼主应该用更专业的 IO 测试软件比如 iozone3。另外如果瓶颈是千兆网,那么考虑这些意义不大。
|
13
514146235 2018-10-05 11:11:13 +08:00 1
ext4 和 btrfs 场景不一样。一般使用 btrfs 是追求它的一些新的特性。例如压缩,快照等等。
下一代的文件系统 cow 是趋势,包括苹果的 apfs 也一样。cow 带来的性能下降是必然的。就看你能不能接受。 btrfs 目前已经足够稳定了。我的 nas 一直使用 btrfs,5 块硬盘 16T 容量合并成一个磁盘空间,不过没有开启 raid。开启了自动快照,然后就再也没有因为误删丢过任何数据了。然后还有部分冷数据直接开启压缩。真的是很爽。 期间经历过 N 次断电之类的,文件系统没有任何问题。不像 btrfs 早期那样可能导致文件系统损坏。 使用 btrfs 唯一要注意的就是,尽可能使用比较新的内核。 自己组的 nas,archlinux,5 块硬盘,总容量 16T,上面还跑很多服务。目前已经稳定连续工作近 2 年时间。 现在唯一期待的就是 btrfs 加入利用 ssd 磁盘加速的功能了。好像会在下一个 feature 里面。 |
15
loading 2018-10-05 12:09:37 +08:00 via Android
群辉还跑分,买椟还珠!
|
16
514146235 2018-10-05 12:14:33 +08:00
@ryd994 我知道,zfs 目前的确是比 btrfs 成熟。但是 freebsd 作为专用服务器还可以。多功能服务器还是 linux 比较好用一些。我的 nas 上面还要跑 kvm, docker 等等严重依赖 linux 内核的东西。
而且 freebsd 的软件包编译安装也确实比较费时间。十几年前用过 freebsd 作为服务系统,后来已经弃坑了。 |
17
zn 2018-10-05 12:15:52 +08:00
@ryd994 群辉不直接支持 ZFS 吧?得专门装 FreeNAS 一类的系统,然后 FreeNAS 这系统嘛,超级耗内存,光系统本身就要求 8G 内存起步,其他应用、虚拟机所需的内存,得额外计算。
|
19
xinhangliu 2018-10-05 12:18:23 +08:00 via Android
赔我流量🙂
|
21
ferock 2018-10-05 13:55:00 +08:00 1
btrfs 比较 ext4 性能当然不行,毕竟有很多备份的特性在那里。
但是。。。 这是以后的趋势 |
22
ryd994 2018-10-05 13:56:07 +08:00 via Android 2
@514146235 我是 CentOS 打底,kvm 开虚拟机,pcie 直通 HBA 给 nas4free。其他服务放其他虚拟机。虚拟网络用 jumbo frame,其实开销很小。唯一缺点就是内存消耗大。但是二手服务器 ECC 内存都是白菜价。无论你是不是用 zfs,对于数据安全,ECC 内存都是非常值得的投资
我 3 年前用 btrfs 时,它就已经在内核里,而且声称 production ready 了。实际呢?意外断电后全盘无法识别。信任就是一次偶然可以毁掉的。 btrfs 那时候还号称是未来的趋势。然而到现在也没有取代 ext4,而且性能也远比不上 ext4。在我看来,btrfs 是对 zfs 的一次失败的重造轮子。 RedHat 系不再默认 ext4,而是改用了 xfs。xfs 对小文件,SSD,的性能非常好。所以用于服务器系统盘最合适。数据盘再考虑其它。 顺带一提,ext4 也可以一定程度上 SSD cache。使用 external journal。 @zn 不到 8G 也可以。只要你不开去重。NAS 都是顺序读写,瓶颈总是在带宽。1G/T+8G 是建议配置,建议而已。 |
23
wowodavid 2018-10-05 13:59:29 +08:00
瓶颈还是网络啊,万兆网关键不在设备,而在于重新装修的成本
|
24
wtdd 2018-10-05 14:32:56 +08:00
NAS 毁硬盘不是开玩笑的,建议还是保命优先,性能就随他去吧……
|
25
ryd994 2018-10-05 15:09:13 +08:00 via Android
|
26
maolaohei 2018-10-05 15:22:53 +08:00
用手机看真卡,还得用电脑看
|
27
Sylv OP @xinhangliu 我算过了这帖图片一共 25.4 MB 大小,现在流量这么便宜,用不了几毛钱。😛
|
28
Sylv OP @hjc4869 群晖因为用的是自己的 Linux 系统,要用 iozone 等其他测试软件得自己编译,所以就用了一些自带的工具简单测试了下,日后若有其他用户进行类似测试也好有个参考。
|
30
Sylv OP @wtdd 我是 RAID5 + 一比一备份。其实 NAS 配上靠谱 UPS 并没有那么容易毁硬盘的,我之前的多块硬盘 7x24 运行了四年多,一块都没出问题。
|
31
msg7086 2018-10-06 05:38:49 +08:00 1
|
32
wugeng668 2021-03-31 15:05:12 +08:00
UP...图全挂了。。。我想看看 ext4 和 btrfs 在群晖下 smb 速度的对比....这两天格式化硬盘选哪个 有点纠结
|