如何建立一个Tahoe-LAFS分布式文件系统在Ubuntu 14.04服务器

### IntroductionTahoe-LAFS是一个分布式的“最小授权”文件系统,可以很容易地扩展到提供一个强大,网络感知存储网络。随着类似的磁盘级别的RAID配置增益的好处,太浩湖,LAFS利用了类似的模式来加密和分裂...

介绍

Tahoe-LAFS是一个分布式的“最小权限”文件系统,可以轻松扩展以提供一个健壮的网络感知存储网络。 利用类似于RAID配置在磁盘级获得的好处,Tahoe-LAFS利用类似的模式在多个服务器之间加密和分割文件。

在本指南中,我们将使用三个Ubuntu 14.04 VPS实例来设置Tahoe-LAFS系统。 这将允许我们在3个单独的服务器之间分配我们的数据,给我们冗余和更大的存储池比任何单个服务器。

安装Tahoe-LAFS组件

Ubuntu 14.04存储库包含在撰写本文时(1.10.0)的Tahoe-LAFS的最新版本。 我们可以使用它来在我们的每台服务器上安装组件。

sudo apt-get update
sudo apt-get install tahoe-lafs

这将在系统可访问的位置安装Tahoe-LAFS python包。

为了隔离我们的配置,让我们创建一个非特权用户来处理我们的Tahoe-LAFS配置:

sudo adduser tahoe_user

为您的用户选择密码。 接下来,我们将转换为新用户,以获取我们的指南的剩余部分:

su - tahoe_user

配置介绍人以管理节点连接

在配置集群时我们需要做的第一步是设置我们的“介绍人”。 引导器仅仅是用作连接客户端和存储节点的集线器的节点。

导引器(或导引器组件,如果机器还包含存储节点)实际上不传输任何文件或存储任何数据。 它的唯一责任是收集存储位置的地址,并将它们提供给请求访问集群的客户端。 实际数据不通过导引器。

我们只需要通过我们的第一台计算机上这一步运行。 所有其他服务器将使用同一个介绍器连接到集群并发现彼此。

要开始,我们可以运行我们第一个Tahoe命令。 这将在我们的家目录中的隐藏目录中称为内引导初始化我们Tahoe.introducer

tahoe create-introducer ~/.introducer

这将创建目录并在里面放一些配置文件。 我们不必调整任何这些设置,因为它们是非常基本的。

为了使介绍人在线,我们只需要告诉Tahoe启动此组件:

tahoe start ~/.introducer

STARTING '/home/tahoe_user/.introducer'

您的介绍人现在已启动,您可以开始创建并将存储节点连接到此“网格”(一起工作的集合节点集的名称)。

但首先,我们需要从我们的新介绍人中提取一个重要的信息。 这是我们的存储节点可以用来连接的地址。 要找到此,您可以键入此命令:

cat ~/.introducer/private/introducer.furl

pb://kvhp5ynrbaiqw4ye2iagu4s2bkgj3dqb@107.170.41.189:57972,10.128.1.228:57972,127.0.0.1:57972/ysslmcvu23f7opkxj4db5r5mdan3pj6m

这是我们需要的网络地址,以便配置我们的存储节点,因此请复制并粘贴到您稍后可以访问的位置。

配置存储节点保留数据

现在我们已经配置并在线配置了介绍器组件,我们需要开始制作我们的存储组件,以便我们实际上有一个可用于写入的存储池。

在生产环境中,您可能希望将介绍器节点放置在与存储单元完全独立的VPS实例上。 您还希望将数据分布在比我们将要展示的更大的池中。 然而,对于本指南,我们将有3个存储节点,其中一个还有我们的介绍人。

在每个服务器上,通过键入以下内容创建常规存储节点:

tahoe create-node

这将创建类似于我们的介绍目录的通用文件夹结构,但具有不同的信息。 这是位于~/.tahoe默认。

我们需要调整配置文件,然后我们才能继续。 使用编辑器打开它:

nano ~/.tahoe/tahoe.cfg

首先,为每个节点创建一个唯一的名称。 这将用于识别每个服务器,并可以给你线索调试问题:

nickname = node-name

接下来,我们将不得不调整web.port参数。 目前,它只接受来自本地计算机的连接。 你可以将其更改为0.0.0.0 ,以允许从所有接口的连接,或将其绑定到特定的IP地址:

web.port = tcp:3456:interface=0.0.0.0

接下来,我们需要找到introducer.furl参数。 我们需要在导入器配置期间使用导入器修改此。 它应该看起来像这样:

introducer.furl = pb://kvhp5ynrbaiqw4ye2iagu4s2bkgj3dqb@107.170.41.189:57972,10.128.1.228:57972,127.0.0.1:57972/ysslmcvu23f7opkxj4db5r5mdan3pj6m

我们需要调整的下一个参数是注释掉参数shares.neededshares.happyshares.total 让我们深入了解这些参数的含义:

共享参数是什么意思?

shares.*参数也许是一些最重要的配置决定你将不得不作出在设置你的Tahoe-LAFS系统。 它配置您具有的冗余量和数据占用的空间量。

简而言之,当文件上传时,它被分成“共享”。 每个共享,当与一定数量的其他共享结合时,可以用于重新创建文件。

