[libvirt] [RFC] proposal for libiscsi storage pool
Michal Privoznik
mprivozn at redhat.com
Tue Jun 5 07:37:06 UTC 2018
On 06/04/2018 05:54 PM, Clementine Hayat wrote:
> Hi everybody!
>
>
> I am starting this thread to discuss a new storage pool backend for
> iSCSI using libiSCSI.
>
> There already is an iSCSI backend, however, it uses iscsiadm binary to
> execute the desired operation. The binary can be spawned multiple
> times during single execution of an API. This is suboptimal.
>
> Moreover the iscsi storage pool is mapped by the kernel into a block
> device in /dev/. Iscsiadm makes operations directly on that block
> device. Libiscsi on the other hand is sending the commands directly to
> a remote iscsi portal. According to that, to be able to use a storage
> pool using libiscsi we have to implement the storage pool backend
> entirely.
>
> What we would have:
>
> Pool XML using iscsiadm:
>
> <pool type="iscsi" mode="host">
This sounds reasonable. However, I think for backwards compatibility we
need to treat <pool type="iscsi"/> as mode="host". That is, if we don't
parse any @mode, we must assume "host" and then we can format it into
the XML back.
> <name>virtimages</name>
> <source>
> <host name="iscsi.example.com"/>
> <device path="iqn.2013-06.com.example:iscsi-pool"/>
> <auth type='chap' username='myuser'>
> <secret usage='libvirtiscsi'/>
> </auth>
> </source>
> <target>
> <path>/dev/disk/by-path</path>
> </target>
> </pool>
>
> Pool XML using libiscsi:
>
> <pool type="iscsi" mode="direct">
> <name>virtimages</name>
> <source>
> <host name="iscsi.example.com"/>
> <device path="iqn.2013-06.com.example:iscsi-pool"/>
> <auth type='chap' username='myuser'>
> <secret usage='libvirtiscsi'/>
> </auth>
> </source>
> </pool>
>
> The change that occurs is having a direct mode that will lead to the
> libiscsi backend and the host mode that will lead to the actual
> backend using iscsiadm.
>
> To tie the backend to the front was thinking about adding something
> like VIR_STORAGE_POOL_LIBISCSI to storage_conf.
Yes, that is one of the changes needed. Sounds right.
>
> About the domain XML only accept:
>
> <disk type='volume' device='disk'>
> <driver name='qemu' type='raw'/>
> <source pool='iscsi-pool' volume='unit:0:0:2' mode='direct'/>
> <target dev='vdc' bus='virtio'/>
> </disk>
>
> would be great using a switch case on VIR_STORAGE_POOL_LIBISCSI inside
> domain_conf.
>
Yes. This is one of the places that need change. We tend to use
typecasted switch()-es for exactly this reason - to help contributors
identify places of interest when adding new type of something (not only
storage pool).
Michal
More information about the libvir-list
mailing list