如果我在fstrim容器中运行fstrim ,会出现有关主机挂载(?)文件not a directory 。
$ docker run -ti -v tmp:/tmp2 ubuntu:16.04 /sbin/fstrim --all fstrim: /etc/hosts: not a directory fstrim: /etc/hostname: not a directory fstrim: /etc/resolv.conf: not a directory fstrim: /tmp2: FITRIM ioctl failed: Operation not permitted
我猜这是因为容器没有特权 。 (至less是FITRIM ioctl failed错误)
我通过在新的ubuntu:16.04上安装cron发现了这一点ubuntu:16.04容器(我知道它违反了“一个进程”的哲学 – 这是另一个讨论)但默认的图像有/etc/cron.weekly/fstrim所以一旦你安装cron, fstrim启动运行每周和cron电子邮件我的错误。
我应该在容器中运行fstrim吗?
我还在包围着aufs ,我发现的关于fstrim所有网页fstrim讨论了SSD和可用空间恢复。
这是否适用于一个容器? 主人的fstrim cron工作不会照顾一切吗? 我应该从容器中删除cron作业还是docker中的错误?
编辑:系统信息:
$ uname -sri; docker --version Linux 4.4.0-53-generic x86_64 Docker version 1.12.3, build 6b644ec
fstrim在容器内绝对没有意义。
fstrim在于取消映射后备存储上未使用的存储,不pipe是通过iSCSI,FibreChannel还是其他方式安装的本地SSD或精简configurationSAN存储。 这样的过程需要在主机上运行,而不是在容器内运行。
您看到的具体错误是因为fstrim尝试在每个安装点上调用FITRIM ioctl,并且容器内的装入点不对应于主机使用的实际块设备。 即使容器有特权,这通常是正确的。
为什么Ubuntu把fstrim放在一个容器映像中是一个完整的谜题。 如果你被困在Ubuntu容器中,我会build议禁用该cron作业。