I am researching how one might go about making PCIe SSDs accessible as an iSCSI target for a very small 2-3 server network, and using off the shelf DIY components.
A mystery I am trying to answer is why the functions of an iSCSI target cannot be fully handled by a special sort of 10 gigabit NIC only.
As far as I can determine, the iSCSI target merely sends and receives block requests from the initiators and forwards these requests to the appropriate block device or RAID controller. This does not appear to be a hugely complicated task, and can probably be handled by just a few kilobytes of code.
(Yes, of course there is an additional encryption and authentication layer between the intiators and the target, but still this does not seem too hugely complex of a task.)
And so... why does a full Windows or Linux operating system need to be dragged into the picture to provide iSCSI target services? It seems to vastly increase the risks of buggy software and attack surface while minimally providing anything beneficial for the functions of being an iSCSI target.
It seems like all that should be needed is one or more PCIe SSDs and a NIC capable of providing iSCSI services, which is itself set as a boot device for the motherboard and runs the show with no OS installed, and all available space on the PCIe SSDs available for use by the iSCSI initiators.
Also, perhaps I am overcomplicating the issue by looking at a standard full motherboard or server chassis for this application.
Apparently what I should probably be looking for is some sort of high performance 10/40 gigabit NAS device which has no SATA or SAS interfaces, but rather just 2-5 PCIe x8 or x16 slots for inserting PCIe SSDs.