Message ID | 20190607131025.31996-1-naohiro.aota@wdc.com (mailing list archive) |
---|---|
Headers | show |
Series | btrfs zoned block device support | expand |
On Fri, Jun 07, 2019 at 10:10:06PM +0900, Naohiro Aota wrote: > btrfs zoned block device support > > This series adds zoned block device support to btrfs. The overall design sounds ok. I skimmed through the patches and the biggest task I see is how to make the hmzoned adjustments and branches less visible, ie. there are too many if (hmzoned) { do something } standing out. But that's merely a matter of wrappers and maybe an abstraction here and there. How can I test the zoned devices backed by files (or regular disks)? I searched for some concrete example eg. for qemu or dm-zoned, but closest match was a text description in libzbc README that it's possible to implement. All other howtos expect a real zoned device. Merge target is 5.3 or later, we'll see how things will go. I'm expecting that we might need some time to get feedback about the usability as there's no previous work widely used that we can build on top of.
On 2019/06/13 2:50, David Sterba wrote: > On Fri, Jun 07, 2019 at 10:10:06PM +0900, Naohiro Aota wrote: >> btrfs zoned block device support >> >> This series adds zoned block device support to btrfs. > > The overall design sounds ok. > > I skimmed through the patches and the biggest task I see is how to make > the hmzoned adjustments and branches less visible, ie. there are too > many if (hmzoned) { do something } standing out. But that's merely a > matter of wrappers and maybe an abstraction here and there. Sure. I'll add some more abstractions in the next version. > How can I test the zoned devices backed by files (or regular disks)? I > searched for some concrete example eg. for qemu or dm-zoned, but closest > match was a text description in libzbc README that it's possible to > implement. All other howtos expect a real zoned device. You can use tcmu-runer [1] to create an emulated zoned device backed by a regular file. Here is a setup how-to: http://zonedstorage.io/projects/tcmu-runner/#compilation-and-installation [1] https://github.com/open-iscsi/tcmu-runner > Merge target is 5.3 or later, we'll see how things will go. I'm > expecting that we might need some time to get feedback about the > usability as there's no previous work widely used that we can build on > top of. >
On Thu, Jun 13, 2019 at 04:59:23AM +0000, Naohiro Aota wrote: > On 2019/06/13 2:50, David Sterba wrote: > > On Fri, Jun 07, 2019 at 10:10:06PM +0900, Naohiro Aota wrote: > >> btrfs zoned block device support > >> > >> This series adds zoned block device support to btrfs. > > > > The overall design sounds ok. > > > > I skimmed through the patches and the biggest task I see is how to make > > the hmzoned adjustments and branches less visible, ie. there are too > > many if (hmzoned) { do something } standing out. But that's merely a > > matter of wrappers and maybe an abstraction here and there. > > Sure. I'll add some more abstractions in the next version. Ok, I'll reply to the patches with specific things. > > How can I test the zoned devices backed by files (or regular disks)? I > > searched for some concrete example eg. for qemu or dm-zoned, but closest > > match was a text description in libzbc README that it's possible to > > implement. All other howtos expect a real zoned device. > > You can use tcmu-runer [1] to create an emulated zoned device backed by > a regular file. Here is a setup how-to: > http://zonedstorage.io/projects/tcmu-runner/#compilation-and-installation That looks great, thanks. I wonder why there's no way to find that, all I got were dead links to linux-iscsi.org or tutorials of targetcli that were years old and not working. Feeding the textual commands to targetcli is not exactly what I'd expect for scripting, but at least it seems to work. I tried to pass an emulated ZBC device on host to KVM guest (as a scsi device) but lsscsi does not recognize that it as a zonde device (just a QEMU harddisk). So this seems the emulation must be done inside the VM.
On 2019/06/13 22:45, David Sterba wrote:> On Thu, Jun 13, 2019 at 04:59:23AM +0000, Naohiro Aota wrote: >> On 2019/06/13 2:50, David Sterba wrote: >>> On Fri, Jun 07, 2019 at 10:10:06PM +0900, Naohiro Aota wrote: >>> How can I test the zoned devices backed by files (or regular disks)? I >>> searched for some concrete example eg. for qemu or dm-zoned, but closest >>> match was a text description in libzbc README that it's possible to >>> implement. All other howtos expect a real zoned device. >> >> You can use tcmu-runer [1] to create an emulated zoned device backed by >> a regular file. Here is a setup how-to: >> http://zonedstorage.io/projects/tcmu-runner/#compilation-and-installation>> That looks great, thanks. I wonder why there's no way to find that, all > I got were dead links to linux-iscsi.org or tutorials of targetcli that > were years old and not working. Actually, this is quite new site. ;-) > Feeding the textual commands to targetcli is not exactly what I'd > expect for scripting, but at least it seems to work. You can use "targetcli <directory> <command> [<args> ...]" format, so you can call e.g. targetcli /backstores/user:zbc create name=foo size=10G cfgstring=model-HM/zsize-256/conv-1@/mnt/nvme/disk0.raw > I tried to pass an emulated ZBC device on host to KVM guest (as a scsi > device) but lsscsi does not recognize that it as a zonde device (just a > QEMU harddisk). So this seems the emulation must be done inside the VM. Oops, QEMU hide the detail. In this case, you can try exposing the ZBC device via iSCSI. On the host: (after creating the ZBC backstores) # sudo targetcli /iscsi create Created target iqn.2003-01.org.linux-iscsi.naota-devel.x8664:sn.f4f308e4892c. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260. # TARGET="iqn.2003-01.org.linux-iscsi.naota-devel.x8664:sn.f4f308e4892c" (WARN: Allow any node to connect without any auth) # targetcli /iscsi/${TARGET}/tpg1 set attribute generate_node_acls=1 Parameter generate_node_acls is now '1'. ( or you can explicitly allow an initiator) # TCMU_INITIATOR=iqn.2018-07.... # targecli /iscsi/${TARGET}/tpg1/acls create ${TCMU_INITIATOR} (for each backend) # targetcli /iscsi/${TARGET}/tpg1/luns create /backstores/user:zbc/foo Created LUN 0. Then, you can login to the iSCSI on the KVM guest like: # iscsiadm -m discovery -t st -p $HOST_IP 127.0.0.1:3260,1 iqn.2003-01.org.linux-iscsi.naota-devel.x8664:sn.f4f308e4892c # iscsiadm -m node -l -T ${TARGET} Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.naota-devel.x8664:sn.f4f308e4892c, portal: 127.0.0.1,3260] Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.naota-devel.x8664:sn.f4f308e4892c, portal: 127.0.0.1,3260] successful.
David, On 2019/06/13 22:45, David Sterba wrote: > On Thu, Jun 13, 2019 at 04:59:23AM +0000, Naohiro Aota wrote: >> On 2019/06/13 2:50, David Sterba wrote: >>> On Fri, Jun 07, 2019 at 10:10:06PM +0900, Naohiro Aota wrote: >>>> btrfs zoned block device support >>>> >>>> This series adds zoned block device support to btrfs. >>> >>> The overall design sounds ok. >>> >>> I skimmed through the patches and the biggest task I see is how to make >>> the hmzoned adjustments and branches less visible, ie. there are too >>> many if (hmzoned) { do something } standing out. But that's merely a >>> matter of wrappers and maybe an abstraction here and there. >> >> Sure. I'll add some more abstractions in the next version. > > Ok, I'll reply to the patches with specific things. > >>> How can I test the zoned devices backed by files (or regular disks)? I >>> searched for some concrete example eg. for qemu or dm-zoned, but closest >>> match was a text description in libzbc README that it's possible to >>> implement. All other howtos expect a real zoned device. >> >> You can use tcmu-runer [1] to create an emulated zoned device backed by >> a regular file. Here is a setup how-to: >> http://zonedstorage.io/projects/tcmu-runner/#compilation-and-installation > > That looks great, thanks. I wonder why there's no way to find that, all > I got were dead links to linux-iscsi.org or tutorials of targetcli that > were years old and not working. The site went online 4 days ago :) We will advertise it whenever we can. This is intended to document all things "zoned block device" including Btrfs support, when we get it finished :) > > Feeding the textual commands to targetcli is not exactly what I'd > expect for scripting, but at least it seems to work. Yes, this is not exactly obvious, but that is how most automation with linux iscsi is done. > > I tried to pass an emulated ZBC device on host to KVM guest (as a scsi > device) but lsscsi does not recognize that it as a zonde device (just a > QEMU harddisk). So this seems the emulation must be done inside the VM. > What driver did you use for the drive ? virtio block ? I have not touch that driver nor qemu side, so zoned block dev support is likely missing. I will add it. That would be especially useful for testing with a real drive. In the case of tcmu runner, the initiator can be started in the guest directly and the target emulation done either in the guest if loopback is used, or on the host using iscsi connection. The former is what we use all the time and so is well tested. I have to admit that testing with iscsi is lacking... Will add that to the todo list. Best regards.