Tahoe-LAFS 开源分布式文件存储系统

很多技术信息来自于英文页面,我英文不好,可能有错漏的地方。

Tahoe-LAFS是一个分布式的文件存储系统。它的特点是无法对内容进行审查,即使是存储服务提供方;极高的安全性,用长不定字符串链接替文件访问权限验证,基本不可能被在线破解;匿名,无注册及身份验证,只靠第一次运行时分配的随机码区分不同用户。

简单说下它的文件存储流程。我通过客户端上传一个文件。文件经过加密被切分成数个片段,上传到数个存储服务器。每个服务器只保存文件的一部分,不保存完整的文件。并且忽略掉文件名,用一串加密过的字符代替。上传完毕,Tahoe-LAFS系统返回一串字符串,以后就用这串字符串访问上传的文件。

对于存储服务器来说,它手里只有你文件的一部分,并且是经过加密的,并且连原始文件名都没有。它无法知道是谁的文件,什么内容的文件。如果有谁说它存储了侵权文件,要求存储服务提供方删除和加强监管。服务方会表示:我无法做到。我这里没有完整文件,没有文件名,文件是加密过的,我甚至连读取文件内容检查其中的关键字都做不到,如何监管和审查?
它的特点也使它得到“打破梭镜门”项目网站https://prism-break.org/zh-CN/ 的推荐。

它除了使用互联网网络,还可以使用i2p网络(有专门的i2p版本)。使用i2p网络后使它除了拥有阻止审查的能力,还拥有了匿踪的能力。对于匿名用户来说是一个很有用的云存储系统。当然在中国i2p速度慢,通过i2p网络tahoe-lafs也会很慢。大约每秒几百字节到一、二十KB。

下面讲述一下软件的运行。
    可以从这里下载https://tahoe-lafs.org/source/tahoe-lafs/releases/

Tahoe-LAFS使用python编写。目前(1.10版)只支持python 2.7及以下版本。有windows、linux、os x等系统版本,甚至有openwrt等嵌入式系统版本。安装完毕,需要修改配置文件填入必要的参数。通过配置即可以只做客户端,也可以做存储节点。如果你做存储节点,如果你只是普通家用网络,跟其它存储服务节点相比你就是水桶上最短的那块木板,会拖累存储速度。这种连累别人的好事还是不要做比较好。
    安装以后会监听本地3456端口,可以通过在浏览器地址栏输入http://127.0.0.1:3456/来访问。目前还不支持ipv6网络。

打开后会看到显示“Connected to 0 of x introducers”表示连接到了几个“介绍”服务器。introducer“介绍”服务器,只提供存储服务器地址信息,不提供文件存储服务。这些介绍服务器地址是先前安装后,手动添加进配置文件里的。等待一段时间,连接上介绍服务器后就会显示当前获取到多少存储服务器(需要手动刷新浏览器才会显示最新数据),以及可以连接上哪些存储服务器。

软件自带了一个example urls页面文件,里面有一些tahoe文件夹示例。可以打开看看。

    现在你可以在http://127.0.0.1:3456/页面直接上传文件或者新建文件夹。文件和文件夹有几种类型。Immutable,不可修改型;SDMF,小分布可修改型;MDMF,中等分布可修改型。不可修改型,就是上传后就不能再更新。其它两种则是可以更新。SDMF可能更适合小于1MB的文件。

注意,你可以新建一个文件夹,再在下面上传文件,这时你的文件夹中可以显示文件名。如果你不在文件夹下上传文件,而是直接在http://127.0.0.1:3456/上传文件,会发现上传后返回的文件链接字符串中没有包含原始文件名。如果你再通过这个链接下载下来文件,会发现会变成一个一串字符串为文件名,“.txt”为后缀的文件。你要手动改名才能还原。因为tahoe-lafs系统不会使用原始文件名作为存储文件名称。在文件夹下可以显示文件名是因为:文件夹在tahoe-lafs中也是存储为一个文件,它的文件内容就是文件链接和你自定的显示文件名。而这个根文件夹的链接也是一长串字符串,而没有手动设置的文件夹名称(下级文件夹可以有名称)。
    如果你不在文件夹下上传文件,上传完毕后会返回你一个uri文件链接字符串,保存这个链接。如果丢失就会永久失去这个文件,tahoe-lafs是没有文件搜索和浏览功能的。

如果你新建一个文件夹,记下浏览器上显示的地址。或者点“more info on this directory”记下“Directory writecap”链接字符串。在文件夹下的文件和文件夹右边有个“More Info”的链接,点击可以查看文件或文件夹的可写链接、只读链接,可以上传更新。当然如果你上传的是不可修改类型文件则没有可写链接和上传更新。

