Feature-Based Comparison of Iscsi Target Implementations
Total Page:16
File Type:pdf, Size:1020Kb
International Journal of Computer Applications (0975 – 8887) Volume 85 – No 16, January 2014 Feature-based Comparison of iSCSI Target Implementations Nitin Gode Rhushida Kashalkar Deepika Kale Sukhada Bhingarkar MIT College of MIT College of MIT College of MIT College of Engineering, Engineering, Engineering, Engineering, Survey No. 124, Paud Survey No. 124, Paud Survey No. 124, Paud Survey No. 124, Paud Road, Road, Road, Road, Pune 411038, India Pune 411038, India Pune 411038, India Pune 411038, India ABSTRACT target is compared in [8]. In [4], Y. Lu et al compare the Small Computer System Interface (SCSI) is a set of protocols performance between iSCSI target and a NAS scheme. The used for communication and data transfer between I/O devices overheads that the iSCSI subsystem introduces as compared to like computers and storage devices. SCSI standards include direct file storage systems are discussed in [5]. The various commands, interfaces and protocols that are required to performance of iSCSI protocol in various scenarios, such as in a communicate with devices such as hard disks, DVD and WAN and when having virtualized disks is evaluated in [6]. printers. iSCSI is a storage standard for exposing and utilizing Khosravi et al discuss performance of iSCSI in server data storage devices over network using TCP/IP protocol. iSCSI environments in [7]. provides remote data operations by performing SCSI commands While there exist a number of papers that discuss the over TCP/IP networks. This paper explains the features of performance of iSCSI Targets, none discuss the feature set of various iSCSI Target Frameworks currently in use, such as the current target frameworks. SCSI Target Framework (STGT), Generic SCSI Target Subsystems for Linux (SCST), Linux I/O Target (LIO), iSCSI 3. CURRENTLY AVAILABLE TARGET Enterprise Target (IET). The paper also presents a comparison FRAMEWORKS of the features of these implementations. This section explores the features of several popular iSCSI Keywords target frameworks, including STGT, SCST, LIO (TCM) and Storage/Repositories, Distributed File Systems IET. The following section provides the comparison between the features of these frameworks. 1. INTRODUCTION Small Computer System Interface (SCSI) is a set of protocols 3.1 STGT used for communication and data transfer between I/O devices STGT (SCSI Target Framework) was the standard like computers and storage devices. SCSI standards include multiprotocol SCSI target in Linux. It was an alternative various commands, interfaces and protocols that are required to implementation of SCSI target framework for Linux [9, 10]. communicate with devices, mostly hard disks. SCSI is a peer- The main purpose of STGT was to simplify SCSI Target to-peer interface capable of handling 16 devices on a single bus. creation. In STGT, the target was implemented in userspace iSCSI is an IP based storage networking standard for linking rather than the kernelspace. STGT was merged in earlier data storage facilities. iSCSI provides location independent data versions of Linux kernel as it was considered to be correctly storage and retrieval by carrying out standard Small Computer implemented. However, STGT was replaced by LIO (from System Interface (SCSI) commands over IP networks. Two Linux kernel 2.6.38) as LIO had several advantages over STGT. iSCSI hosts can thus be connected over an IP network. SCSI STGT’s goal was to integrate into SCSI layers in user space commands are exchanged over this network for exchanging of rather than kernel space. Bidirectional commands could be used data. These hosts are classified as initiators and targets. An in STGT. However it had several performance and complexity iSCSI target functions as the endpoint that waits for and problems, making it unsuitable for use in a production services requests from a client machine (initiator). It may be a environment. network-connected storage device, array, or an emulated target. [1, 2, 3] 3.2 SCST The Generic SCSI Target Subsystem for Linux (SCST) allows Section 2 presents several works related to the paper. Section 3 creation of sophisticated storage devices from any Linux contains a detailed study of the target implementations covered device. [10] SCST devices provide extended functionality like in the paper, namely iSCSI Target Framework (STGT), Generic replication, device add/remove notification, thin provisioning, SCSI Target Subsystems for Linux (SCST), Linux I/O Target support for AEN, etc. Links that support SCSI commands like (LIO), iSCSI Enterprise Target (IET). Section 4 presents a iSCSI, FCoE, SAS, Wide SCSI, etc. can be efficiently used by comparison table of the iSCSI Target implementations and its SCST implementation. analysis. Section 5 presents the conclusion and future scope for the paper. SCST project consists of a set of subprojects: generic SCSI target mid-layer itself (SCST core) with a set of device handlers 2. RELATED WORK as well as target drivers and user space utilities. [10] For Related papers in which the performance of iSCSI target communication between the target drivers and the kernel, SCST software is discussed include [4], [5], [6], [7] and [8]. The implements interfaces. These interfaces are used for connecting performance of the Ardis target framework (on which IET is the backend handlers with the target drivers. The SCST core based) with several legacy target frameworks not covered by processes any requests received by the target and checks them this paper, including variants of the UNH target and the Ardis 13 International Journal of Computer Applications (0975 – 8887) Volume 85 – No 16, January 2014 for errors. It also solves most execution problems, thus making improve performance to a large scale in kernels using CFQ I/O implementation and functioning easier in the kernel. Scheduler. Similarly it supports iSCSI redirects and Internet Storage Name Service (iSNS) protocol. SCST core emulates necessary functionality of SCSI host adapter, as from the perspective of a remote initiator, a SCSI IET however does not support any transport fabrics other than target acts as a SCSI host with its own devices. [10] This is iSCSI. IET has an unsafe implementation of Task Management important in cases where multiple initiators are connected. Commands – it processes ORDERED commands in the same Particularly, incoming requests can be processed in the caller's way as SIMPLE commands, which may lead to data corruption. context or in one of the internal SCST core's tasklets without It has been replaced by other target implementations in several any extra context switches. [10] For example, pass-through popular Linux distributions, because of lack of support and of device handlers allow exporting real SCSI hardware and vdisk modern feature. device handler allows exporting files as virtual disks. [10] 4. COMPARISON OF LINUX SCSI 3.3 LIO TARGETS LIO target is an open-source implementation of an iSCSI target From the study of the target, it is possible to draw several framework which is included in the upstream Linux kernel conclusions. (since Linux 2.6.38). It supports a large number of fabrics, including FCoE, Fiber Channel, iSCSI and vHost. Its advanced Of the above discussed frameworks, LIO requires minimum feature set has made it possible for it to achieve VMware effort to use, as it is already merged with the mainstream kernel. vSphere 4 Ready Certification and vSphere 5 Ready All implementations have a generic target engine, except IET, Certification [11]. which has support only for iSCSI. LIO and SCST have kernel- space architecture, while IET has a split architecture (data The target engine is based on a high performance SCSI engine transfer is kernel-space, while management is user-space) and which implements the semantics of SCSI Architecture Model 2 STGT has completely user-space architecture. (SAM 2) and the SCSI Primary Commands specification (SPC- 3 and SPC-4) [11]. It supports Memory Copy RAMDISK, In the target frameworks, both LIO and SCST support target which provides comprehensive SCSI emulation and separate drivers in user-space as well as kernel space (SCST via memory mapping per initiator [11]. It also supports specialized scst_local, LIO via tcm_loop), whereas IET does not. In functionality, such as MC/S (Multiple Connections/Session), addition, SCST and LIO support kernel-space backstore Asymmetric Logical Unit Assignment (ALUA) and Error handlers. LIO also supports Memory Copy RAMDISK. Recovery Levels (ERL 0, 1, 2). SCST in particular provides an extended set of functionality not LIO supports a large number of backstores, including FILEIO supported by any other initiators, including automatic session (buffered and non-buffered), IBLOCK (any block device), Pass- reassignments (changes in access control immediately seen by through SCSI (PSCSI) devices and Ramdisk. It has in-built all initiators), support for AENs (asynchronous event support for virtualization, including native support for libvirt, notifications) and notifications for device add/remove/resize OpenStack (beginning with Release 2013.1) and KVM. (through AENs/Unit Attentions). It also supports bidirectional SCSI commands. All the target frameworks satisfy SCSI safe LIO has a fully kernel-based architecture, with several user- RESERVE/RELEASE requirements; though only SCST has a space configuration tools including IOCTLs, ProcFS, ConfigFS, fully safe implementation of task management commands (LIO rtslib (Python based API), targetcli (command line interface) has safe implementation only for LUN RESET). and configshell. With respect to the iSCSI target, most implementations support 3.4 IET only zero-copy data send. SCST does not support MC/S iSCSI Enterprise Target (IET) is a kernel based target driver (supported by LIO and IET), a feature which allows several based on Ardis target implementation created by Ardis connections per session, making failover recovery faster. Technology. It was created with the goal of creating an However, SCST allows a more fine-grained control over enterprise ready iSCSI target which is scalable enough and visibility of targets, such as per-portal and per-initiator target versatile enough to meet the rapidly changing requirements of visibility control.