如何在Ubuntu14.04服务器上设置Tahoe-LAFS分布式文件系统
介绍
Tahoe-LAFS 是一个分布式“最小权限”文件系统,可以轻松扩展以提供强大的网络感知存储网络。 Tahoe-LAFS 具有类似于 RAID 配置在磁盘级别获得的优势,利用类似的模型在多个服务器之间加密和拆分文件。
在本指南中,我们将使用三个 Ubuntu 14.04 VPS 实例设置 Tahoe-LAFS 系统。 这将使我们能够在 3 个独立的服务器之间分配我们的数据,从而为我们提供冗余和比任何单个服务器更大的存储池。
安装 Tahoe-LAFS 组件
Ubuntu 14.04 存储库包含撰写本文时最新版本的 Tahoe-LAFS (1.10.0)。 我们可以使用它在我们的每台服务器上安装组件。
sudo apt-get update sudo apt-get install tahoe-lafs
这会将 Tahoe-LAFS python 包安装在系统可访问的位置。
为了隔离我们的配置,让我们创建一个非特权用户专门用于处理我们的 Tahoe-LAFS 配置:
sudo adduser tahoe_user
为您的用户选择一个密码。 接下来,我们将过渡到我们的新用户,以了解我们指南的其余部分:
su - tahoe_user
配置介绍人以管理节点连接
我们在配置集群时需要采取的第一步是设置我们的“介绍人”。 引入器只是一个节点,用作连接客户端和存储节点的集线器。
引入器(或引入器组件,如果机器还包含存储节点)实际上并不传输任何文件或存储任何数据。 它的唯一职责是收集存储位置的地址并将它们提供给请求访问集群的客户端。 实际数据不经过介绍人。
我们只需要在我们的 first 机器上运行这一步。 所有其他服务器将使用相同的引入器连接到集群并相互发现。
首先,我们可以运行我们的第一个 Tahoe 命令。 这将在我们的主目录中名为 .introducer
的隐藏目录中初始化我们的 Tahoe 介绍器
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
首先,为每个节点创建一个唯一的名称。 这将用于识别每个服务器,并可以为您提供调试问题的线索:
昵称 =节点名称
接下来,我们必须调整 web.port
参数。 目前,它只接受来自本地计算机的连接。 您可以将其更改为 0.0.0.0
以允许来自所有接口的连接,或将其绑定到您的特定 IP 地址:
web.port = tcp:3456:interface=0.0.0.0
接下来,我们需要找到introducer.furl
参数。 我们需要使用我们在介绍人配置期间获得的介绍人 furl 对其进行修改。 它应该看起来像这样:
introducer.furl = pb://kvhp5ynrbaiqw4ye2iagu4s2bkgj3dqb@107.170.41.189:57972,10.128.1.228:57972,127.0.0.1:57972/ysslmcvu23f7opkxj4db5r5mdan3pj6m
接下来我们需要调整的参数是注释掉的参数shares.needed
、shares.happy
、shares.total
。 让我们更深入地了解这些参数的含义:
共享参数是什么意思?
shares.*
参数可能是您在设置 Tahoe-LAFS 系统时必须做出的一些最重要的配置决定。 它配置您拥有的冗余量以及数据将占用的空间量。
简而言之,当一个文件被上传时,它被分成“共享”。 每个共享与一定数量的其他共享组合时,可用于重新创建文件。
shares.total
参数准确地指示在上传文件时创建了多少共享。 默认情况下,这是“10”。
shares.needed
是重新创建整个文件所需的共享数。 默认情况下,这是“3”。 因此,如果将其设置为“1”,则会有冗余,但会创建 10 次文件的完整副本。
这两个参数结合起来为客户端创建共享策略。 默认值规定,当一个文件被上传时,它将被分成 10 个不同的份额。 这些共享将是冗余的,因此可以使用其中任意 3 个来重新创建文件。
这意味着当乘以文件大小时,shares.needed
/ shares.total
将为我们提供冗余存储文件所需的开销。 在默认安排下,您的文件将占用大约 3.3 倍于将文件存储在普通磁盘上的存储空间。
这可能看起来很多,但您还必须意识到您正在获得失去其中任何 7 个共享的好处,并且仍然能够重建一个完整的文件。
最后一个参数 shares.happy
用于配置您的共享将如何在服务器之间分配。 shares.needed
和 shares.total
参数处理“共享”,而 shares.happy
参数指定实际服务器。
这设置了可用于接收共享副本的服务器的最小数量。 如果可用服务器数量少于可用服务器,则上传不会成功。 这用于确保您的数据分布在合理数量的节点上。 默认情况下,此设置为“7”。
由于我们只有 3 个节点可用,我们需要调整其中的一些属性。 由于每个服务器都可以容纳同一文件的多个共享,因此我们真正 需要 调整的唯一参数是 shares.happy
。 这必须是服务器的数量或更少。
出于我们的目的,我们将取消所有这些注释,并将 shares.happy
更改为“3”,即我们的服务器总数:
share.needed = 3 个 share.happy = 3 个share.total = 10
这些对于演示来说很好,但您需要根据您的需要对它们进行更多调整(您需要非常高的冗余,还是磁盘空间更成问题?)。
完成对每个节点上的文件的编辑后,您可以通过键入以下命令启动每个存储节点:
tahoe start
与 Web 界面交互
在所有节点都启动后,您可以通过浏览端口 3456
上的任何 VPS 实例来访问 Tahoe-LAFS 文件系统:
http:// your_ip :3456
你应该得到一个显示所有节点的网页和一个网格接口:
这是您的节点的概述。 因为 Tahoe-LAFS 不假设您在自己的硬件上运行,也不假设您是唯一的操作员,所以它实际上不包含按名称查询数据的接口。 它假定所有者将具有检索上传时提供的文件的信息。
让我们尝试使用界面来演示一下。
首先,让我们通过单击左侧的“创建目录”按钮来创建一个目录。 默认选择 (SDMF) 适合我们的目的:
您将被带到如下所示的目录页面:
这个目录没有我们习惯的标准名称。 相反,它几乎有一个 ID(实际上是几个 ID)。 因为它没有名字,而且 Tahoe-LAFS 出于安全原因没有实现查询,所以如果我们现在不存储有关它的信息,我们将无法回到这个目录。
您可以在浏览器中将此页面添加为书签,也可以记录与目录关联的 ID。 要获取 ID,请单击页面顶部的“有关此目录的更多信息”链接:
您将被带到一个包含存储索引、对象类型以及最重要的是 访问上限 或 Tahoe-URIs 的页面。 这些在页面中心的表格中列出:
这似乎是访问一个简单目录所需的大量信息,而且确实如此。 对于目录,我们有一个用于读写访问的访问 URI,以及一个单独的用于我们可以提供的只读访问的访问 URI。
这是我们需要回到这个目录的信息。 您可以将其复制并粘贴到某处。 如果您正在编写脚本,请单击“JSON”链接以获得更易于理解的演示文稿:
[ “dirnode”, { “rw_uri”: “URI:DIR2:nkqxlvkfkxuh2xi7t4g2h2uyxe:p2hjy74uoro4ce5xccsq4nr2gkhwzx4cdqnmz4hbb3gysx7quata”, “verify_uri”: “URI:DIR2-Verifier:vieiojcnkuoq5kq6e2zjavgznq:p2hjy74uoro4ce5xccsq4nr2gkhwzx4cdqnmz4hbb3gysx7quata”, “ro_uri”: “URI:DIR2-RO: dpviyzeqau7skc5zfzil2s5pnq:p2hjy74uoro4ce5xccsq4nr2gkhwzx4cdqnmz4hbb3gysx7quata”,“儿童”:{},“可变”:真 } ]
在目录内部,我们可以使用可用按钮轻松上传文件。 您可以通过选择单选按钮使它们不可变(只读)或可写。 您不必跟踪这些文件的所有 URI,只要它们保存在您拥有 URI 的目录中即可。
如果您想要更多功能,这里列出了 Tahoe-LAFS 的各种 替代前端。 特别感兴趣的可能是命令行界面和 SFTP 界面,它们可以帮助您以更轻松的方式管理文件。 例如,CLI 允许您为目录和文件创建别名,这样您就不必跟踪 URI。
结论
到现在为止,您应该对如何在各种不同的存储介质上设置分布式加密文件系统有了一个很好的了解,无论您是否信任管理员。 这使您可以避免让其他人管理您的数据所固有的一些信任问题。