關於 docker overlay 存儲相比 device mapper 的優勢,可以在 google 上搜索相關資料。在 ubuntu 16.04.2 上可以直接使用 overlay 存儲,而在 CentOS7上需要預處理才能使用 overlay 存儲。
1. CentOS7 Overlay 存儲現狀
CentOS7的內核是3.X,官方基於該內核構建了 overlay 存儲驅動,但是不能直接加載,否則,docker 和 kubernetes 運行時會出現異常。如:
基於 docker 部署的 calico node 報文件操作錯誤,以及由此產生的 kubernetes pod 網絡不通、kube-dns 運行失敗。
2. CentOS7 Overlay 啟用方法
要在CentOS7中正確啟用Overlay存儲,可以參考 RedHat 的下述文檔:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/7.2_Release_Notes/technology-preview-file_systems.html
簡單來說,有以下幾點:
2.1 xfs 文件系統
XFS文件系統格式化時必須加 -n ftype=1 參數
注:CentOS7安裝時默認沒有加這個參數,在安裝界面也沒有修改的地方。建議另外准備一塊磁盤或者分區,加參數 -n ftype=1 格式化為 xfs 格式,然后將 /var/lib/docker 掛載上去:
mkfs.xfs -n ftype=1 /dev/sdbX
2.2 selinux
/etc/sysconfig/docker 去除 --selinux-enabled
2.3 內核驅動
echo 'overlay' > /etc/modules-load.d/overlay reboot