LIO(SCSI 타깃)

LIO (SCSI target)
LIO 타깃
LIO Target - targetcli screenshot.png
LIO Linux SCSI 타깃
원저작자니콜라스 벨린저
제롬 마틴
개발자주식회사 데이테라
초기 릴리즈2011년 1월 14일(2011-01-14)
저장소github.com/open-iscsi
기입처C, Python
운영 체제리눅스
이용가능기간:C, Python
유형블록 스토리지
면허증.GNU 일반 공중 라이선스
웹 사이트linux-iscsi.org

컴퓨팅에서 LIO(Linux-IO) 타깃은 Linux [1][better source needed]커널에 포함된 표준 SCSI 타깃의 오픈 소스 구현입니다.내부적으로 LIO는 세션을 시작하지 않고 하나 이상의 LUN(논리 유닛 번호)을 제공하고 SCSI 이니시에이터에서 SCSI 명령을 대기하며 필요한 입력/출력 데이터 전송을 수행합니다.LIO는 FCoE, 파이버 채널, IEEE 1394, iSCSI, iSCSI Extensions for RDMA(iSER), SCSI RDMA Protocol(SRP), USB 등의 공통 스토리지 패브릭을 지원합니다.대부분의 Linux 디스트리뷰션에 포함되어 있습니다.QEMU/KVM, libvirtOpenStack에서 LIO를 기본적으로 지원하므로 LIO는 클라우드 [2][3]구현을 위한 스토리지 옵션이기도 합니다.

LIO는 Silicon Valley의 스토리지 시스템 및 소프트웨어 벤더인 Datera, Inc.에 의해 관리되고 있습니다.2011년 1월 15일 LIO SCSI 타깃엔진은 2011년 3월 14일 출시된 커널 버전 2.6.[4][5]38에서 Linux 커널 메인라인으로 통합되었습니다.추가 패브릭 모듈이 후속 Linux 릴리스로 통합되었습니다.

Linux용 경쟁 범용 SCSI 타깃모듈은 [6]SCST입니다.Linux iSCSI 타깃을 제공하기 위해 오래된 IET(iSCSI Enterprise Target) 및 STGT(SCSI 타깃 프레임워크) 모듈도 업계의 지원을 [7][8]받고 있습니다.

배경

SCSI 표준은 컴퓨터 데이터 스토리지 장치에 확장 가능한 의미 추상화를 제공하므로 데이터 스토리지 시스템의 "언어"가 되었습니다.SCSI T10[9] 표준은 SCSI 명령 프로세서의 명령어[10] 프로토콜(SCSI CDB로 전송) 및 다양한 구현을 위한 전기 및 광학 인터페이스를 정의합니다.

SCSI 이니시에이터는 SCSI 세션을 시작하는 끝점입니다.SCSI 대상은 이니시에이터 명령을 기다리고 필요한 I/O 데이터 전송을 실행하는 끝점입니다.SCSI 대상은 일반적으로 이니시에이터가 작동할 수 있도록 하나 이상의 LUN을 내보냅니다.

LIO Linux SCSI 대상은 일반적인 모든 스토리지 패브릭 및 프로토콜에서 대부분의 데이터 스토리지 디바이스 유형에 대한 원격 액세스를 제공하는 범용 SCSI 대상을 구현합니다.LIO는 데이터에 직접 액세스하거나 애플리케이션과 직접 통신하지 않습니다.LIO는 수많은 데이터 스토리지 디바이스 유형의 의미에 대해 패브릭에 의존하지 않고 패브릭 투과적인 추상화를 매우 효율적으로 제공합니다.

아키텍처

LIO 아키텍처

LIO는 범용성과 효율성이 뛰어난 병렬 SCSI 명령어 처리 엔진을 중심으로 모듈러형 확장형 아키텍처를 구현합니다.SCSI 대상 엔진은 SCSI 대상의 [11]의미론을 구현합니다.

LIO SCSI 타깃엔진은 특정 패브릭모듈 또는 백스토어 타입에 의존하지 않습니다.따라서 LIO는 임의의 수의 패브릭과 백스토어를 동시에 조합할 수 있습니다.LIO SCSI 타깃 엔진은 SCSI-3/SCSI-4 영구 예약(PR), SCSI-4 ALUA(Asymmetric Logical Unit Assignment), VMware vSphere APIs Array for Integration [13]TAI(통합용 TAI) 등 하이엔드 기능을 지원하는 포괄적인 SPC-3/SPC-4 기능 세트를 구현합니다.

