如何在Amazon S3上配置加密文件系统

云计算
S3QL作为一款开源云端文件系统,基于FUSE的文件系统提供多个商业或开源的云存储后端,如Amazon S3、 Google Cloud Storage、Rackspace CloudFiles以及OpenStack。并且3QL提供最大2T的文件大小、压缩、UNIX属性、加密、重复数据删除等支持功能。但S3QL限制是不能把同一个S3FS文件系统在几个不同的电脑上同时挂载,只能一台电脑访问它。另外,ACL也并没有被支持。

提及云计算,亚马逊Amazon S3是备受关注的商业云存储服务。Amazon S3以能承受的价格提供高可用性、可扩展、无限容量的对象存储服务。为了加速云产品的广泛采用,产品通过明确的API和SDK打造一个良好的开发者生态系统。

S3QL作为一款开源云端文件系统,基于FUSE的文件系统提供多个商业或开源的云存储后端,如Amazon S3、 Google Cloud Storage、Rackspace CloudFiles以及OpenStack。并且3QL提供最大2T的文件大小、压缩、UNIX属性、加密、重复数据删除等支持功能。但S3QL限制是不能把同一个S3FS文件系统在几个不同的电脑上同时挂载,只能一台电脑访问它。另外,ACL也并没有被支持。

笔者从Xmodulo网站了解到,基于Amazon S3用S3QL配置一个加密文件系统的技巧说明。作为一个使用范例,将节省如何在挂载的S3QL文件系统上运行rsync备份工具。(图片来源Xmodulo网站)

前期工作准备

如何在开源应用Amazon S3上配置加密文件系统

如何在开源应用Amazon S3上配置加密文件系统

首先,需要一个Amazon AWS帐号(注册是免费的,但需要有效的信用卡)。创建AWS access key,S3QL使用这些信息来访问你的AWS帐号。之后通过AWS管理面板访问AWS S3,并为S3QL创建一个新的空bucket。

为了能获取最佳性能考虑,选择一个距离你最近的区域。

Linux上安装S3QL

大多数Linux发行版中都有预先编译好的S3QL软件包。对于Debian、Ubuntu或Linux Mint,通过以下命令行可以进行安装:

  1. \$ sudo apt-get install s3ql 

对于Fedora:

  1. \$ sudo yum install s3ql 

对Arch Linux使用AUR进行安装。

●首次配置S3QL

在~/.s3ql目录中创建autoinfo2文件,S3QL一个默认的配置文件。这个文件包括AWS access key,S3 bucket名以及加密口令。这个加密口令将被用来加密一个随机生成的主密钥,而主密钥将被用来实际地加密S3QL文件系统数据。

  1. \$ mkdir ~/.s3ql 
  2. \$ vi ~/.s3ql/authinfo2 

 

开源应用!Amazon S3上配置加密文件系统

指定的AWS S3 bucket需要预先通过AWS管理面板来创建。为了安全起见,让authinfo2文件仅对创建人可访问。

  1. \$ chmod 600 ~/.s3ql/authinfo2

创建S3QL文件系统

在AWS S3上创建一个S3QL文件系统,使用mkfs.s3ql工具来创建一个新的S3QL系统。其中bucket名应该与authinfo2文件中所指定的相符。使用“--ssl”参数将强制使SSL连接到后端存储服务器。默认情况下,mkfs.s3ql命令在S3QL文件系统中启用压缩和加密。

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

输入一个加密口令。请输入在~/.s3ql/autoinfo2中通过“fs-passphrase”指定的那个口令。

如果一个新文件系统被成功创建,你将会看到这样的输出:

 

开源应用!Amazon S3上配置加密文件系统

#p#

挂载S3QL文件系统

当创建S3QL文件系统之后,下一步要挂载它。首先创建一个本地的挂载点,然后使用mount.s3ql命令来挂载S3QL文件系统。

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

挂载一个S3QL文件系统不需要特权,只要确定挂载点有写权限即可。

因为性能原因,S3QL文件系统维护了一份本地文件缓存,里面包括了最近访问的文件。可以通过“--cachesize”和“--max-cache-entries”选项来自定义文件缓存的大小。

如果想要除你以外的用户访问一个已挂载的S3QL文件系统,使用“--allow-other”选项。如果你想通过NFS导出已挂载S3QL文件系统到其他设备,使用“--nfs”选项。

 

开源应用!Amazon S3上配置加密文件系统

  1. \$ df ~/mnt_s3ql 
  2. \$ mount | grep s3ql 

运行mount.s3ql之后,检查S3QL文件系统是否被成功挂载。

卸载S3QL文件系统

卸载一个S3QL文件系统,使用umount.s3ql命令。它将会等待所有数据(包括本地文件系统缓存中的部分)成功传输到后端服务器。这个过程时间取决于等待写的数据的多少。

  1. \$ umount.s3ql ~/mnt_s3ql 

 

开源应用!Amazon S3上配置加密文件系统

查看S3QL文件系统统计信息,你可以使用s3qlstat命令,它将会显示总的数据、元数据大小、重复文件删除率和压缩率等信息。还可以使用fsck.s3ql命令来检查和修复 S3QL 文件系统。与 fsck 命令类似,待检查的文件系统必须首先被卸载。

  1. \$ s3qlstat ~/mnt_s3ql 
  2. \$ fsck.s3ql s3://[bucket-name] 

S3QL使用案例:Rsync备份

之前也提到将介绍本地文件系统备份。使用rsync增量备份工具,特别是因为S3QL提供了一个rsync的封装脚本(/usr/lib/s3ql/pcp.py)。这个脚本允许你使用多个rsync进程递归地复制目录树到S3QL目标。

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

 

开源应用!Amazon S3上配置加密文件系统

下面这个命令使用4个并发的rsync连接来备份~/Documents里的所有内容到一个S3QL文件系统。

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

这些文件将首先被复制到本地文件缓存中,然后在后台再逐步地同步到后端服务器。

责任编辑:Ophira 来源: 中关村在线
相关推荐

2018-05-17 22:30:01

Amazon S3收集存储

2013-06-19 09:44:31

AmazonS3加密云存储

2018-03-25 10:52:06

Amazon S3数据存储

2017-09-04 15:37:19

2018-02-25 09:48:36

LinuxUbuntu文件系统

2009-08-27 10:51:15

ibmdw云计算

2009-07-31 17:01:00

ibmdwAmazon

2013-04-07 09:28:05

亚马逊Amazon S3

2014-04-01 10:22:47

Linux命令行Amazon S3云存储

2013-06-25 09:29:46

OpenStackAmazon S3云存储

2015-03-09 10:12:51

AWS S3AWSCloudFront

2016-12-07 13:20:45

AWSS3Amazon Athe

2017-08-21 13:41:42

AWSAmazon S3AI

2018-01-02 10:27:25

2012-04-27 11:09:44

AmazonAWS

2014-04-09 10:16:28

Linux文件系统fsck工具

2014-12-03 08:53:59

eCryptFS加密文件

2018-02-23 14:50:30

2015-08-03 09:20:24

2010-01-14 09:52:27

linux文件系统
点赞
收藏

51CTO技术栈公众号