iT邦幫忙

1

Kubernetes 掛載 NFS 下運行 WordPress 刪除外掛 .nfs00xxx 檔案鎖住問題

  • 分享至 

  • xImage

家裡跟公司 WordPress 都是架設在 K8S + NFS 環境
NFS 用 Windows Server 或 Synology 架的

但在進行主題更新或外掛刪除都會碰到外掛目錄下有 .nfs00xxx 導致砍不掉
https://ithelp.ithome.com.tw/upload/images/20221010/20094721zudzCESzKT.jpg
嘗試進 Pod 用指令刪除顯示 Resource busy
https://ithelp.ithome.com.tw/upload/images/20221010/20094721zAO8zoQ21b.jpg
lsof 檢查是否鎖定看不太出來
https://ithelp.ithome.com.tw/upload/images/20221010/20094721oDtIwgnbWV.jpg
從 server 上看可以看到被 System 鎖住
https://ithelp.ithome.com.tw/upload/images/20221010/20094721CgqNLr5s67.jpg
但就不知道要怎麼去解決,每次都要放一段時間才能解鎖,不知怎麼解?謝謝

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

5
Ray
iT邦大神 1 級 ‧ 2022-10-11 01:46:37
最佳解答

.nfsXXXX 檔案的產生, 是因為 NFS Client 在 Open file 的狀態下, 沒有先 Close file, 就去執行 Delete file 造成的.

此時, 因為 Open 狀態還持續, NFS 不能擅自將檔案刪除, 他就把這個還在被 Open 的檔案改名為 .nfsxxxx, 然後持續提供給當初 Open 的那個程式使用 (所以你想刪除他就報 Resource Busy, 因為他還在被某人 Open 的狀態, 不能刪), 直到當初 Open 他的程式下達 Close 命令 (或者中斷存取後 timeout), 才會將此檔案刪除.

回到 k8s 的架構, 由於你的 NFS Server 是在外部, k8s 必須透過 Storage Class 來跟她溝通, 所以這時候對 NFS Server 來說, 你的 NFS Client 其實是 k8s 的 NFS Storage class:

以上是生成原因的推測, 問題要去查你的 NFS Storage class 或 Provisoiner 才知...

看更多先前的回應...收起先前的回應...
vicentli iT邦研究生 4 級 ‧ 2022-10-11 22:13:31 檢舉

感謝雷神前輩,我是先嘗試把 ReadWriteOnce 改成 ReadWriteMany 再砍 pod 無效,再嘗試砍 nfs-client-provisioner pod 無效,再調整了 nfs-client-provisioner 資源,原先是沒設定 requests limits,調整完後再 helm upgrade 目前測試暫時沒再發生

resources:
  # We usually recommend not to specify default resources and to leave this as a conscious
  # choice for the user. This also increases chances charts run on environments with little
  # resources, such as Minikube. If you do want to specify resources, uncomment the following
  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  limits:
   cpu: 1
   memory: 1Gi
  requests:
   cpu: 100m
   memory: 128Mi
Ray iT邦大神 1 級 ‧ 2022-10-12 07:53:16 檢舉

也非常感謝您, 告訴我們一個未知問題的解決方案, 讓我也多學了一些.

vicentli iT邦研究生 4 級 ‧ 2022-10-25 22:09:17 檢舉

更新一下,我一直想怎麼可能那樣做會有用,果然又發生了XD,
所以問題仍沒解決,我再試試其他方法吧

vicentli iT邦研究生 4 級 ‧ 2022-10-25 22:35:38 檢舉
原先 pv
mountOptions:
  - hard
  - nfsvers=4.1
目前補了
  - proto=tcp
  - rsize=8192
  - wsize=8192

砍 pod 後暫時沒問題,不曉得原來這裡可以設定更多東西,再試試各種設法

我要發表回答

立即登入回答