Linux如何建立雲端加密檔案系統?

來源:互聯網
上載者:User

Amazon S3 和 Google Cloud Storage 之類的商業雲端儲存體服務以能承受的價格提供了高可用性、可擴充、無限容量的Object Storage Service服務。為了加速這些雲產品的廣泛採用,這些供應商為他們的產品通過明確的 API 和 SDK 培養了一個良好的開發人員生態系統。而雲端式的檔案系統便是這些活躍的開發人員社區中的典型產品,已經有了好幾個開源的實現。

S3QL 便是最流行的開源雲端檔案系統之一。它是一個基於 FUSE 的檔案系統,提供了好幾個商業或開源的雲端儲存後端,比如 Amazon S3、Google Cloud Storage、Rackspace CloudFiles,還有 OpenStack。作為一個功能完整的檔案系統,S3QL 擁有不少強大的功能:最大 2T 的檔案大小、壓縮、UNIX 屬性、加密、基於寫入時複製的快照、不可變樹、重複資料刪除,以及軟、永久連結支援等等。寫入 S3QL 檔案系統任何資料都將首先被本地壓縮、加密,之後才會傳輸到雲後端。當你試圖從 S3QL 檔案系統中取出內容的時候,如果它們不在本機快取中,相應的對象會從雲端下載回來,然後再即時地解密、解壓縮。

 

 

需要明確的是,S3QL 的確也有它的限制。比如,你不能把同一個 S3FS 檔案系統在幾個不同的電腦上同時掛載,只能有一台電腦同時訪問它。另外,ACL(存取控制清單)也並沒有被支援。

在這篇教程中,我將會描述“如何基於 Amazon S3 用 S3QL 配置一個加密檔案系統”。作為一個使用範例,我還會說明如何在掛載的 S3QL 檔案系統上運行 rsync 備份工具。

準備工作

本教程首先需要你建立一個 Amazon AWS 帳號(註冊是免費的,但是需要一張有效信用卡)。

然後 建立一個 AWS access key(access key ID 和 secret access key),S3QL 使用這些資訊來訪問你的 AWS 帳號。

之後通過 AWS 管理面板訪問 AWS S3,並為 S3QL 建立一個新的空 bucket。

 

 

為最佳效能考慮,請選擇一個地理上距離你最近的地區。

 

 

在 Linux 上安裝 S3QL

在大多數 Linux 發行版中都有預先編譯好的 S3QL 軟體包。

對於 Debian、Ubuntu 或 Linux Mint:

$ sudo apt-get install s3ql

對於 Fedora:

$ sudo yum install s3ql

對於 Arch Linux,使用 AUR。

首次配置 S3QL

在 ~/.s3ql 目錄中建立 autoinfo2 檔案,它是 S3QL 的一個預設的設定檔。這個檔案裡的資訊包括必須的 AWS access key,S3 bucket 名,以及加密口令。這個加密口令將被用來加密一個隨機產生的主要金鑰,而主要金鑰將被用來實際地加密 S3QL 檔案系統資料。

$ mkdir ~/.s3ql$ vi ~/.s3ql/authinfo2

[s3]storage-url: s3://[bucket-name]backend-login: [your-access-key-id]backend-password: [your-secret-access-key]fs-passphrase: [your-encryption-passphrase]

指定的 AWS S3 bucket 需要預先通過 AWS 管理面板來建立。

為了安全起見,讓 authinfo2 檔案僅對你可訪問。

$ chmod 600 ~/.s3ql/authinfo2

建立 S3QL 檔案系統

現在你已經準備好可以在 AWS S3 上建立一個 S3QL 檔案系統了。

使用 mkfs.s3ql 工具來建立一個新的 S3QL 檔案系統。這個命令中的 bucket 名應該與 authinfo2 檔案中所指定的相符。使用“--ssl”參數將強制使用 SSL 串連到後端儲存伺服器。預設情況下,mkfs.s3ql 命令會在 S3QL 檔案系統中啟用壓縮和加密。

