当将 Docker 与 ZFS 一起使用时,我遇到了一种奇怪的行为。
我有一个池,其中 2x10TB HDD 作为镜像 vdev,2x250GB NVME 作为特殊 vdev 的镜像(用于存储元数据和数据集以及小型配置文件等)。
我决定使用 ZFS 驱动程序将我的 Docker Root(容器/图像)放入 ZFS 数据集中:
/etc/docker/daemon.json:
{
"data-root": "/docker-root",
"storage-driver": "zfs"
}
我还将 /docker-root 数据集的记录大小设置为 32K,将 special_small_blocks 设置为 128K,以确保存储在数据集中的所有文件都得到分配并存储在具有快速 NVME 的特殊 vdev 中。(我理解,如果将记录大小设置为等于或小于 special_small_blocks,则所有文件都会转到特殊 vdev)
但问题是,当我启动和停止容器时,我仍然看到大量写入 HDD vdev 的操作。容器运行时权限也非常频繁,而当我停止所有容器时则不会出现这种情况。我还确保所有容器安装的卷都安装在配置数据集中,该数据集配置相同,以存储所有文件特殊 vdev。
池中的数据集的 atime 属性也处于关闭状态。
为什么即使我强制将所有与 docker 相关的文件存储在特殊 vdev 中,这种情况仍然会发生?这仍然是预期的还是我遗漏了什么?
泳池布局:
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
storage-pool-01 9.32T 6.50T 2.82T - - 0% 69% 1.00x ONLINE -
mirror-0 9.09T 6.41T 2.68T - - 0% 70.5% - ONLINE
ata-ST10000NE000-xxxxxx_xxxxxxx1 - - - - - - - - ONLINE
ata-ST20000NM007D-xxxxxx_xxxxxxx2 - - - - - - - - ONLINE
special - - - - - - - - -
mirror-1 232G 91.5G 140G - - 29% 39.4% - ONLINE
nvme-Samsung_SSD_980_PRO_250GB_xxxxxxxxxxxxxx1 - - - - - - - - ONLINE
nvme-Samsung_SSD_980_PRO_250GB_xxxxxxxxxxxxxx2 - - - - - - - - ONLINE
提前致谢!