[sheepdog] [PATCH v3 00/15] introduce user-level sheepfs to explore cluster storage
MORITA Kazutaka
morita.kazutaka at gmail.com
Wed May 23 17:21:21 CEST 2012
At Mon, 21 May 2012 23:25:44 +0800,
Liu Yuan wrote:
>
> From: Liu Yuan <tailai.ly at taobao.com>
>
> v2 -> v3:
> - address kazutaka's comments. Thanks!
> - check create_sheepfs_layout() return val
> - remove conflict modifcations between patch set.
> - fix indention problem
> - guard against un-algined RW to data objects
> - move init_vdi_info() ahead shadow_file_create()
>
> - check volume_sync_and_delete() return val.
>
> [Introduction]
>
> This patch set introdues a FUSE-based pseudo file system in userland to access both
> sheepdog's internal state (for e.g, cluster info, vdi list) as well as sheepdog's high
> reliable stroage. Note, we can also get the benefit of snapshoting and cloning for the
> exported storage.
>
> The idea here is that its sometimes useful that we can envision our interaction with
> an sheepdog's object in terms of a directory structure and filesystem operations.
>
> I guess people will be mostly intrested into sheepfs's volume directory, which export
> VM's volume as a pseudo block file in your local file system hierarchy, which can be used as
>
> 1) a big file abstraction, which is actually backed by Sheepdog's storage, distributed in
> the cluster.
> 2) a loop device file, which you can mount wherever you want to use it as a file system
> backed up by Sheepdog.
> 3) a loop device file for some VM's image, which you want to access(RW) its internal data.
> 4) stroage media for other hypervisor, such as XEN
>
> This file abstraction integrates well into kernel's pagecache.
>
> You can access the source by following command:
> $ git checkout -b sheepfs origin/sheepfs
>
> [Usage]
> Some example to show how we can use it. sheepfs -h for more help.
>
> $ sheepfs /your/mountpoint
>
> The mountpoint is where we mount our sheepfs, you need to mkdir it first on your own.
>
> To get cluster info:
> $ cat sheepfs_dir/cluster/info
> Cluster status: running
>
> Cluster created at Mon May 14 15:45:37 2012
>
> Epoch Time Version
> 2012-05-14 15:45:38 1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002]
>
> To attach the the volume named of 'test':
> $ echo test > sheepfs_dir/vdi/mount
>
> Then we can boot it if it is a bootable image:
> $ qemu-system-x86_64 --enable-kvm -m 1024 -drive file=sheepfs_dir/volume/test,cache=writeback.
>
> Or we can even format it as a file system and mount it somewhere to host our data:
> $ mkfs.ext4 sheepfs_dir/volume/test
> $ sudo mount -o loop sheepfs_dir/volume/test /somewhere
>
> When the connected sheep daemon crashes, we can re-connect to another live sheep deamon on the fly:
> $ echo ip:port > sheepfs_dir/config/sheep_info
>
> Liu Yuan (15):
> sheepfs: modify configure file to work with sheepfs
> sheep: move strbuf and rmdir_t into lib
> sheepfs: core infrastructure
> sheepfs: add 'cluster' entry
> sheepfs: add 'vdi' entry
> sheepfs: implement shadow file mechanism
> sheepfs: add 'volume' entry
> sheepfs: implement 'sync' operation for volumes
> sheepfs: implement 'open' operation
> sheepfs: teach volumes to unmount
> sheepfs: add 'node' entry
> sheepfs: add a socket pool to speedup connection
> sheepfs: add options to pass the address and port of the sheep
> sheepfs: teach volume to read/write COW objects
> sheepfs: add config entry
>
> Makefile.am | 2 +-
> configure.ac | 13 ++
> include/Makefile.am | 3 +-
> include/net.h | 2 +
> include/sheep.h | 1 +
> include/strbuf.h | 95 +++++++++
> include/util.h | 1 +
> lib/Makefile.am | 3 +-
> lib/strbuf.c | 192 +++++++++++++++++
> lib/util.c | 50 +++++
> sheep/Makefile.am | 4 +-
> sheep/ops.c | 18 ++
> sheep/sheep_priv.h | 2 -
> sheep/store.c | 45 ----
> sheep/strbuf.c | 192 -----------------
> sheep/strbuf.h | 95 ---------
> sheepfs/Makefile.am | 47 +++++
> sheepfs/cluster.c | 63 ++++++
> sheepfs/config.c | 137 +++++++++++++
> sheepfs/core.c | 378 ++++++++++++++++++++++++++++++++++
> sheepfs/node.c | 91 ++++++++
> sheepfs/shadow_file.c | 150 ++++++++++++++
> sheepfs/sheepfs.h | 89 ++++++++
> sheepfs/vdi.c | 91 ++++++++
> sheepfs/volume.c | 548 +++++++++++++++++++++++++++++++++++++++++++++++++
> 25 files changed, 1973 insertions(+), 339 deletions(-)
> create mode 100644 include/strbuf.h
> create mode 100644 lib/strbuf.c
> delete mode 100644 sheep/strbuf.c
> delete mode 100644 sheep/strbuf.h
> create mode 100644 sheepfs/Makefile.am
> create mode 100644 sheepfs/cluster.c
> create mode 100644 sheepfs/config.c
> create mode 100644 sheepfs/core.c
> create mode 100644 sheepfs/node.c
> create mode 100644 sheepfs/shadow_file.c
> create mode 100644 sheepfs/sheepfs.h
> create mode 100644 sheepfs/vdi.c
> create mode 100644 sheepfs/volume.c
Applied after fixing coding style problems.
Thank you for the great work!
Thanks,
Kazutaka
More information about the sheepdog
mailing list