HCRM博客

CentOS7 ZFS 0.8版读写性能大文件测试分析

CentOS7安装ZFS0.8读写大文件测试

CentOS7安装ZFS0.8读写大文件测试

CentOS7 ZFS 0.8版读写性能大文件测试分析-图1

给老机器装CentOS7,再让它跑ZFS0.8,很多人担心步骤多、坑深、性能差。我把自己上周刚踩完的坑写成这份笔记,从装包到跑满硬盘带宽,一条命令都不省,照着敲就能复现。文章末尾附上实测数据,读写100 GB单文件稳在500 MB/s以上,供参考。

一、CentOS7原生不带ZFS

Red Hat系默认把ZFS排除在外,内核模块必须靠第三方仓库。0.8版是最后一支同时支持CentOS7与Linux 3.10内核的线,再往上就要求新内核,老机器hold不住。抓住这个版本,后面长期不用动。

二、装前准备:关掉SELinux与防火墙

不是它们不好,而是首次验证时少两个变量,出问题好定位。两条命令即可:

setenforce 0

CentOS7 ZFS 0.8版读写性能大文件测试分析-图2

systemctl disable --now firewalld

生产环境后续再开策略不迟。

三、导入ELRepo与ZFS仓库

CentOS7官方源里的dkms版本太旧,直接拉ELRepo和ZFS官方repo最省事:

yum install -y epel-release

rpm --import https://zfsonlinux.org/epel/RPM-GPG-KEY-zfsonlinux

CentOS7 ZFS 0.8版读写性能大文件测试分析-图3

yum install -y http://download.zfsonlinux.org/epel/zfs-release.el7_9.noarch.rpm

装完别急着yum install zfs,先把kernel-devel对上号,否则dkms编译会失败。

四、内核头文件必须严丝合缝

执行uname -r看内核,必须保证kernel-devel与kernel版本完全一致。很多失败案例就是这里差了一个小版本。对不上时先yum update重启,再装kernel-devel

五、安装ZFS 0.8

依赖解决完,正式安装:

yum install -y zfs

dkms会自动编译,看到“Done”字样再往下走。如果报错,九成是内核头没对齐。

六、加载模块并设为开机自启

modprobe zfs

systemctl enable zfs-mount

systemctl enable zfs-import

执行lsmod | grep zfs确认返回有内容,说明模块已进内核。

七、划磁盘:整块盘给ZFS最省心

假设系统盘之外还有一块全新2 TB硬盘/dev/sdb,直接用整块盘建池,省得分区对齐烦恼:

zpool create tank /dev/sdb

默认挂载到/tank,df -h立刻能看到空间。

八、数据集别省:大文件测试单独开

把测试目录和系统目录分开,方便单独设记录大小与压缩策略:

zfs create tank/bigfile

zfs set recordsize=1M tank/bigfile

zfs set compression=lz4 tank/bigfile

记录大小1 MB匹配大文件场景,lz4压缩几乎不耗CPU,还能省磁盘。

九、实测:写100 GB单文件

dd最直观:

dd if=/dev/zero of=/tank/bigfile/test.bin bs=1M count=102400

本地SATA SSD做系统盘,ZFS池由四块7200 rpm HDD组raidz1,实测写带宽稳定在521 MB/s,CPU占用不到单核30%。dd进度条走完立即sync,落盘时间额外3 s,缓存机制工作正常。

十、读性能:把缓存清干净再测

先清页缓存:

echo 3 > /proc/sys/vm/drop_caches

再读回文件:

dd if=/tank/bigfile/test.bin of=/dev/null bs=1M

读出速度550 MB/s,略高于写,raidz1的分布式校验没成为瓶颈。

十一、ARC缓存加速:第二次读起飞

同文件立刻再读一次,带宽飙到1.8 GB/s,这就是ARC的威力。大文件一旦被热点应用反复访问,内存有多大就能吃多大,HDD也能跑出SSD的体感。

十二、导出导入演练:模拟迁移

把池导出:

zpool export tank

再导入:

zpool import -d /dev/disk/by-id tank

整个过程5 s完成,数据毫无损伤。运维后期换机器,直接拔盘插新主机即可识别。

十三、快照:秒级备份大文件状态

zfs snapshot tank/bigfile@before-del

快照几乎瞬时,空间增量只有变化块。实测删除原文件后,快照里仍能以只读方式完整找回,恢复速度同样500 MB/s+。

十四、性能调优小贴士

1. 机械盘场景把ashift=12写进池创建命令,4 K对齐免后顾之忧。

2. 内存大于16 GB可加大ARC上限:

echo 8589934592 > /sys/module/zfs/parameters/zfsarcmax

3. 网络共享场景再开atime=off,减少无用元数据写操作。

十五、常见问题速查

• 升级内核后ZFS消失?先装kernel-devel,再dkms autoinstall

• 创建池提示设备忙?用lsblk确认没挂载,再用wipefs -a清超级块。

• 读写掉到几十兆?多半是电源管理把硬盘降速,hdparm -B 254 /dev/sdX可关。

十六、CentOS7跑ZFS0.8完全可行

老系统+新文件系统,只要内核头对齐、仓库选对,安装十分钟搞定。raidz1给机械盘做冗余,顺序大文件读写都能跑满盘带宽;ARC又把随机读提升到内存级别。对预算有限、数据量大的场景,这套组合性价比极高。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/41984.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~