介绍
Tahoe-LAFS 是一个分布式的最少权威
文件系统,可以轻松扩展,以提供强大的网络意识的存储网络. 与 RAID 配置在磁盘水平获得的优势相似,Tahoe-LAFS 利用类似的模型来加密和在多个服务器之间分割文件。
在本指南中,我们将使用三个Ubuntu 14.04 VPS实例设置一个Tahoe-LAFS系统,这将使我们能够在3个单独的服务器之间分发我们的数据,给我们更多的冗余和比任何单一服务器更大的存储池。
安装 Tahoe-LAFS 组件
Ubuntu 14.04 存储库包含本文写作时最新的 Tahoe-LAFS 版本 (1.10.0). 我们可以用此来在每个服务器上安装组件。
1sudo apt-get update
2sudo apt-get install tahoe-lafs
这将安装Tahoe-LAFS python包在一个系统可访问的位置。
为了分离我们的配置,让我们创建一个非特权的用户,专门用于处理我们的Tahoe-LAFS配置:
1sudo adduser tahoe_user
选择一个密码为您的用户. 接下来,我们将过渡到我们的新用户的剩余我们的指南:
1su - tahoe_user
配置介绍器来管理节点连接
我们在配置集群时需要采取的第一个步骤是设置我们的介绍者
。介绍者只是一个作为连接客户端和存储节点的枢纽功能的节点。
导入者(或导入者组件如果机器也包含存储节点)实际上不会传输任何文件或存储任何数据,其唯一责任是收集存储位置的地址,并将其交给要求访问集群的客户端。
我们只需要在我们的第一台机器上运行这个步骤,所有其他服务器都将使用相同的介绍器连接到集群并相互发现。
要开始,我们可以运行我们的第一个Tahoe命令,这将初始化我们的Tahoe介绍器在我们的主目录中的隐藏目录中,称为.introducer
。
1tahoe create-introducer ~/.introducer
这将创建目录并将一些配置文件放入里面,我们不必调整这些设置,因为它们非常基本。
要将介绍者带到网上,我们只需要告诉Tahoe启动此组件:
1tahoe start ~/.introducer
1STARTING '/home/tahoe_user/.introducer'
你的介绍者现在已经到来,你可以开始创建和连接你的存储节点到这个网
(集合节点一起工作的名称)。
但首先,我们需要从我们的新介绍器中提取一个重要的信息,这是我们的存储节点可以使用的地址。
1cat ~/.introducer/private/introducer.furl
1pb://[email protected]:57972,10.128.1.228:57972,127.0.0.1:57972/ysslmcvu23f7opkxj4db5r5mdan3pj6m
这是我们需要的网络地址,以便配置我们的存储节点,所以复制并粘贴到您以后可以访问的地方。
配置存储节点以存储数据
现在我们已经配置了我们的介绍组件并在线,我们需要开始制作我们的存储组件,以便我们实际上有一个存储库可用来写入。
在生产环境中,你可能希望你的介绍节点在一个完全独立的VPS实例从你的存储单元中。你也希望在一个比我们将演示的更大的池中分发你的数据。
在每个服务器上,通过键入创建一个常规的存储节点:
1tahoe create-node
这将创建类似于我们介绍目录的一般文件夹结构,但具有不同的信息。
我们需要调整配置文件之前,我们可以继续。
1nano ~/.tahoe/tahoe.cfg
首先,为每个节点创建一个独特的名称. 这将用于识别每个服务器,并可以为您提供调试问题的线索:
nickname = node-name
接下来,我们将不得不调整web.port
参数,目前它只接受来自本地计算机的连接,您可以将其更改为0.0.0.0
以允许来自所有接口的连接,或者将其绑定到您的特定IP地址:
1web.port = tcp:3456:interface=0.0.0.0
接下来,我们需要找到introducer.furl
参数,我们需要通过我们在介绍者配置过程中获得的介绍者 furl来修改它,它应该看起来像这样:
1introducer.furl = pb://[email protected]:57972,10.128.1.228:57972,127.0.0.1:57972/ysslmcvu23f7opkxj4db5r5mdan3pj6m
我们需要调整的下一个参数是评论的参数shares.needed
,shares.happy
,shares.total
。
共享参数意味着什么?
共享
参数也许是您在设置 Tahoe-LAFS 系统时必须做出的一些最重要的配置决策,它会配置您所拥有的冗余量和您的数据将占用的空间。
简而言之,当一个文件被上传时,它被分割成份额
。每个份额,当与一定数量的其他份额相结合时,可以用来重建该文件。
shares.total
参数定义了在上传文件时确切地创建了多少份额。
shares.needed
是重新创建整个文件所需的份数. 默认情况下,这是3
。 因此,如果这个设置为1
,您将有余额,但将有10次创建的文件的完整副本。
这两个参数结合起来为客户端创建共享策略. 默认值决定,当一个文件上传时,它将被分为10个不同的份额。
这意味着shares.needed
/shares.total
将为我们提供必要的余额存储量,如果以文件大小的倍数来存储该文件. 在默认安排中,您的文件将占用大约 3.3 倍的存储空间,比存储文件在常规磁盘上。
这可能听起来像很多,但你也必须意识到你正在赢得失去任何7个股票的优势,并且仍然能够重建一个完整的文件。
最后一个参数shares.happy
用于配置您的股票将如何分配到服务器之间,而shares.needed
和shares.total
参数处理股票
,而shares.happy
参数则指定实际的服务器。
这会设置最少可用的服务器数量来接收共享的副本. 如果少于可用的服务器数量,上传将不会成功. 这将用于确保您的数据分布在合理数量的节点上。
由于我们只有3个节点可用,我们将需要调整一些这些属性. 由于每个服务器可以容纳相同文件的多个部分,我们真正需要调整的唯一参数是shares.happy
。
为了我们的目的,我们将放弃所有这些评论,并将shares.happy
更改为3
,我们的服务器总数:
shares.needed = 3
shares.happy = 3
shares.total = 10
这些是很好的演示,但你会想要根据你的需求来调整它们(你需要非常高的冗余,还是磁盘空间更是一个问题?)。
当您完成在每个节点上编辑文件时,您可以通过键入开始每个存储节点:
1tahoe start
与 Web 界面互动
所有节点完成后,您可以通过浏览您的任何 VPS 实例在端口 3456
访问 Tahoe-LAFS 文件系统:
http://your_ip:3456
您应该有一个网页,显示您的所有节点和您的网格的界面:
因为Tahoe-LAFS不假设你在自己的硬件上运行,也不假设你是唯一的操作员,所以它实际上不包含以名义查询数据的界面。
让我们尝试使用界面来展示一点点。
首先,让我们通过点击左侧的创建目录
按钮创建目录。
您将被带到看起来像这样的目录页面:
相反,它几乎有一个ID(实际上,一些ID)。因为它没有一个名字,Tahoe-LAFS不执行查询安全原因,我们将无法返回这个目录,如果我们不现在存储有关它的信息。
您可以在浏览器中标记此页面,或者您可以记录与目录相关的ID。 要获取这些ID,请点击页面顶部的此目录的更多信息
链接:
您将被带到一个具有存储索引、对象类型和最重要的是 访问帽或 Tahoe-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。
如果你想要更多的功能,这里有各种 Tahoe-LAFS 的替代前端 列出。 特别有趣的可能是命令行界面和 SFTP 界面,可以帮助你以更简单的方式管理你的文件。
结论
到目前为止,您应该有一个很好的想法,如何在各种不同的存储媒体上设置分布式,加密的文件系统,无论您是否信任管理员。