LIO는 configfs[14] 기반 커널 API를 통해 구성할 수 있으며 명령줄 인터페이스 및 API(targetcli)를 통해 관리할 수 있습니다.

SCSI 타깃

SCSI 타깃의 개념은 SCSI 버스상의 물리 디바이스에 한정되지 않고 논리 SCSI 패브릭 상의 모든 리시버에 범용 모델을 제공합니다.여기에는 물리적 SCSI 버스가 전혀 없는 상호 연결 간의 SCSI 세션이 포함됩니다.개념적으로 이 시나리오에서는 SCSI 대상이 범용 블록 스토리지 서비스 또는 서버를 제공합니다.

백스토어

백스토어는 SCSI 타깃에 대응하는 디바이스 드라이버를 통해 데이터 스토리지 디바이스에 대한 일반적인 접근을 제공합니다.백스토어는 물리 SCSI 디바이스일 필요는 없습니다.

가장 중요한 백스토어 미디어 유형은 다음과 같습니다.

  • 블록: 블록 드라이버를 사용하면 LIO를 통해 내보내기 위한 백스토어로 원시 Linux 블록 디바이스를 사용할 수 있습니다.여기에는 HDD, SSD, CD/DVD, RAM 디스크 등과 같은 물리적 디바이스와 소프트웨어 또는 하드웨어 RAID 볼륨 또는 LVM 볼륨과 같은 논리적 디바이스가 포함됩니다.
  • 파일: 파일 드라이버를 사용하면 Linux 파일 시스템 또는 클러스터 파일 시스템에 있는 파일을 LIO를 통해 내보내기 위한 백스토어로 사용할 수 있습니다.
  • Raw: Raw 드라이버는 구조화되지 않은 메모리를 LIO를 통해 내보내기 위한 백스토어로 사용할 수 있습니다.

그 결과, LIO는 블록 스토리지를 내보내기 위한 일반화된 모델을 제공합니다.

패브릭 모듈

패브릭 모듈은 지원되는 다양한 인터커넥트의 속성을 캡슐화하고 추상화함으로써 SCSI 타깃의 프런트엔드를 구현합니다.다음 패브릭 모듈을 사용할 수 있습니다.

FCoE

스토리지 및 로컬 영역 네트워크 통합

Fibre Channel over Ethernet(FCoE; 파이버채널 오버 이더넷) 패브릭모듈을 사용하면 무손실 이더넷네트워크 간에 Fibre Channel Protocol(FCP) 트래픽을 전송할 수 있습니다.다수의 네트워크 및 스토리지 벤더가 지원하는 이 사양은 기술 위원회 T11 FC-BB-5 [15]표준에 포함되어 있습니다.

LIO는 모든 표준 이더넷 NIC를 지원합니다.

FCoE 패브릭모듈은 시스코와 인텔에 의해 제공되어 [16]2011년7월 21일에 Linux 3.0과 함께 출시되었습니다.

파이버 채널

파이버 채널은 주로 스토리지 네트워킹에 사용되는 고속 네트워크 기술입니다.이는 국제정보기술표준위원회(INCITS)의 기술위원회[17] T11에서 표준화되어 있습니다.

