OverlayFS需要CentOS系統內核版本支持(CentOS 7內核需≥3.10.0-514)。通過以下命令檢查內核版本:
uname -r
若版本低于要求,需升級內核后再使用Overlay功能。
確認overlay
內核模塊已加載(OverlayFS的核心模塊):
lsmod | grep overlay
若未加載,手動加載模塊:
modprobe overlay
為確保開機自動加載,可創建/etc/modules-load.d/overlay.conf
文件,寫入overlay
并重啟系統。
使用mount
命令過濾出OverlayFS掛載信息,確認掛載參數(lowerdir
、upperdir
、workdir
)是否正確:
mount | grep overlay
輸出示例:
overlay on /var/lib/docker/overlay2/... type overlay (rw,relatime,lowerdir=/var/lib/docker/overlay2/lower,upperdir=/var/lib/docker/overlay2/upper,workdir=/var/lib/docker/overlay2/work)
關鍵檢查項:lowerdir
(底層目錄,存儲鏡像層)、upperdir
(上層目錄,存儲容器修改)、workdir
(工作目錄,OverlayFS內部使用)必須存在且可訪問。
手動檢查lowerdir
、upperdir
、workdir
目錄是否存在:
ls -ld /path/to/lowerdir /path/to/upperdir /path/to/workdir
確保目錄權限正確(通常為755
),且磁盤空間充足:
df -h /path/to/lowerdir /path/to/upperdir
磁盤空間不足會導致OverlayFS無法寫入新數據。
Docker默認使用overlay2
作為存儲驅動(推薦),通過以下命令檢查:
docker info | grep -i "storage driver"
若輸出為overlay2
,則配置正確;若為aufs
或其他驅動,需修改Docker配置文件(/etc/docker/daemon.json
):
{
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"]
}
修改后重啟Docker服務:
systemctl restart docker
再次驗證存儲驅動是否更新。
通過以下命令檢查容器運行狀態(間接反映OverlayFS是否正常):
docker ps # 查看運行中的容器
docker ps -a # 查看所有容器(包括停止的)
若容器無法啟動或報錯(如overlay2
相關錯誤),需進一步檢查日志:
docker logs <container_id>
同時,查看鏡像層信息(OverlayFS存儲鏡像層):
docker images
若鏡像無法拉取或層丟失,可能是OverlayFS掛載問題。
使用dmesg
命令過濾OverlayFS相關錯誤信息:
dmesg | grep -i overlay
常見錯誤包括:lowerdir
不存在、權限不足、磁盤空間滿等,根據日志提示修復問題。
使用journalctl
查看系統日志(適用于CentOS 7+):
journalctl -u docker --no-pager | grep -i overlay
journalctl -k | grep -i overlay
日志中可能包含OverlayFS掛載失敗、網絡問題等詳細信息。
若使用Overlay網絡(如Docker Swarm、Kubernetes),需額外檢查網絡配置:
使用ping
測試節點間連通性:
ping <other_node_ip>
確保防火墻允許Overlay網絡流量(如Docker默認使用2377/tcp
、7946/tcp/udp
、4789/udp
端口):
firewall-cmd --list-all
臨時禁用防火墻測試是否為防火墻導致的問題:
systemctl stop firewalld
檢查容器內路由表(進入容器):
docker exec -it <container_id> ip route
確認默認網關正確,且MTU設置與物理網絡匹配(避免因MTU不匹配導致丟包):
docker exec -it <container_id> ip link show
若MTU過大,可調整容器內接口MTU:
docker exec -it <container_id> ip link set dev eth0 mtu 1400
SELinux沖突:若啟用了SELinux,可能阻止OverlayFS訪問目錄。臨時禁用SELinux測試:
setenforce 0
若問題解決,可修改/etc/sysconfig/selinux
文件,將SELINUX=enforcing
改為SELINUX=permissive
,或配置SELinux策略允許OverlayFS訪問。
底層文件系統不支持d_type:XFS文件系統需支持d_type
(默認開啟),若未開啟,需重新格式化(注意:格式化會清除數據):
mkfs.xfs -n ftype=1 /dev/path/to/device
ext4文件系統默認支持d_type
,無需額外配置。