1

from docker documentation we can see the following https://docs.docker.com/storage/storagedriver/overlayfs-driver/#prerequisites

Warning: Running on XFS without d_type support now causes Docker to skip the attempt to use the overlay or overlay2 driver. Existing installs will continue to run, but produce an error. This is to allow users to migrate their data. In a future version, this will be a fatal error, which will prevent Docker from starting.

not understand this line - This is to allow users to migrate their data ???

what is the real problem here ? ( be useful to get some examples )

1 Answer 1

4

The issue is that deleted files in the overlay filesystem don't show as deleted:

During mount, make sure upper fs supports d_type otherwise error out.

In some instances xfs has been created with ftype=0 and there if a file on lower fs is removed, overlay leaves a whiteout in upper fs but that whiteout does not get filtered out and is visible to overlayfs users.

And reason it does not get filtered out because upper filesystem does not report file type of whiteout as DT_CHR during iterate_dir().

So it seems to be a requirement that upper filesystem support d_type for overlayfs to work properly. Do this check during mount and fail if d_type is not supported.

RedHat has documented the requirement:

Note that XFS file systems must be created with the -n ftype=1 option enabled for use as an overlay.

This can have bad results like breaking the ability to delete a directory since the directory can never be emptied. There's also suggestions that it may break the image build. And if anything else goes wrong, docker won't provide any support with that configuration since it's known to cause problems.

From the man page, the option has the following effect:

               ftype=value
                      This feature allows the inode type to be stored in
                      the directory structure so that the readdir(3) and
                      getdents(2) do not need to look up the inode to
                      determine the inode type.

                      The value is either 0 or 1, with 1 signifying that
                      filetype information will be stored in the
                      directory structure.  The default value is 1.
7
  • about - breaking the ability to delete a directory - do you means linux folders?
    – King David
    Aug 10, 2020 at 23:03
  • @KingDavid The referenced issue is linked. Are you running Docker with XFS on something other than Linux?
    – BMitch
    Aug 10, 2020 at 23:04
  • we have rhel servers - 7.2 version and the OS filesystem is XFS , and machines are contain docker service
    – King David
    Aug 10, 2020 at 23:07
  • I will provide more info - this server are part of hadoop cluster - datanode machines , so each datanode machine contain HDFS disks , and on each datanode we interfiled docker service
    – King David
    Aug 10, 2020 at 23:12
  • for more info I also post this - unix.stackexchange.com/questions/603879/…
    – King David
    Aug 10, 2020 at 23:13

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .