S3QL:一個用Python寫成的在線存儲系統
S3QL 是一個在線存儲系統,使用諸如 Google Storage 、 Amazon S3 或 OpenStack 這樣的服務存儲數據。它提供了一個動態的、容量無限的硬盤,任何運行Linux、FreeBSD或OS X的計算機都可以通過互聯網訪問。
S3QL是一個符合標準的全功能Unix文件系統。它有一些額外的特性,使它特別適應于在線備份和歸檔。相比性能和功能而言,它更注重簡潔與優雅。項目創建者 Nikolaus Rath 一直致力于確保源代碼的可讀性和可維護性。以下是S3QL的特性:
- 透明性 ——從概念上講,S3QL與本地文件系統很難區分,例如,它支持硬連接、符號連接、標準Unix權限等;
- 動態大小 ——S3QL文件系統的大小可以根據需求動態增長和縮小;
- 壓縮 ——所有數據在存儲之前都可以使用LZMA、bzip2或Deflate(gzip)算法壓縮;
- 加密 ——在壓縮之后上傳之前,所有數據都可以使用一個256位的密鑰進行AES加密,它還使用SHA256 HMAC校驗和保護數據不被篡改;
- 數據去重 ——如果多個文件有相同的內容,那么冗余數據只存儲一次;
- 不可變樹 ——目錄樹可以設置為不可變的,這一特性有利于確保備份不會被修改;
- 寫入時復制\快照 ——S3QL可以復制整個目錄樹,而不使用任何額外的存儲空間,只有當其中一個副本被修改了時,被修改的數據會占用額外的空間;
- 高性能 ——所有不讀寫文件內容的操作都非常快,因為S3QL將整個文件和目錄結構存儲在一個數據庫中,而后者會在本地緩存,且遠程副本為異步更新;
- 支持低帶寬連接 ——S3QL將文件內容分成多個小塊并緩存在本地。
近日,該項目 在Hacker News上引發了激烈的討論 ,并登上了HN的首頁。不過,雖然討論的內容很多,但關于S3QL的內容相對較少,大多數討論是圍繞類似的解決方案,比如 Duplicity 、 Attic 、 Tarsnap 、 ObjectiveFS 等。網友indiv0根據 S3QL的文檔 斷定,S3QL使用的加密算法為 MAC-then-encrypt 算法。他認為這種算法不好。也有其他網友持類似觀點,其中dlitz就認為這種算法太老。但網友JoachimSchipper并不認為S3QL采用了MAC-then-encrypt算法。另外,網友witten使用過S3QL和Tarsnap,他認為:
S3QL使用了遠程加載文件系統,從根本上講,這不適合無人值守的備份。在許多情況下,S3QL加載的文件系統會在備份過程中因為網絡問題中斷……
另外,S3QL會周期性地發布不支持舊版本文件格式的新版本,或者僅僅向前支持一定的版本數量。因此,如果你升級不夠經常,那么你會發現自己用了一個拒絕讀取現有的GB級數據的版本。
關于第二點, S3QL開源頁面 也提到了:
S3QL已經穩定,可以用于生產環境。不過從一個小版本升級到下一個可能會改變公共接口,或者需要升級文件系統結構。因此,強烈建議在升級前閱讀變更日志。
按照該頁的說法,如果用戶系統支持Python 3.3及以上版本,則建議下載最新的2.x版本。但maint-1.x分支也可以用于生產環境,只是不再進行積極的開發,只會修復影響較大的Bug。更多信息,請查看 S3QL Wiki 。