$ mkfs.s3ql s3://[bucket-name] --ssl

你會被要求輸入一個加密口令。請輸入你在 ~/.s3ql/autoinfo2 中通過“fs-passphrase”指定的那個口令。

如果一個新檔案系統被成功建立,你將會看到這樣的輸出:

 

 

掛載 S3QL 檔案系統

當你建立了一個 S3QL 檔案系統之後,下一步便是要掛載它。

首先建立一個本地的掛載點,然後使用 mount.s3ql 命令來掛載 S3QL 檔案系統。

$ mkdir ~/mnt_s3ql$ mount.s3ql s3://[bucket-name] ~/mnt_s3ql

掛載一個 S3QL 檔案系統不需要特權使用者,只要確定你對該掛載點有寫入權限即可。

視情況,你可以使用“--compress”參數來指定一個壓縮演算法(如 lzma、bzip2、zlib)。在不指定的情況下,lzma 將被預設使用。注意如果你指定了一個自訂的壓縮演算法,它將只會應用到新建立的資料對象上,並不會影響已經存在的資料對象。

$ mount.s3ql --compress bzip2 s3://[bucket-name] ~/mnt_s3ql

因為效能原因,S3QL 檔案系統維護了一份本地檔案快取,裡麵包括了最近訪問的(部分或全部的)檔案。你可以通過“--cachesize”和“--max-cache-entries”選項來自訂檔案快取的大小。

如果想要除你以外的使用者訪問一個已掛載的 S3QL 檔案系統,請使用“--allow-other”選項。

如果你想通過 NFS 匯出已掛載的 S3QL 檔案系統到其他機器,請使用“--nfs”選項。

運行 mount.s3ql 之後,檢查 S3QL 檔案系統是否被成功掛載了:

$ df ~/mnt_s3ql$ mount | grep s3ql

 

 

卸載 S3QL 檔案系統

想要安全地卸載一個(可能含有未提交資料的)S3QL 檔案系統,請使用 umount.s3ql 命令。它將會等待所有資料(包括本地檔案系統快取中的部分)成功傳輸到後端伺服器。取決於等待寫的資料的多少,這個過程可能需要一些時間。

$ umount.s3ql ~/mnt_s3ql

查看 S3QL 檔案系統統計資訊及修複 S3QL 檔案系統

若要查看 S3QL 檔案系統統計資訊,你可以使用 s3qlstat 命令,它將會顯示諸如總的資料、中繼資料大小、重複檔案刪除率和壓縮率等資訊。

$ s3qlstat ~/mnt_s3ql

 

 

你可以使用 fsck.s3ql 命令來檢查和修複 S3QL 檔案系統。與 fsck 命令類似,待檢查的檔案系統必須首先被卸載。

$ fsck.s3ql s3://[bucket-name]

S3QL 使用案例:Rsync 備份

讓我用一個流行的使用案例來結束這篇教程:本地檔案系統備份。為此,我推薦使用 rsync 增量備份工具,特別是因為 S3QL 提供了一個 rsync 的封裝指令碼(/usr/lib/s3ql/pcp.py)。這個指令碼允許你使用多個 rsync 進程遞迴地複製分類樹到 S3QL 目標。

$ /usr/lib/s3ql/pcp.py -h

 

 

下面這個命令將會使用 4 個並發的 rsync 串連來備份 ~/Documents 裡的所有內容到一個 S3QL 檔案系統。

$ /usr/lib/s3ql/pcp.py -a --quiet --processes=4 ~/Documents ~/mnt_s3ql

這些檔案將首先被複製到本地檔案快取中,然後在後台再逐步地同步到後端伺服器。

若想瞭解與 S3QL 有關的更多資訊,如自動掛載、快照、不可變樹,我強烈推薦閱讀 官方使用者指南。歡迎告訴我你對 S3QL 怎麼看,以及你對任何其他工具的使用經驗。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.