什么是Tahoe-LAFS?
虽然Tahoe-LAFS可能类似于其他分散或分布式文件系统,如Gluster,Ceph或其他,但它解决的问题却不同。在最权威文件存储(LAFS)设计了以下事项:
1. 机密性:即使您将数据存储在外部服务器上,也可以将数据保密。将敏感数据保留在云中时,存在一些固有风险。例如:
- 如果服务器被黑客入侵,您的数据可能会被盗。
- 具有读访问权限的用户可能会意外泄漏数据或故意窃取数据以获取自己的利益。
通过在数据到达存储服务器之前对其进行加密,可以降低这些风险。
2. 数据完整性:如果加密数据受到破坏,软件会检测到更改,并且在某些情况下,可能仍会恢复原始数据。
3. 冗余:Tahoe-LAFS以冗余方式分发您的数据。
默认情况下,它使用3-of-10配置。这意味着当您上传文件时,它会被拆分为10个共享,并在您的可用存储节点之间随机分配。要重建文件,您需要返回其中三个共享。如果您有十台服务器而且有一些失败,您仍然可以检索您的数据。在均匀分布的共享中,您只需要三台服务器。由于分配是随机的,所需的数量不同。一个服务器可以保存零个,一个,两个或更多个共享,具体取决于生成的随机数(但它倾向于支持接近均匀的分布)。
拥有更多存储节点并将默认的3-of-10更改为其他节点意味着您可以使设置更能抵御故障或攻击。20分之三会给你一个更均匀的分布。十分之一会增加故障阻力,但会保留十份数据。因此,一千兆字节的数据需要10千兆字节的存储空间。这种共享机制可以销毁受损或失败的服务器,创建新服务器,将它们添加到池中,并在需要时重新分配共享。
所有这些使得Tahoe-LAFS非常适合在远程机器上安全地存储敏感数据,同时降低数据丢失的风险。通过添加到计算机池可以动态增加存储空间。要了解更多信息,请访问Tahoe-LAFS文档。
开始之前
注意本指南中的步骤需要root权限。请务必root
使用sudo
前缀或以前缀执行以下步骤。有关权限的更多信息,请参阅“ 用户和组”指南。
- 熟悉我们的入门指南,部署Debian 9(Stretch)图像并完成设置Linode主机名和时区的步骤。
- 更新您的系统:
apt-get update && apt-get upgrade
服务器要求和建议
- 使用默认设置,将需要至少10个存储节点才能获得满意的结果。出于测试目的,您可以减少启动,但请记住,如果存储单元少于7个,则大多数上传都将完全失败。阅读有关的文档
shares.needed
,shares.total
并shares.happy
了解有关如何配置节点的更多信息。 - 创建具有至少2GB RAM的存储节点Linode。您计划上传的文件越大,内存和CPU压力就越高。在Debian 9的存储库中提供当前版本的Tahoe-LAFS,在上传大于40MB的可变文件时至少需要1GB RAM。一旦节点耗尽RAM,您将获得内存不足的终止。定期检查Web用户界面中的“网格状态”页面以维护网格。
- 要获得更可靠和更具弹性的设置,请在不同的数据中心创建Linode。
安装Tahoe-LAFS并设置Introducer
Introducer是中间件,将网络中的存储节点和客户端连接在一起的中心点。
Introducer有各种优点和缺点:
- 允许系统在新对等体加入网格时向每个节点发出警报。
- 告诉加入的计算机它可以连接的当前活动对等体。
- 单点故障的可能性。但,
- 如果没有介绍人,则必须在每个节点上编辑配置文件,并在每次将另一个节点插入网格时添加新的IP地址。
- 允许您配置多个介绍器,以便在崩溃或其他无法预料的事件(最好是在不同的数据中心)中使您的设置更可靠。
熟悉初始Introducer设置后,您可以阅读有关其他Introducer的信息。
- 以root身份登录并创建一个非特权用户:
adduser --disabled-password --gecos "" tahoe
- 安装Tahoe-LAFS:
apt-get install tahoe-lafs
- 以
tahoe
用户身份登录:
su - tahoe - 创建Introducer配置,替换
203.0.113.1
为您的Linode的公共IP地址:
tahoe create-introducer --port=tcp:1234 --location=tcp:203.0.113.1:1234 --basedir=introducer
这将创建一个introducer
包含一些配置文件的目录。日志和标识符也将放在这里。 - 通过启动Introducer生成标识符:
tahoe run --basedir introducer
最后一行应该提到
introducer running
。按CTRL + C以停止该程序。现在生成所需的标识符,称为FURL。 - 使用
cat
以下方式查看 :
cat introducer/private/introducer.furl
复制以pb://开头的整行,并将其粘贴到稍后可以访问的位置。需要使用该值配置存储节点和客户端。 - 从用户注销
tahoe
并返回到root:
exit - 要在引导时自动启动介绍人,请使用以下命令创建systemd服务文件:
/etc/systemd/system/tahoe-autostart-introducer.service 1 2 3 4 5 6 7 8 9 10 11 12
[Unit] Description=Tahoe-LAFS autostart introducer After=network.target [Service] Type=simple User=tahoe WorkingDirectory=/home/tahoe ExecStart=/usr/bin/tahoe run introducer --logfile=logs/introducer.log [Install] WantedBy=multi-user.target虽然可以在此处添加在发生崩溃时重新启动进程的规则,但每次重新启动进程之前,最好在节点,客户端或Introducer崩溃时检查Linode。
- 使服务在引导时自动启动:
systemctl enable tahoe-autostart-introducer.service
- 启动Introducer:
systemctl start tahoe-autostart-introducer.service
您现在可以关闭SSH会话,以避免在配置其余部分时混淆窗口并在错误的Linode上输入命令。
如何重新启动Introducer
如果进程崩溃或遇到错误,请使用这些命令启动或重新启动服务。
启动Introducer服务:
systemctl start tahoe-autostart-introducer.service
重启服务:
systemctl restart tahoe-autostart-introducer.service
将Tahoe-LAFS存储节点添加到网络
虽然该过程可以自动化,以便您可以轻松扩展存储池,但请手动设置第一个节点,以便更好地了解工作原理以及特定文件的位置。“开始之前”部分的初始步骤也适用于此处。
注意如果需要大量磁盘空间,请在Linode上配置块存储设备。
在本节中的其他步骤之前配置块存储。
配置时/etc/fstab
,不是/mnt/BlockStorage1
按照教程中的说明安装卷,而是将其装入/home
。使用mount
命令时使用相同的位置。不幸的是,走这条路线还有一个缺点,就是你无法使用下一小节中提供的步骤自动创建存储节点。
- 启动新的Linode并部署Debian 9后,以root身份登录并创建一个无特权的用户:
adduser --disabled-password --gecos "" tahoe
- 安装Tahoe-LAFS:
apt-get install tahoe-lafs
- 以非特权用户身份登录:
su - tahoe
- 检索在introducer installation安装的步骤6中复制的introducer FURL ,然后将其粘贴
--introducer=
。替换pb://<Introducer FURL>
为您自己的FURL。替换203.0.113.1
在--location
用的Linode的公网IP地址。在新的Linode上重复此步骤时,为每个服务器选择唯一的昵称。
tahoe create-node --nickname=node01 --introducer=pb://<Introducer FURL> --port=tcp:1235 --location=tcp:203.0.113.1:1235
配置文件,共享,日志和其他数据都在/home/tahoe/.tahoe
。 - 返回root shell:
exit
- 创建systemd服务文件:
/etc/systemd/system/tahoe-autostart-node.service 1 2 3 4 5 6 7 8 9 10 11 12
[Unit] Description=Tahoe-LAFS autostart node After=network.target [Service] Type=simple User=tahoe WorkingDirectory=/home/tahoe ExecStart=/usr/bin/tahoe run .tahoe --logfile=logs/node.log [Install] WantedBy=multi-user.target
- 使服务在引导时自动启动存储节点:
systemctl enable tahoe-autostart-node.service
- 启动服务以启动节点:
systemctl start tahoe-autostart-node.service
如何使用Linode StackScripts自动配置存储节点
由于某些用户可能需要数十或数百个存储节点,因此使用StackScripts自动配置新部署的Linode。
要确认每个成功的设置而不是在验证它们有效之前启动所有实例,您可以暂时跳到接下来的两个部分,并在本地浏览器中使用Web用户界面。然后,返回此部分,并在启动每个Linode几分钟后刷新页面。新存储节点应与旁边的绿色复选标记一起显示。
注意此StackScript依赖于icanhazip.com来检索每个Linode的外部IP地址。虽然该站点具有冗余服务器,但有时可能无法使用。
- 熟悉StackScripts,然后导航到StackScripts页面以添加新的StackScript。
- 选择Debian 9作为发行版并将以下内容粘贴到“ 脚本”部分:
#!/bin/bash #<UDF name="nickname" Label="Storage Node Nickname" example="node01" /> #<UDF name="introducer" Label="Introducer FURL" example="pb://wfpe..." /> apt-get update apt-get -y upgrade adduser --disabled-password --gecos "" tahoe apt-get -y install tahoe-lafs su - -c "tahoe create-node --nickname=$NICKNAME --introducer=$INTRODUCER --port=tcp:1235 --location=tcp:`curl -4 -s icanhazip.com`:1235" tahoe echo "[Unit] Description=Tahoe-LAFS autostart node After=network.target [Service] Type=simple User=tahoe WorkingDirectory=/home/tahoe ExecStart=/usr/bin/tahoe run .tahoe --logfile=logs/node.log [Install] WantedBy=multi-user.target" >> /etc/systemd/system/tahoe-autostart-node.service systemctl enable tahoe-autostart-node.service systemctl start tahoe-autostart-node.service
保存更改。
- 创建一个新的Linode,在Debian 9映像上部署StackScript,然后启动。
- 重复此过程以根据需要为存储群集创建任意数量的节点。
在本地计算机上设置Tahoe-LAFS客户端
要在网格中安全地上载和下载文件,必须在本地计算机上设置客户端节点。
虽然您可以使用端口转发从Linode上托管的存储节点访问Web用户界面,或者使用远程服务器上的命令行界面来处理网格中的文件,但不建议这样做。走这条路线会让您面临一些风险,例如意外泄漏未加密的数据或文件盖/ dircaps(将它们视为密码,让您访问文件和目录;稍后会详细介绍)。
为您的操作系统安装Tahoe-LAFS客户端:
- 视窗
- 苹果系统
- Linux用户应该使用他们的发行版的软件包管理器来安装Tahoe-LAFS(如前几节所述)。
- 运行
tahoe create-client
以配置客户机节点,替换pb://<Introducer FURL>
为您自己的介绍人FURL:
tahoe create-client --nickname=localclient --introducer=pb://<Introducer FURL> - 启动客户端以使用您的网格:
tahoe run
- 使用CTRL + C关闭服务器。
使用Tahoe-LAFS的Web界面管理您的网格
Web界面是与网格交互的最用户友好的方式。该界面的一个有用功能是鸟瞰图,它可以为您提供整个网格,显示活动和非活动节点,连接状态和错误,可用的总存储空间以及其他详细信息。
1. 默认情况下,Web服务器在端口上侦听环回接口3456
。通过启动本地客户端连接到它,然后导航到Web浏览器中的地址:
tahoe run --basedir client
1. 可以使用以下三种算法之一上传文件:
- 不可变:用于存储不会被更改的文件。
- SDMF(小型可变分布式文件):最初设计用于小文件,但也支持更大的大小。对于大文件来说可能会很慢,因为即使几个字节发生了变化,它也必须替换所有块。
- MDMF(中分布式可变文件):允许大型文件就地修改,只有已更改的段,它允许您附加数据,并有选择地仅检索用户请求的某些块。将其用于经常更新的大型文件。
2. 上传文件后,您将获得一个功能或文件帽。例如,SDMF filecap类似于:
URI:SSK:4a4hv34xtt43a6s7ft76i563oa:7s643ebsf2yujglqhn55xo7c5ohunx2tpoi32dahgr23seob7t5q
Filecaps是加密后访问数据的唯一方法。将filecaps存储在安全的地方。如果丢失文件帽,则无法检索数据。
3. 由于很难跟踪多个随机字符串,因此存储数据的更有效方法是将其组织在目录中。这些都有一些优势:
如何使用Tahoe-LAFS的命令行界面
虽然Web用户界面易于使用,但它有一些限制。与文件和目录交互的另一种方法是通过命令行界面。它的一些优点包括递归上传文件和同步(备份)目录的能力。
- 启动本地客户端后,打开另一个终端窗口或命令提示符并创建别名:
tahoe create-alias testing
这将在网格上创建一个目录并将别名与其关联,以便您可以通过键入
testing:
而不是长期功能轻松访问它。 - 要将当前工作目录中的现有文件复制到新别名中:
tahoe cp file1 testing:
- 列出别名内容:
tahoe ls testing:
- 列出文件/目录功能:
tahoe ls --uri testing:
- 要上传整个目录:
tahoe cp --recursive name-of-local-directory testing:
- 备份目录:
tahoe backup name-of-local-directory testing:
这将创建增量备份,保留在带时间戳的目录中,并且只会在再次运行命令时上载已更改的文件。
- 在需要时修复问题并重新分发文件共享:
tahoe deep-check --repair testing:
在重要目录上定期运行此命令是一个好主意,尤其是在丢失了一些存储节点之后。
- 您还应该保存存储在别名中的功能,并将它们放在一个安全的地方(将它们备份到另一台机器上,最好使用强密码加密)。你可以看到这些:
tahoe list-aliases
- 要显示可用命令的列表:
tahoe
- 如果您需要有关命令的其他帮助:
tahoe name-of-command --help
例如:
tahoe ls --help
。有关Tahoe-LAFS的更多信息,请访问官方文档。
可能的后续步骤
现在您已经启动并运行了网格,因此将其保持在良好的工作状态非常重要。可以进行一些改进:
- 如果上载带宽较低的人注意到将文件发送到网格需要很长时间,请设置辅助节点。由于您的本地Tahoe客户端还必须将冗余数据发送到多个节点,因此可能会发生减速。
- 随着时间的推移,您的存储服务器可能会充满您不再需要的数据。阅读有关垃圾收集的信息,了解如何摆脱不必要的文件。
更多信息
有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。