ossfs資料緩衝適用於小資料量頻繁讀取的情境,開啟ossfs資料緩衝後,能夠有效降低讀取延遲,提升檔案操作效率。本文將為您介紹如何更好地使用和配置ossfs資料緩衝。
在使用快取資料時,需要留意資料的一致性和時效性問題。因此,在對資料即時性要求較高的情境中,不建議開啟ossfs緩衝模式。
功能背景
使用ossfs進行檔案訪問時,ossfs會預設在/tmp
目錄下建立一個臨時檔案tmpfile
作為磁碟緩衝,該檔案對使用者不可見。當所有開啟的檔案控制代碼均被關閉後,系統會自動清理這些臨時檔案。但對於頻繁載入相同資料的業務情境,這種機制可能會導致每次開啟、讀取和關閉同一檔案時都需要重新從OSS下載資料,佔用了大量OSS吞吐能力。
通過開啟ossfs本機快取模式可以有效降低頻繁讀取熱資料對遠程儲存的吞吐壓力,降低讀取延遲,減少對遠程儲存的訪問次數。
適用情境
適用於資料量較小且需頻繁讀取的情境。需確保本地磁碟空間足夠儲存熱點資料。
模式對比
ossfs在預設(無資料緩衝)以及開啟資料緩衝這兩種模式下,其功能差異如下表所示。在預設模式下建議通過tmpdir選項將臨時檔案從/tmp目錄調整到資料盤目錄,避免佔用系統硬碟空間。
模式 | 讀操作 | 寫操作 | 效能 |
預設(無資料緩衝) | 每次均從OSS Bucket讀取,下載的資料會寫到臨時檔案,再從臨時檔案中讀取。所有控制代碼關閉時清理該檔案。 | 會產生臨時檔案,只有在所有控制代碼都關閉時才會將其刪除。在寫入大量檔案的過程中,容易佔用大量的磁碟空間。 如果本地磁碟空間不足,會提前上傳分區資料並清理緩衝。在這種情況下,寫入速度會受到OSS上傳速度的制約。 | 效能取決於磁碟效能和OSS的延遲。 |
資料緩衝 | 首次從OSS Bucket讀取後在緩衝路徑建立檔案,重複讀取從本地擷取。 | 先將資料寫入本機快取,當檔案觸發重新整理和關閉操作時,會統一將資料上傳至OSS Bucket。如果本機快取空間不足,會提前上傳分區資料並清理緩衝。在這種情況下,寫入速度會受到OSS上傳速度的制約。 | 如果本地有緩衝,效能則取決於磁碟效能。如果沒有緩衝,則和預設模式一樣。 |
配置選項
ossfs緩衝配置選項如下:
選項名稱 | 描述 | 預設值 |
use_cache | 啟用資料緩衝並指定資料緩衝路徑。預設不啟用。您可以通過指定該選項來配置緩衝路徑。 例如,您可以在掛載時添加 | 無 |
ensure_diskfree | 控制預留磁碟空間大小。預設不預留。您可以通過該選項設定保留的可用硬碟空間大小,避免磁碟寫滿影響其他應用寫入,單位為MB。 例如,您需要設定ossfs保留1024 MB的可用磁碟空間,則可以在掛載時添加 | 無 |
del_cache | 控制刪除本機快取。預設不刪除。您可以通過設定該選項來配置ossfs清理本機資料緩衝。 例如,您可以在掛載時添加 | 無 |
max_dirty_data | 當寫檔案大小超過這個值時,不用關閉檔案就會提前上傳。預設值為5120 MB。 例如,您需要設定寫檔案超過2000 MB就提前上傳,則可以在掛載時添加 | 5120 單位:MB |
資料緩衝管理機制
緩衝模式下,關閉檔案時不會對磁碟上的快取檔案進行清理,以便在未來再次讀取時可以直接使用。
緩衝空間不足時,緩衝會對快取資料進行淘汰。
在進行讀寫操作時,系統會檢查磁碟空間的使用方式,一旦磁碟空間不足,就會觸發回收操作。回收操作以單個快取檔案為最小單位進行。
使用建議
如果您有頻繁訪問的熱檔案,建議開啟資料緩衝並配置緩衝路徑。這樣在重複讀取時能夠直接從本地擷取檔案,從而減少訪問延遲,有助於頻繁訪問的檔案實現快速載入。與此同時,還能減少對OSS的請求量。
如果您的緩衝空間所在磁碟還有其他應用在使用,那麼建議在使用時添加掛載選項
ensure_diskfree
。這樣可以預留一定的空間,以保證系統的正常運行。不建議在多寫多讀,或者一寫多讀且要求多用戶端資料保持一致性的情境下使用。
寫情境下ossfs緩衝必須存在,若您不想浪費磁碟空間,建議使用ossutil。
在大檔案一次性讀取的情境中,緩衝的作用較為有限。因此,建議使用直讀模式以降低磁碟空間的佔用。
資料緩衝的效能與快取資料所在磁碟的效能密切相關。建議選擇效能較好的磁碟,例如:ESSD AutoPL開啟效能突發、彈性臨時盤或本地碟。具體詳情,請參見ESSD AutoPL雲端硬碟。