VDO 512 byte block size emulation
I have a database manager which requires a 512 byte block size. I was receiving a I/O error when using the VDO native 4096 byte block size. My question is, are there any performance hits from using the "--emulate512" argument when creating VDO devices.
I found this:
https://access.redhat.com/solutions/3357571
I'd also like to understand this statement a little clearer:
"The 512 byte emulation mode uses read-modify-write to update 4K physical blocks with sub-4K write IO. "
Does this mean there is an additional layer sitting between the application and the VDO device performing the emulation?
Responses
A "read write modify unit" is the smallest unit of I/O which can be done to a disk.
So if the RWM unit size is 4KiB, then it doesn't matter if you write 1 byte or 2 bytes or 1000 bytes or 4095 bytes. For any I/O which occurs, 4096 bytes are read, your changes are applied, then that 4096 byte block is written back.
It's not possible to do I/O smaller than the RWM unit. At a very low level, there's no such thing as say "changing 1 byte".
I'm not familiar with the workings of VDO, but I don't expect there would be another layer added. The idea of reporting 512 bytes to userspace but actually doing 4096 bytes to the disk would likely be handled within VDO itself. VDO probably already is the layer, doing compression and now also doing I/O size emulation.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
