Features/KernelTarget

= Kernel Target =

Summary
Enable use of kernel target (LIO) for iSCSI and FCoE.

Owner

 * Name: Andy Grover


 * Email: agrover@redhat.com

Current status

 * Targeted release: Fedora 17
 * Last updated: Mar 8 2012
 * Percentage of completion: 100%

Detailed Description
Fedora currently supports being an iSCSI target via tgtd, packaged as scsi-target-utils. This is a userspace daemon. Fedora currently does not support FCoE (Fibre Channel over Ethernet) target mode at all.

The kernel now includes support for iSCSI and FCoE (and other) scsi targets with a generic target subsystem called LIO. Since that is already in place, the remaining work involves "targetcli", the utility for configuring, saving, and restoring the LIO settings across reboot.

Benefit to Fedora
This will make it easier to configure all current (and future) SCSI target protocols in a unified manner, will enable FCoE target mode, and allow users to start experimenting with LIO iSCSI support, and evaluating it against tgtd. Performance should be superior, especially once RDMA-based protocols like iSER and SRP are enabled.

Scope

 * Package targetcli and dependencies (python-rtslib and python-configshell) (DONE)
 * Kernel changes needed: build-in configfs to kernel (DONE)
 * (optional) utility to convert tgtd config to targetcli config

How To Test
Protocols such as iSCSI require no special hardware, so these can be tested relatively easily, even in a VM. Other protocols such as FCoE require bare-metal HW, and some NICs may have additional hardware offloads that it would be great to test, as well.

Specifically for iSCSI target support, we can compare features and reliability to tgtd, and do performance comparisons.

Based on testing, we may want to flag some protocol support as stable, while others are still experimental.

User Experience
targetcli is a much more usable tool for configuring this stuff than tgtd's targets.conf. targetcli lets the admin interactively define backstores, targets, LUNs, and ACLs, and then the current config is saved to a machine and human-readable format (json). tgtd uses the traditional Unix "well-commented .conf" style.

In addition, targetcli is actually a front-end to rtslib, which provides a Python API for target config, so users can programatically interact with the kernel target config, if desired.

Dependencies
See Scope. Dependencies on kernel and upstream targetcli, but it's pretty much already in-place.

Contingency Plan
Stick with tgtd for iSCSI target support.

Documentation
targetcli includes built-in help on configuration commands, and the targetcli manpage walks through the steps to define iSCSI and FCoE targets.

Release Notes
Support for the Linux generic kernel target, LIO, is now available. It provides enhanced performance for exporting SCSI block devices via iSCSI, as well as adding support for Fibre Channel over Ethernet (FCoE), and other fabrics, in target mode. The utility for configuring this kernel feature is 'targetcli'.

Comments and Discussion

 * See Talk:Features/KernelTarget