zoukankan      html  css  js  c++  java
  • Docker Warning : the backing xfs filesystem is formatted without d_type support

    CentOS7 下安装配置 Docker,遇到如下的WARNING,

    WARNING: overlay: the backing xfs filesystem is formatted without d_type support, which leads to incorrect behavior.
    Reformat the filesystem with ftype=1 to enable d_type support.
    Running without d_type support will not be supported in future releases.

    xfs 文件系统不支持d_type,建议重新格式化文件系统加上 ftype=1 来打开 d_type 的支持,下面来了解下 xfs 下的 d_type。


    d_type 对于Docker来说这么重要呢?
    要知道Overlay 和 Overlay2是Docker支持的两种存储驱动,类似AUFS,其主要有如下几个特性:

       1) 设计更加简单;
       2) 从3.18内核开始,就进入了Linux内核主线;
       3) 速度更快。

    Docker的overlay存储驱动利用了很多OverlayFS特性来构建和管理镜像与容器的磁盘结构。自从Docker1.12起,Docker也支持overlay2存储驱动,相比于overlay来说,overlay2在inode优化上更加高效。但overlay2驱动只兼容Linux kernel4.0以上的版本。
      注:自从OverlayFS加入kernel主线后,它在kernel模块中的名称就被从overlayfs改为overlay了。
    OverlayFS使用两个目录,把一个目录置放于另一个之上,并且对外提供单个统一的视角。这两个目录通常被称作层,这个分层的技术被称作union mount。术语上,下层的目录叫做lowerdir,上层的叫做upperdir。对外展示的统一视图称作merged。
    下图展示了Docker镜像和Docker容器是如何分层的。镜像层就是lowerdir,容器层是upperdir。暴露在外的统一视图就是所谓的merged。

    当Docker 运行在overlay/overlay2存储驱动上时,需要d_type特性的支持才能正常工作,Docker1.13以后加入了对此的检查,可以运行docker info命令来查看文件系统是否支持d_type这个特性。

    如果overlayfs存储驱动不支持d_type的话,容器在操作文件系统时可能会出现一些奇怪的错误:比如在bootstrap的时候出现Chown error,或者rebuild时发生错误等等。
    如何解决?
    坏消息是只能通过重做文件系统来解决,是不能在已经存在的操作系统上进行修改的哦!!!
    下面是基本上可行的步骤:
    (1)备份你的数据
    (2)重新创建你的文件系统,当然可以是使用XFS,也可以使用Ext4
    (3)恢复备份的数据回来
    针对第二点,我们可以有如下操作(做下面命令之前最好了解下命令可能带来的影响:):
    如果是使用ext4文件系统,那么命令是:

    mkfs.ext4 /path/to/your/device

    如果是使用xfs文件系统,那么命令是:

    mkfs.xfs -n ftype=1 /path/to/your/device
    现在您就可以检查下RHEL/CentOS7是否存在d_type问题:
    sudo xfs_info /
    meta-data=/dev/sda3 isize=256 agcount=4, agsize=32230848 blks
    = sectsz=512 attr=2, projid32bit=1
    = crc=0 finobt=0 spinodes=0
    data = bsize=4096 blocks=128923392, imaxpct=25
    = sunit=0 swidth=0 blks
    naming =version 2 bsize=4096 ascii-ci=0 ftype=0
    log =internal bsize=4096 blocks=62950, version=2
    = sectsz=512 sunit=0 blks, lazy-count=1
    realtime =none extsz=4096 blocks=0, rtextents=0
    像我这台机器就是ftype=0,如果计划加入到Docker节点的话,需要进行调整哦!

    https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/7.2_release_notes/technology-preview-file_systems

  • 相关阅读:
    中介者模式
    观察者模式
    javascript深入理解js闭包
    外观模式
    模板方法模式
    浅析C#深拷贝与浅拷贝
    C#浅拷贝与深拷贝区别
    6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
    原型模式
    设计模式总结
  • 原文地址:https://www.cnblogs.com/zhangeamon/p/7918567.html
Copyright © 2011-2022 走看看