刪除lvm時出現"Logical volume contains a filesystem in use"

問題描述: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

https://access.redhat.com/solutions/2961861class

相關文章
相關標籤/搜索