有些朋友能會問說,難道就沒有方法能夠改善1的問題嘛?答案是可以的,只不過要作業系統和SSD廠商雙方面的配合。現在我們在刪除一個檔案的時候,作業系統其實除了把該檔案標記為「刪除」外,是什麼都不做的。實際的刪除動作,是要在新的資料要寫入的時候直接把該檔案作「複寫」的動作。換句話說,刪除/寫入這個動作是在要寫新檔案時才做的。
如果我們把刪除/寫入這個動作在當初作刪除時就先做了呢?跟寫入時花很久的時間比起來,應該比較不會有人介意刪東西的時候久了點吧?這就是TRIM的應用。目前有傳聞Windows 7在正式上市的時候會支援該功能。不過SSD廠商也是要釋出支援TRIM的韌體才行。
在硬碟上面,由於資料要重新寫入沒有任何額外的overhead,
所以在檔案系統中刪除檔案只要直接刪除inode就可以了,
檔案實際用到的地方就當作空的空間,要用時直接再寫一次過去就好了,
不過在FLASH中由於資料要erase之後才能再重新寫入,
所以如果用本來的方法,會到要在重新寫入檔案到那個位置時才會發現這個地方要erase,
會需要比較久,
此外在重複寫入這個地方之前,這塊其實已經刪除掉的地方還占著空間,
實際上是當做還沒餐刪掉,
所以在做Wear-leveling和garbage collection時要做的事都會變多
就我所知現在ATA8標準應該有支援刪除檔案時通知SSD以減少這部分的overhead,
詳細的東西可以去K他的spec應該就能知道...