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

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

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

