跳转到主要内容

Python编写的应用级分布式文件系统

项目描述

小鬼文件系统是一个用Python编写的应用级分布式文件系统。受到MogileFS[1]的启发,它具有一些类似的特性和功能

  • 应用级 – 不需要特殊的内核模块;

  • 无单点故障 – 小鬼文件系统设置的所有组件(服务器和数据库)都可以运行在多台机器上,因此没有单点故障(建议至少2台机器);

  • 自动文件复制 – 文件在所有服务器之间自动复制。在KoboldFS中,没有“类”的概念,因此无法指定某个文件是否需要仅在可用服务器子集中进行复制;

  • “优于RAID” – 在非SAN RAID设置中,磁盘是冗余的,但主机不是。如果您整个机器丢失,文件将不可访问。KoboldFS在不同主机上的设备之间复制文件,因此文件始终可用;

  • 平面命名空间 – 文件由平面、全局命名空间中的命名键标识。您可以创建尽可能多的命名空间,因此具有潜在冲突键的多个应用程序可以在同一MogileFS安装上运行;

  • 无共享 – KoboldFS不依赖于昂贵的共享磁盘的SAN。每台机器都维护自己的本地磁盘;

  • 无需RAID – KoboldFS存储节点上的本地磁盘可以是RAID,也可以不是。如果不使用RAID更便宜,因为RAID不会提供MogileFS已经提供的任何安全性;

  • 本地文件系统无关 - KoboldFS 存储节点上的本地磁盘可以使用您选择的文件系统格式化(ext3、XFS 等)。KoboldFS 使用自己的内部目录哈希,因此不会遇到文件系统限制,例如“每个目录的最大文件数”或“每个目录的最大目录数”。使用您最 comfortable 的系统;

  • 完全便携 - 它是一个纯 Python 模块,因此可以在支持 Python 的任何操作系统和架构上运行;

  • 数据库无关 - 它可以与任何 SQL 数据库一起运行;实际上,仅实现了对 PostgreSQL 的支持,但添加对新数据库的支持既快又简单;

  • 支持通过外部 Web 服务器直接提供存储文件,以减少应用服务器的负载。

KoboldFS 不是

  • POSIX 兼容 - 您不能在 KoboldFS 上运行常规 Unix 应用程序或数据库;它旨在存档一次写入文件和仅进行顺序读取(尽管您可以通过用新版本覆盖来修改文件)。

示例用法

>>> from StringIO import StringIO
>>> from koboldfs import Client
>>> client = Client('demo', servers=['127.0.0.1:9876', '127.0.0.1:9875'])
>>> print client.ping()
True
>>> print client.put('motd', '/etc/motd')
True
>>> output = StringIO()
>>> if client.get('motd', output):
>>>    output.seek(0)
>>>    print output.read()
Linux...
>>> print client.get_url('motd')
http://...
>>> print client.delete('motd')
True
>>> client.get('motd', output)
False
>>> assert client.get_url('motd') is None
True

参考

  1. http://www.danga.com/mogilefs

0.3.2 (2011-01-13)

  • 向客户端添加了“client.put_stat(key, source)”方法;它类似于 put 方法,但在出错时返回 None,在成功时返回字典 {‘digest’: …, ‘size’: …}。

0.3.1 (2011-01-10)

  • 需要 SQLAlchemy >= 0.6;这修复了从数据库检索数据时 UTF-8 编码的一些边缘情况;更新了模型以符合 SQLAlchemy 的新语法。

  • 添加了对 ini 文件的解析支持。

0.3.0 (2010-04-01)

  • 删除了 koboldfs.zope 模块和相关依赖项;可以使用 koboldfs.client.ClientPool 实现相同的功能,而不依赖于任何 zope 包。

  • 引入了 koboldfs.client.TransactionalClientPool,它支持(可选的)两阶段事务。

  • 使用 SQLAlchemy 而不是直接依赖于 psycopg2 进行数据库连接;现在 koboldfs(虚拟地)与 SQLAlchemy 支持的任何数据库后端兼容。

  • 添加了使用 buildout 的初始化脚本。

  • 添加了使用 sqlite 作为数据库后端的单元测试。

0.2.2 (2009-07-05)

  • 在数据管理器中进行修复:使用连接池而不是始终保持数据库连接打开。

0.2.1 (2009-05-28)

  • koboldfs.zope 现在是一个附加包。

0.2.0 (2009-05-28)

  • 首次公开发布。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源分发

koboldfs-0.3.2.tar.gz (21.2 kB 查看哈希值

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面