我的服务器有 128 个监视器,这导致提交了许多随机写入 IO。如果我使用 SSD,许多写入很快就会使它崩溃。
我阅读了一些关于 F2FS 的文章,知道它在闪存盘和随机/小写入上运行得更好。
我的服务器中有很多随机写入 IO。它总是降低我的服务器的性能。
如果我在 HDD 上安装 F2FS 会怎样?这比 ext4 更好吗?
====== 更新 ======
RAID0 只是为了性能基准,实际上我会使用 RAID5 或 RAID6。
经过我大量搜索,有两种方法可能有效:
- 缓存 IO
- 队列 IO 从随机 IO 变为顺序 IO <--F2FS支持
答案1
不要使用 RAID0,任何一个驱动器发生故障都会导致阵列损坏。RAID6、RAID10,甚至没有阵列的单个驱动器的可用性都会更好。
f2fs 致力于对现代固态设备友好,并且 Linux md 的运行速度非常快。
但是,没有数据就无法做出像阵列上的 f2fs 更好这样的一般性陈述。您需要考虑您的工作负载是什么,I/O 模式是否已在与您的系统类似的系统上进行过基准测试,以及存在哪些限制因素。
进行容量分析。估计每秒数据库查询数或读取和写入的文件数。使用 等工具测量 IOPS iostat -xz 1
。如果r/s
和w/s
数字接近设备的额定容量,则可能需要更快的磁盘。预计每块旋转磁盘大约有 100 IOPS,大多数 SSD 至少有几千 IOPS。磁盘是作为 SATA 还是 NVMe 连接会有所不同。
评估系统上每个资源的性能。如果您受到 CPU 或内存限制,快速存储的帮助有限。内存作为缓存特别有用。过多的页面调出是不好的,因为交换文件会窃取存储系统性能,但速度不如 DRAM。
一旦您了解了系统的性能,那么您就可以开始评估存储系统的变化。
答案2
在传统 HDD 上使用 F2FS 不是一个好主意:虽然它的随机写入性能可能高于 EXT4 或 XFS,但老文件系统上的连续读取速度会非常令人失望。
为了在没有断电保护写回缓存(即真正的 RAID 控制器)的情况下提高随机写入性能,您必须将应用程序配置为不是发出 fsync(),但是这个将要显著增加意外关机丢失数据的几率。不是在系统级别禁用屏障(即:通过告诉内核您已通过缓存写入),因为在断电的情况下这可能会破坏整个文件系统。
您还可以考虑使用 ZFS(最好将条带化留给自己,而不是留给 MDRAID 层):由于其 CoW 特性,随机写入速度明显快于其他文件系统,而高级缓存可避免顺序读取的问题。它甚至支持sync=disabled
:如果您在意外关机的情况下可以容忍约 5 秒的数据丢失窗口,它将提供大量随机写入 IOP,而不会影响应用程序或文件系统的一致性。
最后,如果您使用的是 EXT4,您可以使用进行快速测试data=journal
:虽然这会降低顺序写入性能,但随机写入应该比默认日志模式稍快一些。