现在来讲下tahoe-lafs文件链接和权限的知识。如果你上传一个可修改型文件或文件夹,则这个文件或文件夹自动会产生多个链接,一般有File writecap,可写链接;File readcap,只读链接;File verifycap,验证链接。如同字面意思,可写链接,使用这个链接可以更新文件或修改文件夹。只读链接,则只能查看、下载,不能改。你上传文件后想共享给别人,如果想让别人只能看就发只读链接给别人,想让他修改就发修改链接给别人。注意,一个文件同时只能有一个人修改,不能并行修改,否则会造成文件丢失等严重错误。打开可写链接可以查看到只读链接和验证链接;打开只读链接则只能查看验证链接不能查看到可写链接。
    在文件夹下可以只修改文件名而不改变文件链接,或者相反,反正链接中没关联文件名。如果你是文件的创建者,在文件上传更新后(当然得是可修改型文件)文件链接不会改变。tahoe-lafs如何知道你是创建者呢?在你本地.tahoe文件夹(windows7下默认在C:\Users\用户名\.tahoe)下的private文件夹下有个convergence文件,里面有一串字符串。是在安装后第一次运行时产生的。tahoe-lafs通过这个字符串和你的文件内容混合运算产生出文件链接。通过验证你的convergence码和文件链接就可以知道你是不是创建者。

注意!tahoe-lafs是没有账户名、密码的。那我的文件岂不是可以随意被人下载?那倒不会。tahoe-lafs是没有文件搜索和浏览引擎的,连文件名都没有,如何搜索?除非你把链接发给别人,否则别人是没法访问你的文件的。实际上,文件链接那一长串字符串代替了账户、密码系统。这是一个很有趣的访问权限架构。如果有账户、密码验证,那么,不是由服务器验证就是由客户端验证。由服务器验证的话,如果服务器被入侵,账户、密码就会被别人拿走了,而且你还不知道,继续用这套账户、密码。如果由客户端验证,那我自己是能通过验证,如果我要共享给别人呢?我还得把密码发给别人或者公开,那跟我把链接发布出来不是一样吗?别人还得再输入一遍密码,还不如直接访问链接更简便。
    账户、密码和长字符串链接哪个暴力破解难度高呢?你的账户名和密码加起来一共多少位?一般也就16位左右吧。这个tahoe-lafs文件链接有7、8十位,由小写字母和数字组成。暴力破解花费的时间比前者多得多。如果是服务器验证,密码数据库被下载,被破解只是时间问题,而tahoe-lafs没有密码数据库,只能在线破解。在线破解时间要取决于服务器响应速度和网速,这在当前基本上就是不可能。而且就算破解者运气好,破解了一个链接,如果不是文件夹根链接那也只能得到很少或者单个文件。如果你没在文件夹中设置正确的原始文件名或者根本就没建文件夹,他下载的文件会以.txt为后缀,他很难弄清这是个什么用途的文件。还有关键的一点,没有账户名和文件夹名称和文件名,破解者无法针对某人或某类文件进行破解。就算你被某个破解者下载了文件,他也未必会对你重视的文件感兴趣,多半就丢弃了。除非你把信用卡号和背面数字等信息放进去了。
    所以,只要你不把重要文件链接泄漏给别人,否则这比设置一个强力密码安全得多。还有,虽然浏览器地址看起来默认是用的http协议,但这只是连接到本地客户端而已,客户端连接到服务器是加密的,不用担心泄漏文件链接。

现在说下文件删除的问题。tahoe-lafs是没有手动删除文件功能的。这又很奇葩吧?!虽然没有用户手动即时删除功能,但它有垃圾回收机制。用户存储的所有文件(包括文件夹)需要定期lease-renewal更新租约,如果在一个月内不更新租约就会被tahoe-lafs系统丢弃。所以要小心,不要以为上传上去只要自己不删就可以永久保存。更新租约不需要付费什么的,只需要每个月通过浏览器在文件或文件夹的more info页面下勾选“Add/renew lease on all shares?:”点check就行了。这垃圾回收机制有利于减轻tahoe-lafs存储节点的负担,让存储节点保持更好的状态。如果我现在就要删除文件呢?那就把需要删除的文件上传更新为一个空文件,但是链接还是要一个月后才消失。

tahoe-lafs除了用web浏览器界面操作以外,还可以用命令行以及api来操作。你可以在你的app中用api来使用tahoe-lafs。

ps: 本想发在论坛的,结果发现没有合适的分类,所以才发在博客。

时间: 2024-10-07 12:22:05

Tahoe-LAFS 开源分布式文件存储系统的相关文章

HDFS—Hadoop底层分布式文件存储系统

