Skip to contentSkip to conversation

pohmelfs: call for inclusion

take 5 Evgeniy Polyakov 1 participant 1 message Apr 7, 2012 VFS

lore
Share & tools
lore
#0 lore raw

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
index d621f02..d7b8308 100644
@@ -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
index 93804d4..a2a819f 100644
@@ -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
new file mode 100644
index 0000000..6358362
@@ -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
new file mode 100644
index 0000000..f38002d
@@ -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
new file mode 100644
index 0000000..e69de29
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/symlink.c new file +13 -0
new file mode 100644
index 0000000..80a9d87

Lines of this file are not shown. View the 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.