SSD Cache 運作原理
假如大家有看過 QM2 擴充卡評測的話,應該會知道SSD的存取延遲遠比硬碟低及有著優異的隨機讀寫能力,因此把常用的零散數據暫存在SSD會有助改善I/O效能。在啟用SSD Cache後,假如要讀取的數據有暫存在SSD上,系統會直接從高速的SSD讀取數據;假如要讀取的數據未暫存在SSD上,則會從硬碟讀出數據,再暫存在SSD上,如果數據再次被讀取,便不用再從硬碟讀取,達到加速讀取的效果。在寫入零散數據時,則會先寫在SSD上,並當作已經完成寫入;然而,其實數據並未真正寫入硬碟的檔案系統內,當暫存的數據過多、暫存的時間過長、需要拍攝快照或停用SSD Cache功能等情況下,才會觸發回寫,把資料寫回硬碟內。因此,當有大量數據寫入時,暫存的數據爆滿後,會讓數據回寫及數據寫入同時進行,影響寫入速度。假如SSD Cache的數據在未寫回硬碟的情況下有多個SSD損壞、或SSD內的數據有損毀等情況下,會令硬碟內整個檔案系統損壞,造成損失。
在 QTS 4.4.1 後,QNAP加入了「唯寫快取」功能,系統只會把需要寫入的資料先行寫入到 SSD Cache 上,待系統空閒時才會回寫到磁碟區,而讀取動作則視乎數據是否在SSD Cache上,如果在SSD Cache上,會從SSD Cache上讀取,否則會從磁碟區讀取,但有別於「讀寫快取」,讀出的資料並不會快取到 SSD Cache 上。這個模式主要是針對由較低速的SSD組成的磁碟區,讓由較高速的NVMe SSD把需要寫入的資料先暫時存放,加速整體的寫入效能,最後再把資料一併寫入,以改善SSD寫入放大問題,也延長了磁碟區中的SSD壽命。
有關各種快取模式下讀取時背後進行的動作,可以參考下表:
註:Read Miss 即是需要讀取的資料不在SSD Cache內;Read Hit即是需要讀取的資料在SSD Cache內。
Read Miss | Read Hit | |
Read-Only
唯讀快取 |
Read from HDD
Write to SSD 從硬碟讀取 並寫入到SSD快取 |
Read from SSD Cache
從SSD快取讀取 |
Read-Write
讀寫快取 |
Read from HDD
Write to SSD 從硬碟讀取 並寫入到SSD快取 |
Read from SSD Cache
從SSD快取讀取 |
Write-Only
唯寫快取 |
Read from HDD
從硬碟讀取 |
Read from SSD Cache
從SSD快取讀取 |
有關各種快取模式下寫入時背後進行的動作,可以參考下表:
註:Write Miss 即是需要寫入的資料無法寫入到SSD Cache;Write Hit即是需要寫入的資料成功寫入到SSD Cache。
Write Miss | Write Hit | Flush needed
需要回寫? |
|
Read-Only
唯讀快取 |
Write to HDD
寫入到硬碟 |
Write to HDD & SSD Cache
同時寫入到硬碟及SSD快取 |
No
不需要 |
Read-Write
讀寫快取 |
Write to HDD
寫入到硬碟 |
Write to SSD Cache
寫入到SSD快取 |
Yes
需要 |
Write-Only
唯寫快取 |
Write to HDD
寫入到硬碟 |
Write to SSD Cache
寫入到SSD快取 |
Yes
需要 |