L2Arc通常configuration为在SSD上caching随机旋转盘读取。 我已经设置了这个configuration,希望加快目录遍历。
这是设置:
# zpool list -v NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT geek1 2.72T 1.18T 1.54T - 53% 43% 4.64x ONLINE - sdc 1.36T 606G 786G - 54% 43% sdd 1.36T 606G 786G - 53% 43% log - - - - - - zil 3.97G 0 3.97G - 0% 0% cache - - - - - - l2arc 32.0G 4.24G 27.8G - 0% 13%
该机器有20GB的内存:充足的弧。
我期望在文件系统上find一个find调用。 它加速了5倍,但从绝对的angular度来看,它还是很慢。 列出46M文件需要3.4小时。
# while true; do time find /geek1/ -type f|wc -l; done 46774149 real 1103m18.661s user 2m15.143s sys 5m52.096s 46774149 real 243m0.289s user 2m3.063s sys 5m7.107s 46774149 real 205m23.922s user 2m7.566s sys 6m32.638s
如何使目录遍历更有效率?
zpool get all打印:
NAME PROPERTY VALUE SOURCE geek1 size 2.72T - geek1 capacity 43% - geek1 altroot - default geek1 health ONLINE - geek1 guid default geek1 version - default geek1 bootfs - default geek1 delegation on default geek1 autoreplace off default geek1 cachefile - default geek1 failmode wait default geek1 listsnapshots off default geek1 autoexpand off default geek1 dedupditto 0 default geek1 dedupratio 4.64x - geek1 free 1.54T - geek1 allocated 1.18T - geek1 readonly off - geek1 ashift 0 default geek1 comment - default geek1 expandsize - - geek1 freeing 0 default geek1 fragmentation 53% - geek1 leaked 0 default geek1 feature@async_destroy enabled local geek1 feature@empty_bpobj active local geek1 feature@lz4_compress active local geek1 feature@spacemap_histogram active local geek1 feature@enabled_txg active local geek1 feature@hole_birth active local geek1 feature@extensible_dataset enabled local geek1 feature@embedded_data active local geek1 feature@bookmarks enabled local geek1 feature@filesystem_limits enabled local geek1 feature@large_blocks enabled local
如果您在Linux上使用ZFS,则缓慢度可能取决于xattr默认设置( xattr=on ),该设置将隐藏目录/文件中的扩展属性存储。
尝试将chaning xattr设置为sa ,发出类似于zfs set xattr=sa <pool/fs> 。 但是,它只影响新创build的文件; 所以你需要删除/重新加载所有文件,以获得显着的加速。
换句话说,在重新加载所有文件之前,先进行一次小规模的尝试。