pohmelfs: call for inclusion
Hi
I'm resending this same chunk and propose naked Santa Claus a chocolate dress - this is the only thing left to awake Alexander from his lethargical sleep. Al, please speak up - I fixed issues you pointed, but still, if you do not like the whole chunk about path to the root used to identify object, just let me know so we could move forward, since I already fucked up whole merge window.
Thank you.
[ take4 updates patch to use correct dentry_path(). Al, if you feel this chunk should be killed, drop me a note and we will go further instead of running over and over the same shit, also setup git repo to pull, rebased against v3.3 commit]
I'm please to announce new and completely rewritten distributed filesystem - POHMELFS
It went a long way from parallel NFS design which lived in drivers/staging/pohmelfs for years effectively without usage case - that design was dead.
New pohmelfs uses elliptics network [1] as its storage backend, which was proved as effective distributed system. Elliptics is used in production in Yandex search company for several years now and clusters range from small (like 6 nodes in 3 datacenters to host 15 billions of small files or hundred of nodes to scale to 1 Pb used for streaming).
We start to cook up 2 small clusters for production pohmelfs testing - one of them is largest in East Europe mirror site, another one is used for internal package storage.
Pohmelfs is just a POSIX frontend to elliptics. It supports hardlinks, symlinks, data checksums, multiple copies and so on. Pohmelfs uses local cache (synced on timely basis) for all operations, and only sync (or close with sync_on_close mount option) or writeback will flush data to remote nodes. There is also background work to flush data to storage like commit in ext3
Directory objects are synced to the storage when they are created on pohmelfs node, file data is being sent from cache later.
All recovery process is handled by elliptics and is performed without pohmelfs clients every noticing that. In particular reads are always directed to the replica with the latest data (determined according to ellptics metadata checked at file open time).
Writes in pohmelfs can be configured to succeed when quorum commits it or when specified in 'successful_write_count=' number of writes return ok. This is useful when you do not care much about number of active replicas, since you know that your data is safe. Or when you create new storage and want to copy to single datacenter to save bandwidth.
But that's enough for advertisement. Here is the code.
1. Elliptics network
http://www.ioremap.net/projects/elliptics
http://www.elliptics.ru (russian support forum - we understand english and will answer pohmelfs questions too)
2. Pohmelfs
http://www.ioremap.net/projects/pohmelfs
http://www.ioremap.net/taxonomy/term/4 (development blog section)
3. POHMELFS git repo (rebased on v3.3)
http://www.ioremap.net/git/pohmelfs.git
fs/Kconfig +1 -0
@@ -261,6 +261,7 @@ config NFS_COMMON source "net/sunrpc/Kconfig" source "fs/ceph/Kconfig" source "fs/cifs/Kconfig" +source "fs/pohmelfs/Kconfig" source "fs/ncpfs/Kconfig" source "fs/coda/Kconfig" source "fs/afs/Kconfig"
fs/Makefile +1 -0
@@ -124,3 +124,4 @@ obj-$(CONFIG_GFS2_FS) += gfs2/ obj-y += exofs/ # Multiple modules obj-$(CONFIG_CEPH_FS) += ceph/ obj-$(CONFIG_PSTORE) += pstore/ +obj-$(CONFIG_POHMELFS) += pohmelfs/
fs/pohmelfs/Kconfig new file +11 -0
@@ -0,0 +1,11 @@ +config POHMELFS + tristate "POHMELFS distributed filesystem" + depends on INET && EXPERIMENTAL + select CRYPTO_HASH + help + POHMELFS is a POSIX frontend to Elliptics network + + Elliptics is a key/value storage, which by default implements + distributed hash table structure. + + More information can be found at http://www.ioremap.net/projects/elliptics
fs/pohmelfs/Makefile new file +7 -0
@@ -0,0 +1,7 @@ +# +# Makefile for the linux pohmel filesystem routines. +# + +obj-$(CONFIG_POHMELFS) += pohmelfs.o + +pohmelfs-y := dir.o file.o inode.o net.o route.o super.o trans.o symlink.o stat.o pool.o
fs/pohmelfs/Module.symvers new file +0 -0
fs/pohmelfs/README new file +84 -0
84 lines not on this page · raw message
fs/pohmelfs/dir.c new file +1124 -0
1,124 lines not on this page · raw message
fs/pohmelfs/file.c new file +483 -0
483 lines not on this page · raw message
fs/pohmelfs/inode.c new file +1084 -0
1,084 lines not on this page · raw message
fs/pohmelfs/net.c new file +703 -0
196 lines not on this page · raw message
fs/pohmelfs/packet.h new file +752 -0
752 lines not on this page · raw message
fs/pohmelfs/pohmelfs.h new file +503 -0
503 lines not on this page · raw message
fs/pohmelfs/pool.c new file +159 -0
159 lines not on this page · raw message
fs/pohmelfs/route.c new file +369 -0
369 lines not on this page · raw message
fs/pohmelfs/stat.c new file +141 -0
141 lines not on this page · raw message
fs/pohmelfs/super.c new file +982 -0
982 lines not on this page · raw message
fs/pohmelfs/trans.c new file +432 -0
432 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Signature · 1 line
Evgeniy Polyakov
Part of the diff is not shown here. View the raw message.