shares.total参数指示究竟是如何在文件上传创建多只股份。 默认情况下,这是“10”。

shares.needed是重新创建整个文件所需的股票数量。 默认情况下,这是“3”。 因此,如果这被设置为“1”,您将有冗余,但将有一个完整的文件副本创建10次。

这两个参数组合起来为客户端创建共享策略。 默认值指示当文件上传时,它将被分为10个不同的共享。 这些共享将是冗余的,以便其中任何3个可以用于重新创建文件。

这意味着, shares.needed / shares.total会给我们的开销需要冗余地存储文件时,文件大小相乘的量。 在默认安排中,与在常规磁盘上存储文件相比,您的文件占用大约3.3倍的存储空间。

这可能看起来很多,但你也必须意识到,你失去了任何7个共享,仍然能够重建一个完整的文件的好处。

最后一个参数, shares.happy用于配置如何你的股票将服务器之间分发。 虽然shares.neededshares.total参数处理“股份”,该shares.happy参数指定实际的服务器。

这将设置可用于接收份额副本的服务器的最小数量。 如果少于服务器数量可用,上传将不会成功。 这用于确保您的数据分布在合理数量的节点上。 默认情况下,此值设置为“7”。

由于我们只有3个节点可用,我们需要调整这些属性中的一些。 由于每个服务器可容纳同一文件的多个股票,我们真的需要调整的参数是shares.happy 这必须是服务器数量或更少。

对于我们而言,我们将取消注释所有这些,我们将改变shares.happy为“3”,我们的服务器总数:

shares.needed = 3
shares.happy = 3
shares.total = 10

这些都可以演示,但你会想调整它们更多取决于你的需要(你需要非常高的冗余,或磁盘空间更多的问题吗?)。

完成在每个节点上编辑文件后,您可以键入以下命令启动每个存储节点:

tahoe start

与Web界面交互

当所有的节点都在涨,您可以通过在港浏览到您的任何VPS实例的访问Tahoe-LAFS文件系统3456

http://your_ip:3456

你应该得到一个网页,显示所有的节点和网格的接口:

Tahoe-LAFS主页

这是您的节点的概述。 因为Tahoe-LAFS不假定你运行在自己的硬件上,并且不假定你是唯一的运算符,它并不真正包含一个按名称查询数据的接口。 它假设所有者将拥有检索上传时提供的文件的信息。

让我们试着用一点接口来演示。

首先,我们通过点击左侧的“创建目录”按钮创建一个目录。 默认选择(SDMF)适用于我们的目的:

Tahoe-LAFS创建目录

你会被带到目录页面看起来像这样:

Tahoe-LAFS目录页

这个目录没有我们习惯的标准意义上的名称。 相反,它几乎有一个ID(实际上,几个ID)。 因为它没有名称和Tahoe-LAFS没有实现查询的安全原因,如果我们现在不存储它的信息,我们将无法回到此目录。

您可以在浏览器中将此页面添加为书签,也可以记录与目录关联的ID。 要获取ID,请点击页面顶部的“有关此目录的更多信息”链接:

Tahoe-LAFS更多信息链接

你将被带到与存储索引,对象类型的网页,并且最重要的是, 访问帽浩-URI的 这些在列表中的一个表中的页面:

Tahoe-LAFS访问帽

这可能看起来像访问一个简单的目录所需的很多信息,它是。 对于目录,我们有一个用于读写访问的访问URI,以及一个用于只读访问的独立访问URI,我们可以给出。

这是我们需要返回到此目录的信息。 您可以复制并粘贴到某处。 如果您是脚本,请点击“JSON”链接以获取更易于理解的演示文稿:

[
 "dirnode",
 {
  "rw_uri": "URI:DIR2:nkqxlvkfkxuh2xi7t4g2h2uyxe:p2hjy74uoro4ce5xccsq4nr2gkhwzx4cdqnmz4hbb3gysx7quata",
  "verify_uri": "URI:DIR2-Verifier:vieiojcnkuoq5kq6e2zjavgznq:p2hjy74uoro4ce5xccsq4nr2gkhwzx4cdqnmz4hbb3gysx7quata",
  "ro_uri": "URI:DIR2-RO:dpviyzeqau7skc5zfzil2s5pnq:p2hjy74uoro4ce5xccsq4nr2gkhwzx4cdqnmz4hbb3gysx7quata",
  "children": {},
  "mutable": true
 }
]

在目录内,我们可以使用可用的按钮轻松上传文件。 您可以使它们不可变(只读),也可以通过选择单选按钮进行写入。 您不必跟踪这些文件的所有URI,只要它们保存在您具有URI的目录中即可。

如果你想要更多的功能,有多种可选择前端太浩-LAFS这里列出。 特别感兴趣的可能是命令行界面和SFTP界面,这可以帮助您以更容易的方式管理您的文件。 例如,CLI允许您为目录和文件创建别名,以便您不必跟踪URI。

结论

到目前为止,您应该了解如何在各种不同的存储介质上设置分布式加密文件系统,无论您是否信任管理员。 这允许您避免某些由其他人管理您的数据所固有的信任问题。

作者:Justin Ellingwood