Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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: 20230427172019.3345-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 command-line indentation. --Stefan] Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
- Loading branch information
1 parent
8d6164e
commit 2ee9aa9
Showing
3 changed files
with
50 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,3 +12,4 @@ generated from in-code annotations to function prototypes. | |
memory | ||
modules | ||
ui | ||
zoned-storage |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters