From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============7121858358936864597==" MIME-Version: 1.0 From: Daniel Verkamp Subject: Re: [SPDK] BDEV & VBDEV Date: Fri, 21 Oct 2016 10:48:21 -0700 Message-ID: In-Reply-To: 64579C2D-E734-4D57-820F-B224400B2E37@cloudsimple.com List-ID: To: spdk@lists.01.org --===============7121858358936864597== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 10/21/2016 06:31 AM, Kumaraparameshwaran Rathnavel wrote: > Hi Guys, > > What is the difference between BDEV and VBDEV ? > > Thanking You, > Param Hi Param, Regular bdevs expose raw block devices (NVMe namespaces, kernel block = devices via libaio, etc.). They typically interface with a hardware = device that needs to be polled periodically to check for completions. A vbdev is a "virtual blockdev" that consumes one or more bdevs and = produces another set of bdevs. A vbdev can process each I/O and decide = what to do with it - for example, it could send each I/O to an = underlying bdev, or split a single request into multiple I/Os to several = different bdevs to implement features like RAID, or even encrypt writes = and decrypt reads to add a disk encryption layer. We don't have any vbdev examples in the tree currently, but we plan to = add an example vbdev that will read partition tables from a disk and = expose each partition as another bdev that can be exposed as an iSCSI = LUN or NVMe over Fabrics namespace. Thanks, -- Daniel --===============7121858358936864597==--