The open-iscsi package is the de facto standard Linux iSCSI initiator, but it does not support iSCSI MCS.
MCS stands for multiple connections per session, and it means that the iSCSI initiator and target communicate over multiple connections to increase throughput. It is sometimes written as "MC/S".
The open-iscsi package uses a file/directory-based database -- actually, 3 databases: the "send targets" done with their results, the "nodes" found, and the "interfaces" known/used. But there are inefficiencies when dealing with thousands of targets, and the "node" and "send target" databases could easily be combined. Perhaps moved into a real database?
Also, the sysfs interaction that open-iscsi does is terrible with thousands of targets, perhaps even O(n^2), which would really really suck. I'd like to investigate the relationship of sysfs access to number of targets/LUNs to verify this.
1 hackers ♥️.
Has no hacker:
At the suggestion of Hannes, I would like to try to make mhvtl work with tcmu-runner. Mhvtl is a tape-drive emulation package, which emulates various types of tapes drives and tape robot units (for loading drives). This package was originally based on the kernel debug SCSI driver, and still has a kernel component. This kernel component talks to user-space via a special character device.
It would be nice to take away the kernel component, so that it's easier to compile and use this package, since the current mhvtl kernel driver has not been merged upstream so has to be supplied as a KMP. [And KMPs are evil.]
The mhvtl tape library emulation package was originally based on the scsi_debug kernel driver, but has long since grown more complicated, with the mhvtl,ko kernel module now passing almost all SCSI commands to user-level daemons via a clunky device interface. It does this with an out-of-band driver, since the design is so bad it would never be accepted upstream.
And with the 4.20 kernel release, it has broken yet again, which is par for the course with out of band drivers.