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
参考
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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5e58186f03cce76b59b4c6a1a3b2de6ddd2606ce3ecc6859fffc51830874d8c1 |
|
MD5 | 58b60df38199a35e21ebe1b54d3ffa57 |
|
BLAKE2b-256 | 57c7c340419cf22a4b49be354e1884f96824afe75f8508f51438cd0f145a5f5b |