docs/zoned-storage: add zoned device documentation
Add the documentation about the zoned device support to virtio-blk emulation. Signed-off-by: Sam Li <faithilikerun@gmail.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> Reviewed-by: Dmitry Fomichev <dmitry.fomichev@wdc.com> Acked-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Message-id: 20230508045533.175575-9-faithilikerun@gmail.com Message-id: 20230324090605.28361-9-faithilikerun@gmail.com [Add index-api.rst to fix "zoned-storage.rst:document isn't included in any toctree" error and fix pre-formatted code syntax. --Stefan] Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
142e307e79
commit
90fd974668
@ -12,3 +12,4 @@ generated from in-code annotations to function prototypes.
|
||||
memory
|
||||
modules
|
||||
ui
|
||||
zoned-storage
|
||||
|
43
docs/devel/zoned-storage.rst
Normal file
43
docs/devel/zoned-storage.rst
Normal file
@ -0,0 +1,43 @@
|
||||
=============
|
||||
zoned-storage
|
||||
=============
|
||||
|
||||
Zoned Block Devices (ZBDs) divide the LBA space into block regions called zones
|
||||
that are larger than the LBA size. They can only allow sequential writes, which
|
||||
can reduce write amplification in SSDs, and potentially lead to higher
|
||||
throughput and increased capacity. More details about ZBDs can be found at:
|
||||
|
||||
https://zonedstorage.io/docs/introduction/zoned-storage
|
||||
|
||||
1. Block layer APIs for zoned storage
|
||||
-------------------------------------
|
||||
QEMU block layer supports three zoned storage models:
|
||||
- BLK_Z_HM: The host-managed zoned model only allows sequential writes access
|
||||
to zones. It supports ZBD-specific I/O commands that can be used by a host to
|
||||
manage the zones of a device.
|
||||
- BLK_Z_HA: The host-aware zoned model allows random write operations in
|
||||
zones, making it backward compatible with regular block devices.
|
||||
- BLK_Z_NONE: The non-zoned model has no zones support. It includes both
|
||||
regular and drive-managed ZBD devices. ZBD-specific I/O commands are not
|
||||
supported.
|
||||
|
||||
The block device information resides inside BlockDriverState. QEMU uses
|
||||
BlockLimits struct(BlockDriverState::bl) that is continuously accessed by the
|
||||
block layer while processing I/O requests. A BlockBackend has a root pointer to
|
||||
a BlockDriverState graph(for example, raw format on top of file-posix). The
|
||||
zoned storage information can be propagated from the leaf BlockDriverState all
|
||||
the way up to the BlockBackend. If the zoned storage model in file-posix is
|
||||
set to BLK_Z_HM, then block drivers will declare support for zoned host device.
|
||||
|
||||
The block layer APIs support commands needed for zoned storage devices,
|
||||
including report zones, four zone operations, and zone append.
|
||||
|
||||
2. Emulating zoned storage controllers
|
||||
--------------------------------------
|
||||
When the BlockBackend's BlockLimits model reports a zoned storage device, users
|
||||
like the virtio-blk emulation or the qemu-io-cmds.c utility can use block layer
|
||||
APIs for zoned storage emulation or testing.
|
||||
|
||||
For example, to test zone_report on a null_blk device using qemu-io is::
|
||||
|
||||
$ path/to/qemu-io --image-opts -n driver=host_device,filename=/dev/nullb0 -c "zrp offset nr_zones"
|
@ -430,6 +430,12 @@ Hard disks
|
||||
you may corrupt your host data (use the ``-snapshot`` command
|
||||
line option or modify the device permissions accordingly).
|
||||
|
||||
Zoned block devices
|
||||
Zoned block devices can be passed through to the guest if the emulated storage
|
||||
controller supports zoned storage. Use ``--blockdev host_device,
|
||||
node-name=drive0,filename=/dev/nullb0,cache.direct=on`` to pass through
|
||||
``/dev/nullb0`` as ``drive0``.
|
||||
|
||||
Windows
|
||||
^^^^^^^
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user