K8S環(huán)境中Containerd運行時占用文件定位安全清理方法
前言
/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs是 containerd 使用 OverlayFS? 作為存儲驅(qū)動時,用于管理容器和鏡像文件系統(tǒng)快照? 的核心位置。
1. 目錄結(jié)構(gòu)
下面這個表格匯總了該目錄下關鍵組件的作用,可快速建立整體概念。
組件/目錄 | 作用描述 |
|---|---|
snapshots/目錄? | 核心目錄,存儲所有快照層。每個數(shù)字子目錄(如 |
snapshots/<id>/fs? | 快照的實際數(shù)據(jù)目錄。對于鏡像層(Committed狀態(tài)),存放只讀文件;對于容器層(Active狀態(tài)),存放容器寫入的新數(shù)據(jù)。 |
snapshots/<id>/work? | OverlayFS 的工作目錄,用于在聯(lián)合掛載時保證文件操作的原子性(如文件重命名)。切勿手動修改。 |
metadata.db文件? | 存儲所有快照的元數(shù)據(jù)(如父子關系、創(chuàng)建時間),通?;?BoltDB。 |
2. 核心概念與工作原理
了解了目錄結(jié)構(gòu)后,我們來看看 containerd 是如何利用這些組件工作的。
快照與分層:containerd 中的 快照? 代表了文件系統(tǒng)在某個時間點的狀態(tài)。每個鏡像層都會對應一個 committed? 狀態(tài)的只讀快照。當創(chuàng)建一個容器時,會基于最上層的鏡像快照生成一個 active? 狀態(tài)的可讀寫快照,容器內(nèi)所有修改都發(fā)生在這個可讀寫層。
聯(lián)合掛載:當容器啟動時,OverlayFS 驅(qū)動會將多個只讀的鏡像層(對應
lowerdir)和容器唯一的可讀寫層(對應upperdir)聯(lián)合掛載到一個統(tǒng)一的視圖(merged目錄),容器進程看到的文件系統(tǒng)就是這個聯(lián)合后的結(jié)果。
3. 日常管理與排查
掌握上述知識能幫助你解決實際問題,比如定位大文件或關聯(lián)路徑與容器。
3.1 定位大文件目錄
當磁盤空間緊張時,可以查看 snapshots目錄下各子目錄的大小,找出占用空間大的快照。
sudo du -h -d 1 /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots | sort -hr

或crictl stats 命令查看
#查看所有容器 crictl stats #或查看指定容器 crictl stats <container-id-1> <container-id-2>

3.2 關聯(lián)快照與容器
找到占用大的數(shù)字目錄(如 247)后,可以通過 mount命令查找其掛載信息,從而關聯(lián)到具體的容器。
mount | grep /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/247/

命令輸出會顯示包含容器ID的掛載點路徑(通常在 /run/containerd/io.containerd.runtime.v2.task/...下),然后可以使用 crictl或 ctr命令通過該容器ID查看容器詳情,即可找到對應的服務模塊容器名稱。
crictl ps | grep 容器ID前幾位
![]()
或者
crictl ps -v | grep -A10 <完整容器ID或前幾位>

3.3 安全清理
切勿直接手動刪除 snapshots目錄下的子目錄或文件,這可能導致數(shù)據(jù)不一致。正確的清理方式是使用容器運行時工具:
# 使用 ctr 刪除不需要的容器和鏡像 ctr containers list ctr containers rm <container_id> ctr images rm <image_name> # 或者使用 crictl (適用于 Kubernetes 環(huán)境) crictl rmi <image_id>
刪除不再使用的容器和鏡像后,其關聯(lián)的未被引用的快照層通常可以被垃圾回收機制清理。
4. 與Docker的主要區(qū)別
簡單來說,Docker 的 overlay2和 containerd 的 io.containerd.snapshotter.v1.overlayfs都使用 OverlayFS,但 containerd 的快照管理抽象更清晰,與運行時的耦合度更低。
總結(jié)
到此這篇關于K8S環(huán)境中Containerd運行時占用文件定位安全清理方法的文章就介紹到這了,更多相關K8S Containerd運行時占用文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Kubernetes Gateway API TLS路由使用及說明
TLSRoute是GatewayAPI中的一個資源類型,用于處理TLS流量,可以根據(jù)主機名等TLS元數(shù)據(jù)將流量定向到不同的Kubernetes后端服務,通過配置Gateway和TLSRoute,可以實現(xiàn)TLS流量的透傳和終止處理,滿足不同的安全和管理需求2026-03-03
kubernetes k8s 存儲動態(tài)掛載配置詳解
這篇文章主要為大家介紹了kubernetes k8s 存儲動態(tài)掛載配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11
Rainbond的ServiceMesh架構(gòu)組件端口沖突處理解決
這篇文章主要大家介紹了Rainbond?ServiceMesh架構(gòu)組件端口沖突處理方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04

