From: Walker, Benjamin <benjamin.walker at intel.com>
To: spdk@lists.01.org
Subject: Re: [SPDK] Basic design of linear bdev (aggregating multi bdevs)
Date: Thu, 13 Sep 2018 17:05:58 +0000 [thread overview]
Message-ID: <896776e8ee5d46fa5ca0d962bec7a7f4d104c951.camel@intel.com> (raw)
In-Reply-To: OS1PR01MB0229C947D5952A0FA14B4A4EA21A0@OS1PR01MB0229.jpnprd01.prod.outlook.com
[-- Attachment #1: Type: text/plain, Size: 2652 bytes --]
On Thu, 2018-09-13 at 02:46 +0000, 松本周平 / MATSUMOTO,SHUUHEI wrote:
> Hi All,
>
>
> As I talked shortly in the community before, I'm working on linear bdev
> (aggregating mutilple bdevs) as part of my works.
Just to clarify a bit more - this bdev concatenates bdevs, placing one after the
other, right? Are you able to share use cases for this type of volume? My
primary concern is that higher layers in the software stack often are designed
to prefer to write to lower LBAs, so concatenation results in hammering the
first disk and hardly touching the rest. Often, a RAID 0 with very large strips
(1MB) ends up working better. There are other considerations, such as what
happens when a disk fails, that may make RAID 0 infeasible, but it's something
to consider.
>
>
> The following is my present basic design of the linear bdev.
>
>
> Linear bdev doesn't belong to raid but I want to add linear bdev as another
> level of raid bdev.
>
> Raid bdev and IO splitting in bdev will be able to become the great
> foundation.
For a bdev that is made as a concatenation of other bdevs there won't be much
splitting necessary and I think the algorithm is unique enough that you could do
something specific to the concatentation code instead of relying on generic
splitting in the bdev layer. I think that's a simpler approach overall.
>
>
> bdev:
> - Utilize current IO splitting as much as possible.
> - In linear bdev, optimal_io_boundary is not constant and linear bdev can't
> use current implementation based on optimal_io_boundary.
>
> - Add an array made of (start, length) pair to struct spdk_bdev instead of
> optimal_io_boundary.
> - Abstract the following APIs:
> - bool _spdk_bdev_io_should_split(struct spdk_bdev_io *bdev_io)
> - uint32_t _to_next_boundary(uint64_t offset, uint32_t boundary)
> - The (start, length) array and optimal_io_boundary are mutually exclusive.
>
>
> raid_bdev:
> - Utilize current implementation as much as possible.
> - Abstract the following:
> - raid_bdev_configure()
> - check consistency among base bdevs, calculate total block counts, add
> split info to spdk_bdev
> - raid_bdev_start_rw_request() and following functions
> - Use -1 as the level of the linear bdev.
>
>
> rpc:
> - Add an new parameter linear (bool) to construct_raid_bdev.
> - raid_level and linear are mutually exclusive.
>
>
> Your any feedback is very welcome.
>
>
> Thanks,
>
> Shuhei
> _______________________________________________
> SPDK mailing list
> SPDK(a)lists.01.org
> https://lists.01.org/mailman/listinfo/spdk
next reply other threads:[~2018-09-13 17:05 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-13 17:05 Walker, Benjamin [this message]
-- strict thread matches above, loose matches on Subject: below --
2018-09-17 11:00 [SPDK] Basic design of linear bdev (aggregating multi bdevs) Senthil Kumar Veluswamy
2018-09-13 23:09
2018-09-13 2:46
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=896776e8ee5d46fa5ca0d962bec7a7f4d104c951.camel@intel.com \
--to=spdk@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox