為什麼 Ubuntu 中刪除檔案很慢?

為什麼 Ubuntu 中刪除檔案很慢?

我在 stackoveflow 上的一篇文章中讀到,在 Linux 上,當我們刪除一個檔案時,它實際上並沒有被刪除,只是刪除了 inode 表中到該檔案的連結。如果是這樣的話,那麼為什麼刪除不是一個恆定時間的操作呢?

我還嘗試了一個實驗:我創建了一個包含 1500 個圖像的資料夾,並創建了這些圖像的 tar 物件。目錄和 tar 檔案大小相同。刪除tar物件和1500張圖片目錄的時序如下

刪除 tar 檔time rm test.tar


real    0m0.024s
user    0m0.001s
sys     0m0.024s

刪除目錄:time rm -r test


real    0m0.219s
user    0m0.024s
sys     0m0.191s

根據我的理解,這種時間差異是因為
取消連結 1 個檔案與取消連結 1500 個檔案。但是 tar 物件刪除速度不應該快 1500 倍嗎?

答案1

因為它是不是一個簡單的「標記單一索引節點已刪除」操作:https://www.slashroot.in/how-does-file-deletion-work-linux

由於使用了範圍,至少在 ext4 上檔案刪除比在 ext2/ext3 分割區上快得多。

在 SSD 的情況下,由於使用「丟棄」選項,檔案刪除可能會比必要的速度慢,該選項告訴您的 SSD 以物理方式丟棄屬於檔案的所有區塊,以延長 SSD 的使用壽命。這是高度不是建議禁用它。

相關內容