奇怪,怎麼都沒人想到呢?
先前提到說,適當的將檔案系統壓縮,可以提高磁碟的存取效率 - 尤其是 CPU 速度與 IO 速度差很多的時候。雖然沒有完整的數據顯示到底快多少,不過 RANMA K 兄有初步的測試過不壓縮與壓縮時的寫入、讀取速度。況且還有個良好的副作用 - 同樣大的硬碟空間裡,可以裝的東西更多了,而且完全不會變重!
根據用屁股思考就可以領悟的常識,我們知道:
- CPU 的 IO 速度非常快(相對於硬碟)
- Disk 的 IO 速度非常慢(相對於 CPU)
- 大部分人的 Desktop PC,CPU 使用率並不會常保 100%...
- 越大的檔案越有機會產生 Fragmentation,而 Fragmentation 會增加 Seek Time。
- 若資料已經壓縮過了,再壓一次只是浪費時間。(呃... 廢話! = =)
所以,希望有一種檔案系統的,會根據檔案的狀態來選擇性的壓縮檔案,大概像這樣:
- 首先有個選項來針對檔案設定是否壓縮,例如 compress_attribute:
- Always:總是壓縮
- Automatic:根據下述規則決定是否壓縮
- Never:絕對不要壓縮
- 如果檔案太小,就不壓縮。
- 如果檔案已經被壓縮過,就不壓縮。例如:
- 一般壓縮檔:ace, bz2, gz, rar, tbz2, tgz, zip... etc.
- 壓縮過的多媒體檔案:avi, mpg, mpeg, mp3, wma, wmv... etc.
- 壓縮過的圖片檔:gif, jpg, mng, png... etc.
- 其他還沒想到的規則...
當然,這個檔案系統要有現代檔案系統該有的功能,例如:
- Journaling
- Online Repacker
- POSIX ACL
- Online resizing (grow and shrink)
- 其他還沒想到的功能...
如果有相關的資料或論文,還請不吝留個言... 多謝!
1 則留言:
你的看法很有趣,聽起來似乎是可行的。不過自己做一個file system應該是相當大的工程,而且file system這種東西一定要穩定要不然意義不大,所以又更難了。不過Reiser4本身的壓縮加密部分似乎是plugin的形式,我在想是不是開發一個Reiser4的plugin就能達到這樣的需求呢?
張貼留言