問題描述:node
k8s環境中須要從新建立lvm:/dev/mapper/test-vg-test-storage,該lvm掛載在/data/prometheus下面,在刪除出現"Logical volume contains a filesystem in use"的錯誤,代表該lvm被某個進程佔用,但直接使用該lvm的容器已經被清理,使用lvchange -an /dev/mapper/test-vg-test-storage去激活該lvm時也會出現上述錯誤。app
解決方法:spa
使用以下腳本找出全部與該lvm相關的進程code
# for i in /proc/[0-9]* ; do echo $i >> /tmp/mountinfo ; grep -q "/dev/mapper/test-vg-test-storage" $i/mountinfo ; echo $? >> /tmp/mountinfo ; done
結果以下:blog
# grep -B 1 '^0$' /tmp/mountinfo /proc/922 0
根因分析:進程
經排查,該進程對應Prometheus node-exportor的容器,出現刪除lvm失敗的緣由是該lvm掛載在/data/prometheus下面,而node-exportor的容器中又掛載了根目錄,/data/prometheus屬於根目錄,所以會出現lvm被使用的狀況。刪除node-export容器便可正常刪除lvmrem
volumes: - name: proc hostPath: path: /proc - name: sys hostPath: path: /sys - name: rootfs hostPath: path: /
# lvchange -an /dev/mapper/test-vg-test-storage
# lvremove /dev/mapper/test-vg-test-storage
總結:get
參考:io