Linux中國

如何在 Linux 系統中創建一個雲端加密文件系統

需要明確的是,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 怎麼看,以及你對任何其他工具的使用經驗。

via: http://xmodulo.com/2014/09/create-cloud-based-encrypted-file-system-linux.html

作者:Dan Nanni 譯者:felixonmars 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國