ZFS (sync, async) R/W IOPS / throughput performance tuning
背景 本文讨论一下zfs读写IOPS或吞吐量的优化技巧, (读写操作分同步和异步两种情况). 影响性能的因素 1. 底层设备的性能直接影响同步读写 iops, throughput. 异步读写和cache(arc, l2arc) 设备或配置有关. 2. vdev 的冗余选择影响iops, through. ...
背景 本文讨论一下zfs读写IOPS或吞吐量的优化技巧, (读写操作分同步和异步两种情况). 影响性能的因素 1. 底层设备的性能直接影响同步读写 iops, throughput. 异步读写和cache(arc, l2arc) 设备或配置有关. 2. vdev 的冗余选择影响iops, through. ...
背景 ZFS 在linux中以模块的形式加载, ZFS的内核参数没有整合到linux内核参数中, 所以无法使用sysctl来修改. 只能通过修改模块的参数来变更这些参数. ZFS内核参数的意义可参见modinfo $modname, 或者直接查看zfs源代码. 有些参数是根据系统读数设定的(如内存) 与Li...
背景 ZIL或称SLOG, 被用于提升ZFS系统的离散fsync性能. 类似数据库的redo log或wal. 注意 1. 每个dataset对应一个zil, 也就是说一个zpool有多个zfs的话, 如果有log设备, 那么在log设备中实际上包含了多个ZIL entry. 数据写入ZIL后(fsync...
背景 可调参数, 含义以及默认值见arc.c或/sys/module/zfs/parameter/$parm_name 如果是freebsd或其他原生支持zfs的系统, 调整sysctl.conf. parm: zfs_arc_min:Min arc size (ulong) parm...
背景 今天拿了两台主机PK一下zfs和存储的性能. ZFS主机 联想 Reno/Raleigh 8核 Intel(R) Xeon(R) CPU E5-2407 0 @ 2.20GHz 24GB内存 12*SATA 2TB, 其中2块RAID1, 另外10块作为zpool (raidz 9 +...
背景 在某些场景中, 当一个服务器的一块网卡上面配置了多个IP时, 例如虚拟IP, 可能想指定虚拟IP地址作为出口地址. 例如对这个虚拟IP有鉴权要求的场景. 如PostgreSQL的pg_hba.conf. 如在集中的流复制standby场景, 当集中的主机DOWN掉的话, 希望把虚拟IP切走, 同时生产机...
背景 zpool健康检查(scrub)主要用于通过checksum来检查zpool数据块的数据是否正常, 如果vdev是mirror或raidz的, 可以自动从其他设备来修复异常的数据块. 由于健康检查是IO开销很大的动作, 所以建议在不繁忙的时候操作(scrub只检查分配出去的数据块, 不会检查空闲的数据块, ...
背景 只能在创建zpool时指定的唯一参数ashift, 用于指定zpool的扇区大小(2^ashift bytes). 比较优化的选择是大于等于底层设备的sector. 查看块设备的sector. 例如 fdisk -l /dev/sdb 看到如下一行. Sector size (logical...
背景 zfs支持在zpool基础上创建块设备或volume. 这个volume同样拥有快照等zfs的功能. 正常情况下创建zvol时, -V指定的空间会直接从zpool中取出, 确保这个zvol可以使用指定的空间, 而不会导致空间溢出的问题. [root@db- zp1]# df -h Files...
背景 使用打包好的安装, 好处是加了dkms支持. 一些配置也都弄好了. 以centos 6.x为例 需要访问外网. $ sudo yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release$(rpm...