具備自主性效能調整機能的先進檔案系統。邏輯上包裹在一起的儲存池

隨著儲存系統的大型化及複雜化,檔案系統以及儲存管理軟體的設計,從過去的靜態設定及手動效能調整,走向動態設定和執行過程中的自動效能調整,乃為大勢所趨。因為,在過去,檔案系統的配置與管理均有賴於系統管理者手動調整,如果沒有重新建立檔案系統,安裝後再對檔案系統進行效能最佳化是一件非常困難的工作,甚至是不可能的任務。水漲船高的儲存系統容量以及日益增加的效能影響因素,使得手動調整效能非常的費時費力。所以,我們需要自動化、且隨著工作負荷而動態調整的能力。簡而言之,管理機能需要擁有自我調整的機制。

Sun正在發展中的ZFS(Zettabyte File System),堪稱Solaris 10中最重要的新技術,因為此新型檔案系統以達成有效的自我調整及自我管理機制,為其設計上的重點。現在,我們就透過已公開的資料,來檢視其設計上的諸多特色。

Sun在發展ZFS有三個主要目標:對於巨大容量的支援,強大的資料完整性,以及簡單的管理工作。為了達成前兩者,首先,ZFS使用128位元虛擬區塊位址、可擴充性演算法、自我核對資料正確性、機制以及寫入時同步複製(Copy-on-Write)交易(Transaction)模型。

其次,為了簡化管理工作,ZFS採用儲存池(Storage Pool)的觀念,透過儲存池配置器(Storage Pool Allocator)將各儲存設備的實體位址轉換為支援不同區塊長度的虛擬位址區塊,並非僅將儲存系統視為邏輯上的單一連續空間,再透過資料處理單元(Data Management Unit)將這些虛擬位址區塊轉換為實際上的檔案物件,最後這些物件由ZFS POSIX檔案系統層所使用,以實作與POSIX的相容。最重要的是,透過儲存池的概念,可以實作更動態及更加自動化的儲存管理機制,更是ZFS諸多先進特色的基礎。動態磁碟分段串接機制

將多顆磁碟以固定的切塊(Chunk)長度分段串接,藉由同時存取分散在不同磁碟上的檔案切塊以提升檔案存取的效率,已經是行之有年的技術,RAID就是很好的範例。不過,無論是透過軟體或硬體達成的手段,這種「靜態」的分段串接機制卻有不少明顯的缺點。首先,其基本規畫在第一次建立串接組群時就已經被固定,幾乎無法更改,缺乏管理上的彈性,各顆磁碟的工作負荷也會動態的改變。其次,雖然可以透過重疊串接(Overlay Strip)、將相同的資料以不同的切塊長度重複分散在不同數量的磁碟內,雖然可以降低上述問題的影響,但是這會製造額外的切塊重組負擔,進而降低效能。最後,整體的串列組群效能會受限於性能最差的磁碟,因為所有的切塊讀寫,對於I/O動作而言都是必須完成的。

為此,基於寫入複製(Copy-on-Write)和任何地方均能寫入資料(Write-Anywhere)的特性,意味著當寫入資料至一個區塊,這個區塊的資料將會在一個新的位置中被寫入,ZFS導入動態分段串接機制,允許在儲存池中任何磁碟設備寫入任何區塊長度的資料。當儲存池配置器被得知將被寫入檔案的區塊順序,自動將這些區塊寫入分散在儲存中的可用磁碟,毋需系統管理者自行設定。

另外,當新的磁碟被加入儲存池,儲存池配置器自動就會將寫入作業分散過去。反之,當磁碟被移出儲存池前,儲存池配置器自動將其資料移出,再將其自動分散在其它的磁碟上。舉一個例子,我們將現有的磁碟從五顆增加到七顆,新的資料將會自動分散至在全部的七顆硬碟,舊資料依然維持在舊有的五顆硬碟上。如果檔案系統穩定的運作,讀取的分段串接寬度就會從五顆逐步成長至七顆。上述動作都是完全自動化,管理上的彈性遠非靜態機制所能比擬。

