[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