Highly Available SCST & LIO iSCSI Clustering How-To Guide Update & Comparison

Companion Tech Guide Updated using Community Feedback on 3/21/24

LINBIT®️ has been building and supporting Highly Available (HA) iSCSI clusters using DRBD®️ and Pacemaker for over a decade. We recently updated our HA iSCSI how-to guides for RHEL 8 and RHEL 9 to include instructions for both the Linux-IO (LIO) and SCSI Target Subsystem for Linux (SCST) iSCSI implementations for Linux, giving anyone looking to get started more options when designing a cluster to meet their needs and particular use case.

If you are looking to build such a cluster, you might be wondering which iSCSI implementation you should choose, or what the differences between the two implementations are. I will summarize what I believe are the most notable characteristics of each to perhaps help in the decision making process.

LIO and SCST in a Nutshell

LIO is a SCSI target framework integrated into the Linux kernel, providing a standardized interface for exporting storage devices over various SCSI transports, including iSCSI. It allows users to configure and manage iSCSI targets, initiators, and other storage-related parameters within the Linux operating system.

SCST is an SCSI target framework designed for Linux, developed outside the mainline kernel and supporting multiple SCSI protocols, including iSCSI. SCST provides a flexible platform for creating customized storage solutions and is known for its versatility and support for custom plugins.

Similarities Between LIO and SCST

Both LIO and SCST are kernel space implementations, which means they have direct access to the system’s hardware. This means device access is efficient and ensures low latency. This results in better performance than user space implementations which require context switches and system calls that can add latency to the system.

Importantly for clustering clients, both LIO and SCST support persistent reservations. Persistent reservations allow for the smooth hand off of LUNs during initiator failover and restrict concurrent access from multiple initiators which could introduce corruption.

Differences Between LIO and SCST

LIO is the implementation that was chosen to be included in the Linux kernel. This makes it easier to install than any other iSCSI implementation available for Linux. LIO also has a command line user interface, targetcli, that makes managing the target subsystem accessible to new users. These aspects make LIO more user friendly than SCST.

SCST is often found “under the hood” of Linux based storage appliances, likely because of its flexibility and ability to support custom plugins. SCST is a more general-purpose SCSI target framework, making it a good choice for purpose-built storage solutions. Configuration of SCST is done through configuration files. LINBIT’s VSAN product uses SCST as its iSCSI implementation since version 0.17.0, where versions prior used LIO.

The most notable difference in LINBIT’s experience having used both LIO and SCST in LINBIT VSAN is SCST’s ability to recover from certain failure scenarios that could occur under heavy load specifically when the iSCSI initiator is a VMware ESXi host. ESXi uses the vStorage APIs for Array Integration (VAAI) Atomic Test and Set (ATS) command for its datastore heartbeats. The VAAI ATS command has a shorter timeout than a regular SCSI command, so under load, and usually when attaching to targets over busy networks, the VAAI ATS commands will be the first to fail due to exceeding a timeout. This will cause ESXi to detach from the datastore. LIO does not allow for a second data session to be established. SCST does allow this, and so can work around the issue when it does crop up. Outside of this very specific scenario, we at LINBIT have had much success building and supporting HA iSCSI clusters using LIO and we’re still digging into this issue.

Conclusion

In conclusion, options are good and our iSCSI guide now gives you more of them! If you’re considering building an HA iSCSI cluster specifically for use with VMware’s ESXi, I would recommend SCST. Otherwise, I would say the LIO stack is easier to install and maintain because of its inclusion in the mainline kernel. That said, you should absolutely evaluate both implementations’ technical aspects from the perspective of your own specific use case.

LINBIT prides itself in its openness and aims to allow our users to choose what is right for them. That is why LINBIT builds and supports open source tools and frameworks for clustering rather than packaging “one size fits all” application stacks.

If you have any feedback on anything written above, or any insights or experiences you want to share with us regarding the iSCSI implementations mentioned (or not mentioned) in this blog, reach out!

Matt Kereczman

Matt Kereczman

Matt Kereczman is a Solutions Architect at LINBIT with a long history of Linux System Administration and Linux System Engineering. Matt is a cornerstone in LINBIT's technical team, and plays an important role in making LINBIT and LINBIT's customer's solutions great. Matt was President of the GNU/Linux Club at Northampton Area Community College prior to graduating with Honors from Pennsylvania College of Technology with a BS in Information Security. Open Source Software and Hardware are at the core of most of Matt's hobbies.

Talk to us

LINBIT is committed to protecting and respecting your privacy, and we’ll only use your personal information to administer your account and to provide the products and services you requested from us. From time to time, we would like to contact you about our products and services, as well as other content that may be of interest to you. If you consent to us contacting you for this purpose, please tick above to say how you would like us to contact you.

You can unsubscribe from these communications at any time. For more information on how to unsubscribe, our privacy practices, and how we are committed to protecting and respecting your privacy, please review our Privacy Policy.

By clicking submit below, you consent to allow LINBIT to store and process the personal information submitted above to provide you the content requested.

Talk to us

LINBIT is committed to protecting and respecting your privacy, and we’ll only use your personal information to administer your account and to provide the products and services you requested from us. From time to time, we would like to contact you about our products and services, as well as other content that may be of interest to you. If you consent to us contacting you for this purpose, please tick above to say how you would like us to contact you.

You can unsubscribe from these communications at any time. For more information on how to unsubscribe, our privacy practices, and how we are committed to protecting and respecting your privacy, please review our Privacy Policy.

By clicking submit below, you consent to allow LINBIT to store and process the personal information submitted above to provide you the content requested.