Linux怎么对文件内容trim,Linux平台下SSD的TRIM指令的最佳使用方式(不区别对待NVMe)...
SSD寫數據會出現什么問題
SSD讀寫的單位不是位,而是一個塊。如果要改變這個塊中的一位,首先要將整個塊擦寫成1,然后再寫入更新的數據。
為了解決擦寫塊的低效,SSD的策略是將需要改寫的塊,讀取出來,進行數據修改,然后寫入到新的,已經擦除完的塊中。
新的SSD,沒用的塊很多,無需擦寫,直接寫入,性能很高。隨著使用量增加,當寫入時無可用塊時,則只能先擦寫再寫入。此時SSD性能很差。
理論上,SSD內部定期將垃圾塊進行回收擦寫,但是SSD無法確認哪些數據是需要回收的。
解決問題的思路
針對SSD使用時間越長可用塊變少以致于性能變差,可以讓SSD“知道”哪些塊可以回收,從而提前擦寫垃圾塊,以提升性能。
那么怎么做呢?解釋這個問題需要先了解文件系統是如何“刪除文件”的。
文件系統只是將文件頭作一個已刪除的標記,表明文件被刪除了,即沒有真正刪除文件,只是標識刪除。(Linux下真正刪除的時機可能是寫滿、ramdisk、斷電等時刻,此處不作深究)
SSD 具有一種稱為 TRIM 的功能。從本質上講,這是一種用于回收設備上未使用的塊的方法,該塊可能先前已被寫入,但不再包含有效數據,因此可以返回到通用存儲池以供重用。
TRIM就是這種“告知”SSD:“這些文件(塊)已經刪除了,你可以提前擦寫以提高性能!”
經過眾多資料的洗禮,我發現TRIM仿佛并非有想像中那么好,因為開啟TRIM功能后,每次刪除文件是真正的刪除,SSD就可能去回收那些垃圾塊,會降低SSD的性能!
解決之法是定時TRIM,而Systemd管理的Linux系統中都有一個命令 fstrim,就是作TRIM操作,可以用于普通SSD與NVMe
一次清理垃圾塊的操作:(釋放了這么多,難怪滿了)
sudo fstrim --fstab --verbose
Systemd管理的系統有一個專用的fstrim服務與定時器,開啟定時器方法:
#查看fstrim定時器狀態
sudo systemctl status fstrim.timer
#開啟fstrim定時器自啟
sudo systemctl enable --now fstrim.timer
#列出timer定時器列表
sudo systemctl list-timers --all
以上就是本文內容。
引文:
總結
以上是生活随笔為你收集整理的Linux怎么对文件内容trim,Linux平台下SSD的TRIM指令的最佳使用方式(不区别对待NVMe)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java web spark_spark
- 下一篇: 文件服务器 权限和安全,NTFS安全权限