QLogic 파이버채널 패브릭모듈은 다음 HBA에서4 기가비트 및 8 기가비트속도를 지원합니다.

  • QLogic 2400 시리즈(QLx246x), 4GFC
  • QLogic 2500 시리즈(QLE256x), 8GFC(완전 Qual'd)

파이버 채널패브릭[18] 모듈과 Low-Level Driver(LLD; 로우 레벨[19] 드라이버)는 2012년 [20]7월 21일에 Linux 3.5와 함께 출시되었습니다.

Linux 3.9에서는 다음 QLogic HBA 및 CNA도 지원됩니다.

  • QLogic 2600 시리즈(QLE266x), 16GFC, SR-IOV
  • QLogic 8300 시리즈(QLE834x), 16GFS/10GbE, PCIe Gen3 SR-IOV
  • QLogic 8100 시리즈(QLE81xx), 8GFC/10GbE, PCIe Gen2

이로써 LIO는 16기가비트파이버 채널을 지원하는 최초의 오픈소스 타깃이 됩니다

IEEE 1394

Mac OS X용 LIO Firewire 타깃

FireWire SBP-2 패브릭 모듈을 사용하면 Linux는 IEEE 1394를 통해 로컬 스토리지 디바이스를 내보낼 수 있으므로 다른 시스템에서 일반적인 IEEE 1394 스토리지 디바이스로 마운트할 수 있습니다.

IEEE 1394는 고속 통신 및 등시적 실시간 데이터 전송을 위한 시리얼 버스 인터페이스 규격입니다.1980년대 후반과 1990년대 초반 애플이 '파이어와이어'로 개발했으며 1999년부터 [21]매킨토시 컴퓨터는 '파이어와이어 타깃 디스크 모드'를 지원했다.

FireWire SBP-2 패브릭 모듈은 2012년 [20][22]7월 21일 Linux 3.5와 함께 출시되었습니다.

iSCSI

iSCSI(Internet Small Computer System Interface) 패브릭모듈을 사용하면 표준 IP 네트워크 간에 SCSI 트래픽을 전송할 수 있습니다.

iSCSI는 IP 네트워크를 통해 SCSI 세션을 전송함으로써 인트라넷을 통한 데이터 전송 및 장거리 스토리지 관리에 사용됩니다.iSCSI는 LAN, WAN 또는 인터넷을 통한 데이터 전송에 사용할 수 있습니다.또한 로케이션에 의존하지 않고 로케이션 투과적인 데이터 저장 및 취득이 가능합니다.

또한 LIO iSCSI 패브릭 모듈은 Multiple Connections per Session(MC/S) 및 ERL=0,1,2(Error Recovery Levels 0-2)와 같이 성능과 복원력을 향상시키는 여러 고급 iSCSI 기능을 구현합니다.

LIO는 모든 표준 이더넷 NIC를 지원합니다.

iSCSI 패브릭모듈은 2011년 [23]10월 24일에 Linux 3.1과 함께 출시되었습니다.

iSER

네트워크 원격 기억 장치 직접 접근(RDMA)을 지지하는 iSCSI교통 운반할 수 있게요 iSER(직접 데이터 배치 또는 DDP)RDMA.[24]RDMA을 사용하여 InfiniB에서 지원된다로 데이터 직접 원격 SCSI컴퓨터 메모리 버퍼 및 밖으로 나와 중간 데이터 복사본 없이 타사에 전송되는 것을 허락하 RDMA(iSER)패브릭 모듈을 위한 iSCSI확장 사용할 수 있다.그리고.네트워크, RDMA over Converged Ethernet(RoCE; 컨버지드 이더넷) 경유 데이터센터 브리징(DCB) 네트워크, iWARP 확장 TCP 오프로드 엔진 컨트롤러를 사용하는 표준 이더넷 네트워크.

iSER 패브릭 모듈은 Datera와 Mellanox Technologies가 함께 개발했으며 2013년 [25]6월 30일 Linux 3.10과 함께 처음 출시되었습니다.

SRP

SCSI RDMA Protocol(SRP) 패브릭 모듈을 사용하면 RDMA(위 참조) 네트워크를 통해 SCSI 트래픽을 전송할 수 있습니다.2013년 현재 SRP는 iSCSI가 완전히 라우팅 가능한 반면 SCSI는 피어 투 피어 프로토콜에 불과하기 때문에 제한적이긴 하지만 iSER보다 더 널리 사용되고 있습니다.SRP 패브릭모듈은 다음 Mellanox Host Channel Adapter(HCA; 호스트채널 어댑터)를 지원합니다.

  • Mellanox Connect X-2 VPI PCIe Gen2 HCA (x8 레인), 싱글/듀얼 포트 QDR 40 기가비트/초
  • Mellanox ConnectX-3 VPI PCIe Gen3 HCA (x8 레인), 싱글/듀얼 포트 FDR 56 Gbit/s
  • Mellanox Connect X-IB PCIe Gen3 HCA(x16 레인), 싱글/듀얼 포트 FDR 56 Gbit/s

SRP 패브릭모듈은 2012년 [26]3월 18일에 Linux 3.3과 함께 출시되었습니다.

2012년 C't Magazine에서는 Fusion-IO IODrive PCI Express 3.0 메모리 카드를 4장 탑재한 Sandy Bridge PCI Express 3.0 시스템에서 56Gb/s FDR 모드의 Mellanox ConnectX-3 포트 1개를 통해 LIO SRP Target으로 약 5000MB/s의 throughput을 측정했습니다.

유에스비

USB 가젯 패브릭 모듈을 통해 Linux는 USB(Universal Serial Bus)를 통해 로컬 스토리지 장치를 내보낼 수 있으므로 다른 시스템에서 일반 스토리지 장치로 마운트할 수 있습니다.

USB는 1990년대 중반에 컴퓨터 주변기기의 연결을 표준화하도록 설계되었으며 데이터 스토리지 장치에도 보편화되었습니다.

USB 가젯 패브릭 모듈은 2012년 [27]7월 21일 Linux 3.5와 함께 출시되었습니다.

targetcli

targetcli[28]LIO용 사용자 공간 단일 노드 관리 명령줄 인터페이스(CLI)입니다.모든 패브릭 모듈을 지원하며 확장 가능한 모듈형 아키텍처를 기반으로 추가 패브릭 모듈 또는 기능을 위한 플러그인 모듈을 갖추고 있습니다.

targetcli는 잘 정의된 API를 통해 기본 일반 대상 라이브러리를 사용하는 CLI를 제공합니다.따라서 CLI는 GUI 등의 다른 은유와 함께 UI로 쉽게 대체하거나 보완할 수 있습니다.

targetcli는 Python에서 구현되며 다음 3개의 주요 모듈로 구성됩니다.

  • 기본 rtslib 및 API.[29]
  • configshell: 대응하는 'spec' 파일에 패브릭 고유의 속성을 캡슐화합니다.
  • targetcli 쉘 자체입니다.

LIO 대상 설정 방법에 대한 자세한 내용은 LIO [28]Wiki를 참조하십시오.

Linux 디스트리뷰션

targetcli 및 LIO는 대부분의 Linux 디스트리뷰션에 기본값별로 포함되어 있습니다.다음은 가장 인기 있는 제품의 개요와 최초 포함 날짜입니다.

분배 버전[a] 풀어주다 기록 보관소 인스톨 소스 git 문서
알파인 리눅스 2.5 2011-11-07 Alpine Linux 미러 apk add targetcli-fb targetcli-fb.syslog 사용법
CentOS 6.2 2011-12-20 CentOS 미러 su -c 'yum install fcoe-target-utils' targetcli-fb.syslog 테크니컬 노트
데비안 7.0 ('휘청') 2013-05-04 데비안 수영장 su -c 'apt-get install targetcli' targetcli.module LIO Wiki
페도라 16 2011-11-08 페도라 라후이드 su -c 'yum install targetcli' targetcli-fb.syslog 대상 Wiki
오픈서스 12.1 2011-11-08 Datera targetcli.git 저장소에서 수동으로 설치해야 합니다.
RHEL[b] 6.2 2011-11-16 페도라 라후이드 su -c 'yum install fcoe-target-utils' targetcli-fb.syslog 테크니컬 노트
사이언티픽 리눅스 6.2 2012-02-16 SL 미러 su -c 'yum install fcoe-target-utils' targetcli-fb.syslog 테크니컬 노트
슬레스 11 SP3 MR 2013-12 - su -c 'zypper in targetcli' targetcli.module LIO Wiki
우분투 12.04 LTS (정밀) 2012-04-26 우분투 우주 sudo apt-get install targetcli targetcli.module LIO Wiki

「 」를 참조해 주세요.

메모들

  1. ^ LIO가 처음 포함된 배포 릴리스.
  2. ^ RHEL 6에는 LIO가 포함되었지만 FCoE 타깃에서만 기본이고 iSCSI에서는 STGT가 사용되었습니다.RHEL 7 베타에서는 FCoE, iSCSI 및 Mellanox InfiniBand iSER/SRP의 [30]경우 LIO가 기본입니다.

레퍼런스

  1. ^ Target. 323328-001. linux-iscsi.org. 2012-10-23. Retrieved 2012-12-25.
  2. ^ Eric Harney (2012-12-17). "Support LIO as an iSCSI backend". launchpad.net. Retrieved 2013-01-14.
  3. ^ IBM, Red Hat (February 2013). "KVM Virtualized I/O Performance" (PDF).
  4. ^ Linus Torvalds (2011-01-14). "Trivial merge". Kernel.org. Retrieved 2019-09-28.
  5. ^ Thorsten Leemhuis (2011-03-02). "Kernel Log: Coming in 2.6.38 (Part 4) - Storage". Heise Online.
  6. ^ "A tale of two SCSI targets". Lwn.net. Retrieved 2014-01-20.
  7. ^ Haas, Florian (May 2012). "Replicate Everything! Highly Available iSCSI Storage with DRBD and Pacemaker". Linux Journal. Archived from the original on 2014-01-20. Retrieved 2019-09-28.
  8. ^ Bolkhovitin, Vladislav (2018-04-11). "SCST vs STGT". Generic SCSI Target Subsystem for Linux. Retrieved 2019-04-01.
  9. ^ Technical Committee T10. "SCSI Storage Interfaces". t10.org. Retrieved 2012-12-24.
  10. ^ SCSI Commands Reference Manual (PDF). 100293068, Rev. C. Scotts Valley: Seagate Technology. April 2010. Retrieved 2012-12-25.
  11. ^ Bellinger, Nicholas (2009). Current Status and Future of iSCSI on the Linux platform (PDF). Linux Plumbers Conference.
  12. ^ Ralph Weber (2011-01-17). "SCSI Primary Commands - 4 (SPC-4)". t10.org. Retrieved 2011-03-07.
  13. ^ LIO Linux SCSI Target (2012-12-23). "VAAI". linux-iscsi.org. Retrieved 2012-12-25.
  14. ^ Jonathan Corbet (2005-08-24). "Configfs - an introduction". lwn.net. Retrieved 2011-03-07.
  15. ^ "Fibre Channel: Backbone - 5 revision 2.00" (PDF). American National Standard for Information Technology International Committee for Information Technology Standards Technical Group T11. June 4, 2009. Retrieved 2011-05-05.
  16. ^ Linus Torvalds (2011-04-18). "[SCSI] tcm_fc: Adding FC_FC4 provider (tcm_fc) for FCoE target (TCM - target core) support". Kernel.org. Retrieved 2019-09-28.
  17. ^ "T11 Home Page". t11.org. Retrieved 2012-12-25.
  18. ^ Linus Torvalds (2012-05-15). "[SCSI] tcm_qla2xxx: Add >= 24xx series fabric module for target-core". Kernel.org. Retrieved 2019-09-28.
  19. ^ Linus Torvalds (2012-05-15). "[SCSI] qla2xxx: Add LLD target-mode infrastructure for >= 24xx series". Kernel.org. Retrieved 2019-09-28.
  20. ^ a b Thorsten Leemhuis (2012-07-03). "Kernel Log: Coming in 3.5 (Part 2) - Filesystems and storage". Heise Online. Retrieved 2013-01-14.
  21. ^ "How to use and troubleshoot FireWire target disk mode". apple.com. Retrieved 2012-12-24.
  22. ^ Linus Torvalds (2012-04-15). "sbp-target: Initial merge of firewire/ieee-1394 target mode support". Kernel.org. Retrieved 2019-09-28.
  23. ^ Linus Torvalds (2011-07-27). "iSCSI merge". Kernel.org. Retrieved 2019-09-28.
  24. ^ RFC 5041
  25. ^ Linus Torvalds (2013-04-30). "Merge branch 'for-next-merge'". Kernel.org. Retrieved 2019-09-28.
  26. ^ Linus Torvalds (2012-01-18). "InfiniBand/SRP merge". Kernel.org. Retrieved 2019-09-28.
  27. ^ "Merge branch 'usb-target-merge'". Kernel.org. Retrieved 2019-09-28.
  28. ^ a b LIO Linux SCSI Target (2012-12-09). "Targetcli". linux-iscsi.org. Retrieved 2012-12-25.
  29. ^ Jerome Martin (2011-08-03). "Package rtslib". daterainc.com. Retrieved 2012-12-25.
  30. ^ "Chapter 6. Storage". Access.redhat.com. Retrieved 2014-01-20.

외부 링크