声明:本文档所有内容均在本人的学习和理解上整理,仅供参考,欢迎讨论.不具有权威性,甚至不具有精确性,也会在以后的学习中对不合理之处进行修改. 在上一篇“浅谈Hadoop inFusionInsight—华为大数据解决方案的理解”中,我重点提到了大数据的两个相较于传统数据所不同的特点——数量大和种类多.在Hadoop的底层有个非常重要的部分,我们一般称之为“核心”——分布式文件存储系统,即HDFS.我之前说过,单个服务器的内存和磁盘空间是有上限的,不可能无限支持线性增加.面对海量的大数据,单个服务

分布式文件存储系统--fastDFS

分布式文件系统,它是一款开源的轻量级分布式系统 单机时代 初创时期由于时间紧迫,在各种资源有限的情况下,通常就直接在项目目录下建立静态文件夹,用于用户存放项目中的文件资源.如果按不同类型再细分,可以在项目目录下再建立不同的子目录来区分.例如: resources\static\file. resources\static\img等. 优点:这样做比较便利,项目直接引用就行,实现起来也简单,无需任何复杂技术,保存数据库记录和访问起来也很方便. 缺点:如果只是后台系统的使用一般也不会有什么问题,但是

GFS分布式文件存储系统(理论)

GlusterFS概述 GlusterFS简介 ?开源的分布式文件系统?由存储服务器,客户端以及NFS/Samba存储网关组成?无元数据服务器 RDMA:负责数据传输 GlusterFS的特点 ?扩展性和高性能?高可用性?全局统一的命名空间?弹性卷管理?基于标准协议 GlusterFS术语 ?Brick : 存储节点?Volume : 卷?FUSE : 内核模块,用户端的交互模块?VFS : 虚拟端口?Glusterd : 服务 模块化堆栈架构 ?模块化.堆栈式的架构?通过对模块的组合,实现负责

GFS分布式文件存储系统(实战!!!)

实验环境 #开启5台虚拟机(centos7),四条节点服务器分别添加四块硬盘 node1:192.168.52.149 node2:192.168.52.132 node3:192.168.52.128 node4:192.168.52.135 client:192.168.52.133 #分别设置虚拟机名称,方便识别 hostnamectl set-hostname node1 hostnamectl set-hostname node2 hostnamectl set-hostname no

分布式文件存储系统 mogilefs 的使用(1)

一.mogilefs简介       mogilefs是一种分布式存储(不可挂载,通过API调用或专门客户端)的解决方案,可存储海量图片.静态文件.       mogilefs的相关程序是用perl语言编写,元数据存储在关系型数据库中(国内有人用C语言将mogilefs重写的程序叫做FastDFS,后者的元数据是存储在内存中的) mogilefs的基本组成结构:     (1) tracker:追踪器,从database中追踪用户请求数据的元数据            与客户端通过http协议

分布式文件存储系统 mogilefs 的使用(2)

六.将tracker.mogstored.mariadb组装成完整的mogilefs系统,并测试使用 在三个节点中任选一个,启动mogilefsd服务,然后使用mogadm添加各项组件  比如:node1上启动服务:[[email protected] mogilefs]# service mogilefsd startStarting mogilefsd                                         [  OK  ]对此节点做检测:[[email protec

分布式 Key-Value 存储系统:Cassandra 入门

Apache Cassandra 是一套开源分布式 Key-Value 存储系统.它最初由 Facebook 开发,用于储存特别大的数据. Cassandra 不是一个数据库,它是一个混合型的非关系的数据库,类似于 Google 的 BigTable.本文主要从以下五个方面来介绍 Cassandra:Cassandra 的数据模型.安装和配制 Cassandra.常用编程语言使用 Cassandra 来存储数据.Cassandra 集群搭建. 在 IBM Bluemix 云平台上开发并部署您的下

开源分布式文件系统比较

要使用分布式文件系统来降低成本,于是搜寻了开源的分布式文件系统. 经过安装部署和测试,把我使用中碰到的一些问题总结一下, 希望对大家有所帮助, 我也有一些问题没有搞懂,希望和大家一起交流,共同进步. 第一:CEPH 网上搜索了一些资料, 说 ceph 性能最高,C++编写的代码,支持Fuse,并且没有单点故障依赖, 于是下载安装, 由于 ceph 使用 btrfs 文件系统, 而btrfs 文件系统需要 Linux 2.6.34 以上的内核才支持, 显然我使用的 RHEL5 的内核还不支持 bt

高性能、高容错、基于内存的开源分布式存储系统Tachyon的简单介绍

Tachyon是什么? Tachyon是一个高性能.高容错.基于内存的开源分布式存储系统,并具有类Java的文件API.插件式的底层文件系统.兼容Hadoop MapReduce和Apache Spark等特征.Tachyon能够为集群框架(如Spark.MapReduce等)提供内存级速度的跨集群文件共享服务.Tachyon充分使用内存和文件对象之间的世代(Lineage)信息,因此速度很快,官方号称最高比HDFS吞吐量高300倍.目前,很多公司(如Pivotal.EMC.红帽等)已经在使用T