開源軟件一直是推動協作、基于社區的軟件的重要力量。其中最明顯的例子就是Linux的發展歷程,它的各種發行版已經成為云操作系統和現代應用程序開發人員的首選平臺。
在更高的堆棧中,同樣的理念應用于Docker容器化,以及用于結構化SQL,NoSQL等數據庫平臺。那么,存儲呢?開源軟件開發的演進是否也應用于存儲,或者有哪些可用于那些想要在存儲中實現開源的選項?
開源技術定義
首先,為大家解釋一下開源的定義。根據定義,開源就意味著產品的源代碼可以自由地被任何人訪問和讀取。然而,大多數開放源碼技術項目都是根據許可條款編寫代碼,許可證決定了代碼如何被使用或重復使用,有什么屬性,又如何覆蓋專利以及能被允許用作哪些商業用途。
這對存儲軟件開發意味著什么?實際上,開發一個存儲平臺與開發其他任何軟件沒有什么不同。因此,開放源代碼對存儲有很大的意義,因為它允許在復雜問題上進行大規模協作,同時在持久模型中100%保證數據的準確性。
社區發展
開源已被成功地用作開發操作系統和數據庫的模型。將社區開發模型應用于共享和持久存儲需求是非常有意義的。
對于開源來說,存儲并不是首選,因為大多數早期共享存儲平臺都是在專用硬件上開發的。然而,在過去15年中,服務器和存儲媒體的商品化已經發展到成本足夠低,可靠性足夠高的情況,能從現成的組件中構建存儲平臺。隨著軟件定義存儲(SDS)的火熱,開源存儲也開始邁出發展的步伐。
為什么要開源存儲
作為終端用戶,有什么理由讓你使用開源存儲技術?與商業SDS一樣,開源存儲將購買硬件與軟件分開。這樣就可以為硬件提供源代碼,構建和設計,以獲得成本和運營優勢,例如最小化必須支持的硬件平臺數量。
開源存儲平臺的進一步發展,消除了存儲軟件的資本支出。剩下需要考慮的就是決定是否以及如何支付支持。 事實上,獲得供應商或增值經銷商的支持是大多數企業在使用開源存儲軟件時必須面對的主要問題。
幸運的是,支持模型是存在的。例如,Red Hat(紅帽)公司擁有一個蓬勃發展的業務,用以支持自己的Red Hat Enterprise Linux(RHEL),它可以從Fedora發行版獲得商業上的應用。反過來,RHEL則作為開源技術在諸如CentOS等發行版中獲得。
運行開源存儲提供了與標準商業存儲產品相同級別的靈活性。可以在生產環境上運行商業上支持的開源存儲系統版本。這樣,測試和開發可以使用內部支持的存儲部署來運行。這種方法節省了大量的成本,特別是對于需要橫向擴展對象存儲的非結構化數據。
貢獻者回饋
當然,開源技術的全部意義就是回饋社區。所以每個人都可以自由地為我們討論的平臺的發展做出貢獻。
對于大型企業來說,讓開發人員參與編寫開源存儲軟件是有意義的。 這樣,他們就可以獲得內部支持軟件的機會,無論是完全沒有廠商支持,還是進行開發測試,都可以直接整合新功能。對于長期部署(如存檔和備份),參與維護開放源代碼平臺有助于減輕供應商中斷商業產品發行的風險。
建立你自己的
除了選擇使用商業支持的開源產品,另一個選擇是從開源組件(如Linux iSCSI目標或Linux上的SMB)構建自己的開源產品。你可以使用這些文件來為你的存儲基礎設施提供文件和塊服務,特別是與ZFS文件系統配合使用。 但是,除了開發者社區之外,你將不會得到任何支持。