当数据集配置为存储 Docker 专用数据时,ZFS 仍会写入 HDD vdev

当数据集配置为存储 Docker 专用数据时,ZFS 仍会写入 HDD vdev

当将 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

提前致谢!

相关内容