[sheepdog] [PATCH v4 0/9] Introduce Sheepdog Block Device (SBD)
Robin Dong
robin.k.dong at gmail.com
Thu May 29 04:15:32 CEST 2014
Reviewed-by: Robin Dong <sanbai at taobao.com>
2014-05-26 14:52 GMT+08:00 Liu Yuan <namei.unix at gmail.com>:
> v4:
> - fix slab create and destroy
>
> v3:
> - kill SPINLOCK macro hack by not using 'gnu99'
> - make this module compile with 2.6.32 series kernel (centos 6)
>
> v2:
> - enhance memory allocation when near out of memory of system
> - add slab allocator
> - use vmalloc for aiocb->buf to avoid memory allocation failure
>
> This is similar to Ceph's RBD. The main motivation is to replace complex
> and ineffecient middle ware (such as iscsi softwafe) with simple software
> stacks
> to expose sheepdog storage as Linux block device interface, which means
> that we
> can make use of page cache as a client cache for buffered read/write
> optionally
> and behaves as a normal Linux block device(s) in your local file system.
>
> I implement a high performance(hopefully) aio framework for
> sending/recving data
> and compared with iscsi tgt or sheepfs, this kernel module should provide
> much
> better performance because of shortest code path.
>
> With single major allocation scheme, we support 31 partitions for a sheep
> block
> device at most and 32768 devices can be attached to local fs for a single
> node.
>
> TODO
> - support cloned sheep vdi
> - auto-reconncect to sheep daemon if connection is off/crashed
> - better error handling
> - block device multi-queue support for recent kernel
> - live snapshot of sbd
> - support hyper volume
>
> You can access this patch set at origin/sbd.
> $ git pull;
> $ git checkout -b sbd origin/sbd
>
> To complile:
> $ cd shepdog/sbd/;make
> $ insmod sbd.ko
>
> Usage:
>
> We control the device the same way as RBD.
>
> # associate vdi 'test' to /dev/sbd0
> $ echo 127.0.0.1 7000 test > /sys/bus/sbd/add
>
> # remove the device sbd0
> $ echo 0 > /sys/bus/sbd/remove
>
> # list the mapped devices
> $ cat /sys/buf/sbd/list
>
> To get best of performance,
>
> # echo 4096 > /sys/block/sbd0/queue/max_sectors_kb
>
> Which means io scheduler will try its best to handle us 4MB request.
> Liu Yuan (9):
> sheep: some macro preparation for sbd kernem modual
> sbd: introduce basic framework for Sheepdog Block Device
> sbd: implement write operation
> sbd: implement read operation
> sbd: add list interface to control file
> sbd: add support for single major allocation scheme
> sbd: some error handling refinements
> sbd: improve memory allocation when memory hit low
> sbd: use kmem_cache for sheep aiocb and request
>
> include/sheepdog_proto.h | 22 +-
> sbd/Kbuild | 5 +
> sbd/Makefile | 8 +
> sbd/sbd.h | 143 ++++++++++
> sbd/sheep.c | 680
> +++++++++++++++++++++++++++++++++++++++++++++++
> sbd/sheep_block_device.c | 424 +++++++++++++++++++++++++++++
> 6 files changed, 1275 insertions(+), 7 deletions(-)
> create mode 100644 sbd/Kbuild
> create mode 100644 sbd/Makefile
> create mode 100644 sbd/sbd.h
> create mode 100644 sbd/sheep.c
> create mode 100644 sbd/sheep_block_device.c
>
> --
> 1.8.1.2
>
> --
> sheepdog mailing list
> sheepdog at lists.wpkg.org
> http://lists.wpkg.org/mailman/listinfo/sheepdog
>
--
--
Best Regard
Robin Dong
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.wpkg.org/pipermail/sheepdog/attachments/20140529/f615271e/attachment-0004.html>
More information about the sheepdog
mailing list