Linux如何防止子樹刪除(
如何防止子樹刪除(rm -rf
)使其他程序無法獲得磁碟 I/O?
我們有一個非常大(多 GB)的 Nginx 記憶體目錄,用於一個繁忙的站點,我們有時需要一次性清除所有目錄。我過去通過將記憶體文件夾移動到新路徑,在舊路徑上創建新記憶體文件夾,然後
rm -rf
ing 舊記憶體文件夾來解決此問題。然而,最近,當我需要在一個忙碌的早晨清除記憶體時,來自 I/O 的 I/O
rm -rf
使我的伺服器程序無法訪問磁碟,因為 Nginx 和它所面向的伺服器都是讀取密集型的。當 CPU 處於空閒狀態並rm -rf
佔用 98-99% 的磁碟 IO 時,我可以看到負載平均攀升iotop
。我
ionice -c 3
在呼叫時嘗試過rm
,但它似乎對觀察到的行為沒有明顯的影響。有什麼辦法可以馴服
rm -rf
更多的共享磁碟?我是否需要使用一種不同的技術來從中獲取線索ionice
?更新:
有問題的文件系統是 AWS EC2 實例儲存(主磁碟是 EBS)。
/etc/fstab
條目如下所示:/dev/xvdb /mnt auto defaults,nobootwait,comment=cloudconfig 0 2
從此頁面收集的所有數據。 以下是刪除大型文件目錄的一些選項。查看文章以了解其製作方式的詳細資訊。
命令經過的系統時間 %CPU cs1* (Vol/Invol) rsync -a –delete empty/a 10.60 1.31 95% 106/22 查找 b/ -type f -delete 28.51 14.46 52% 14849/11 查找 c/ -type f | xargs -L 100 rm 41.69 20.60 54% 37048/15074 查找 d/ -type f | xargs -L 100 -P 100 rm 34.32 27.82 89% 929897/21720 rm -rf 31.29 14.80 47% 15134/11
*cs1 是上下文切換自願和非自願