btrfs 这方面将来提升空间挺大,zfs 借助 ARC 和 L2ARC 实现的缓存效果非常惊人,只要内存足够大,可以不用频繁读写磁盘。
但硬盘不还是在空转?
不过 Linux 有为硬盘做电源管理吗?
验证了一下即使是在 Cache 命中时,zfs 读取数据依然会唤醒硬盘。
不过没有数据读写时好歹会按照磁盘电源管理休眠硬盘。
ZFS 内存缓存叫做 ARC,而用 SSD 做的缓存叫做 L2ARC,一般情况下都会去唤醒硬盘因为要校验。
纯读取,校验有个鸡儿用……
数据都不会变的……
这朋友就错了,如果硬盘体质不好,后期逐渐老化,加上没有使用阵列和冗余,即使长期放置未修改的文件,纯读取也是有几率出现问题的。ZFS 默认创建的时候是启用校验的。可以从下方的 openZFS 文件系统文档中了解到:
第一点就提到检测数据在从媒体读取的时候是否已经损坏。所以默认应该是读取时就校验。而且官方文档在开始也提到,ZFS 的端对端校验和是 ZFS 一个特性,同时也是与传统 RAID 的一个重要不同点。
当然,最把稳的方法是去看源代码。不过对于 ZFS 这种非常重视文件安全性的文件系统而言,多一些校验也是好事,而且朋友不是要用 NAS 吗?文件储存在里面安全性和稳定性才是最重要的。
当然文档最后也提到,可以关闭校验和,但是官方并不建议这样做。
文档地址:https://openzfs.github.io/openzfs-docs/Basic%20Concepts/Checksums.html
这意味着你挂 BT 的话,硬盘根本不会休眠。
全天能耗和电机损耗。
鬼知道那个倒霉鬼,隔三差五从你节点获取几 KB 数据。
关于 BT ,朋友可以查看官方文档的这个部分内容优化:
https://openzfs.github.io/openzfs-docs/Performance%20and%20Tuning/Workload%20Tuning.html#bit-torrent
根本没用,我用的是容器,只是把下载目录挂载在 ZFS 上,下载 Cache 在我的系统盘。
我只要一开启 BT 客户端,硬盘根本就不会睡。
另外补充下,如果读取数据命中 ARC 或者 L2ARC,应该不会校验(至少文档中没有提到)。当然具体还是要看源码才行。官方文档也有可能不会涵盖到。
你的下载目录只要是 ZFS ,在按照 ZFS 提供的优化设置,会有所改善。
sudo zpool iostat -v test 1
capacity operations bandwidth
pool alloc free read write read write
------------------------------------------- ----- ----- ----- ----- ----- -----
test 7.07G 921G 0 0 0 0
ata-ST1000LM024_HN-M101MBB_S31LJ9DFB19087 7.07G 921G 0 0 0 0
cache - - - - - -
sda 20.2G 296G 0 1 0 7.99K
------------------------------------------- ----- ----- ----- ----- ----- -----
capacity operations bandwidth
pool alloc free read write read write
------------------------------------------- ----- ----- ----- ----- ----- -----
test 7.07G 921G 0 55 0 420K
ata-ST1000LM024_HN-M101MBB_S31LJ9DFB19087 7.07G 921G 0 55 0 420K
cache - - - - - -
sda 20.2G 296G 0 1 0 7.99K
------------------------------------------- ----- ----- ----- ----- ----- -----
弄了个脚本在后台从 ZFS 复制东西到/tmp。
按理说根本不该有写入的。
但还是有。