進一步而言,動態分段串接機制允許ZFS應付不同效能的磁碟設備,因為可以基於各設備的效能而分配各磁碟的區塊比例。簡而言之,將低速磁碟加入儲存池之中並不會明顯降低整體效能,因為ZFS會將較少的資料區塊寫入速度較慢的磁碟。這對儲存系統管理效率的改進極有貢獻,因為日後設備的更新,不必受限於使用相同的硬體,可以逐步地升級更好的設備。動態檔案區塊調整機制

ZFS支援從512byte至1MB之間的不同虛擬檔案區塊長度,ZFS自動針對個別的檔案選擇最佳的區塊長度,亦允許系統管理者針對個別檔案或檔案系統進行個別的設定。值得注意的是,無論任何檔案系統,最底層的區塊長度一定都是固定的(ZFS應為512byte)。所謂的可變長度區塊,則是指透過ZFS的資料處理單元進行虛擬區塊與實體區塊的對應,這也是區塊長度可以動態調整的主因。

Sun將應用程式的資料存取行為模式區分為四種:一次將循序檔案寫入完畢、慢速增添、快速增添、以及隨機更新。由於ZFS可以動態更換檔案的區塊長度,所以可以針對上述四種行為模式進行最佳化,以達成最佳的檔案存取效能,例如循序寫入使用最大的區塊、隨機更新則選擇最小的區塊,隨著檔案空間的遞減,區塊長度也會動態的更新。對於小於最大區塊1MB的小檔案,則基於減少寫入時間的考量以及降低容量的浪費,則會盡量使用最大的區塊長度。當然,這種設計也並非毫無副作用,因為如果小檔案太多,就會造成磁碟空間上的浪費。不過,整體而言,這可提升檔案存取的效率。以檔案名稱為基礎的預先自動效能調整機制

ZFS可透過自動蒐集、紀錄由各應用程式所使用的檔案名稱,建立起預測檔案長度以及生命期的預測模型,然後再以得到的資訊作為檔案系統最佳化的參考,這個動作也是全自動的。如果遇到檔案系統行為模式偏離既有建立的預測模型,或是工作量有所增減,產生程式就會提高取樣率(Sample Rate),然後重新建立反餽(Feedback)給檔案系統的全新預測模型。反之,如果無事可做,產生器就會放緩運作速度,甚至如果毫無效益可言,整個預測模型亦可予以停擺、不再產生作用。

預先自動調整機制可以應用於很多種最佳化的方式,例如經常被存取的檔案,就優先置於主記憶體中的磁碟快取以及效率較高的硬碟;對於大型循序檔案的暫存區,就可以預先保留事先區塊最佳化後的磁碟空間。ZFS潛在的疑點。自主管理機能將是檔案系統發展的重點

雖然ZFS的自我管理機能看起來很吸引人,但是也並非沒有潛在的問題。首先,天底下沒有白吃的午餐,很明顯的,ZFS一定極為消耗系統資源,尤其是處理器運算能量、主記憶體以及儲存空間。此外,動態分段串接機制將檔案區塊分散在不同的磁碟上,意味著當磁碟損毀,所造成的損失也就非常嚴重,Sun理應會規畫資料保護的機制,不過目前並沒有進一步的資訊。

值得注意的是,在過去,檔案系統之所以無法針對磁碟系統進行最底層的硬體命令(Command)進行最佳化的排序,主因在於檔案系統必須透過裝置驅動程式才能存取硬體、以及無法建立對底層硬體規格的效能評估模型。理論上而言,ZFS已經具備這部分的潛力,是否會實作如此底層的最佳化,將是一個值得觀察的重點。

上述三種ZFS的自動效能調整技術,理論上,可以大幅降低系統管理者設定以及維護所需要的時間及心力,提升工作效率。Sun目前並未公開ZFS的實際產品,也並未透露實作上的細節,甚至尚未證實ZFS將會隨著Solaris 10的上市而發表。不過,無論如何,為了達成更有效率的系統管理,自主管理機制將會是檔案系統發展必然的趨勢,在未來,我們可以預期更多的檔案系統將其概念導入於產品的實作之中,而ZFS只是一個開始。文⊙劉人豪

熱門新聞

Advertisement