คอนฟิก iSCSI target บน Linux

บทความนี้กล่าวถึงการติดตั้งโปรแกรม iSCSI target และการคอนฟิกเพื่อให้เครืองอื่นๆ ที่ทำหน้าที่ initiator สามารถมาเรียกใช้ storage ได้

ติดตั้งไฟล์ rpm

ไฟล์ rpm ที่ต้องใช้ เพื่อคอนฟิกเครื่องให้ทำหน้าที่เป็น iSCSI target ได้ คือ “scsi-target-utils”

ตัวอย่างการติดตั้งไฟล์ rpm สำหรับ Fedora 11

[root@fc11-server ~]# rpm -i scsi-target-utils-0.9.5-1.fc11.x86_64.rpm
error: Failed dependencies:
        perl(Config::General) is needed by scsi-target-utils-0.9.5-1.fc11.x86_64

หากเจอ error แบบนี้ ต้องลงไฟล์ rpm ชื่อ perl-Config-General ก่อน

[root@fc11-server ~]# rpm -i perl-Config-General-2.42-2.fc11.noarch.rpm
[root@fc11-server ~]# rpm -i scsi-target-utils-0.9.5-1.fc11.x86_64.rpm

รันเซอร์วิส tgtd

รันเซอร์วิส tgtd (The Generic storage Target Daemon) ก่อน โดยใช้คำสั่ง service

[root@fc11-server ~]# /etc/init.d/tgtd start
Starting SCSI target daemon:                               [  OK  ]

สร้าง target ใหม่

ใช้คำสั่ง tgtadm เพื่อสร้าง target ใหม่ โดยพารามิเตอร์ที่ต้องระบุคือ target id (–tid) และชื่อ target (-T)

เราสามารถสร้างได้หลาย target ในเซิร์ฟเวอร์เครื่องหนึ่ง แต่ต้องมี id และชื่อแตกต่างกัน สำหรับ  id เราสามารถรันตัวเลขเริ่มจาก 1 ได้ ส่วนชื่อ target ที่นิยมกันจะตั้งชื่อในรูปแบบ iqn (iSCSI Qualified Name)

รูปแบบชื่อแบบ iqn

iqn.yyyy-mm.{reversed domain name}:resource_name

ในบทความนี้ตั้งชื่อเป็น iqn.2001-04.com.example:storage.test.disk-01

ตัวอย่างการสร้าง target ใหม่

[root@fc11-server ~]# tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2001-04.com.example:storage.test.disk-01

หลังจากที่สร้างแล้ว สามารถใช้คำสั่ง tgtadm –op show เพื่อตรวจสอบคอนฟิก target ที่ทำงานอยู่ได้

[root@fc11-server ~]# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2001-04.com.example:storage.test.disk-01
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB
            Online: Yes
            Removable media: No
            Backing store: No backing store
    Account information:
    ACL information:

เพิ่ม logical unit เข้า target

เมื่อสร้าง target แล้ว จะยังไม่สามารถใช้งานได้ทันที ต้องเพิ่ม logical unit ที่จะทำหน้าที่เป็น storage ของ target นี้ก่อน

เราสามารถใช้ disk partition หรือ LVM logical volume เพื่อทำหน้าที่เป็น logical unit ได้ ในที่นี้จะใช้ disk partition /dev/sdb1

คำเตือน!!! ข้อมูลใน disk ที่จะใช้เป็น logical unit จะถูกทำลายทั้งหมด จาก initiator

ตัวอย่างการเพิ่ม logical unit เข้า target

[root@fc11-server ~]# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sdb1

ตรวจสอบหลังจากการเพิ่ม logical unit

[root@fc11-server ~]# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2001-04.com.example:storage.test.disk-01
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB
            Online: Yes
            Removable media: No
            Backing store: No backing store
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 40049 MB
            Online: Yes
            Removable media: No
            Backing store: /dev/sdb1
    Account information:
    ACL information:

คอนฟิก bind target

สุดท้ายต้องระบุการ bind เพื่อเป็นการอนุญาตให้เครื่อง client หรือ initiator สามารถเข้ามาใช้ (access) target ได้

เบื้องต้น เราจะอนุญาตทั้งหมดให้เข้ามาใช้ได้ ด้วยการระบบออปชั่น “-I ALL”

[root@fc11-server ~]# tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL

ตรวจสอบหลังจากคอนฟิก

[root@fc11-server ~]# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2001-04.com.example:storage.test.disk-01
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB
            Online: Yes
            Removable media: No
            Backing store: No backing store
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 40049 MB
            Online: Yes
            Removable media: No
            Backing store: /dev/sdb1
    Account information:
    ACL information:
        ALL

ทดสอบจาก iSCSI initiator

ทดสอบรันคำสั่ง iscsiadm -m discovery จากเครื่องอื่น เพื่อทดสอบการค้นหา target ที่เพิ่งสร้างขึ้น  สมมติว่าเคื่อง server ที่ทำหน้าที่ target มี ip address เป็น 192.168.1.1

[root@fc11-client ~]# iscsiadm -m discovery -t sendtargets -p 192.168.1.1
192.168.1.1:3260,1 iqn.2001-04.com.example:storage.test.disk-01

ข้อมูลอ้างอิง

3 thoughts on “คอนฟิก iSCSI target บน Linux”

  1. ต้องเองไฟล์ไปไว้ที่ไหนค่ะ ถึงจะใช้คำสั่งนี้ได้เลยอ่าคะ
    rpm -i scsi-target-utils-0.9.5-1.fc11.x86_64.rpm

    แล้วถ้าไฟล์ของเรา scsi-target-utils-0.9.5-1.fc11.src.rpm

  2. ไฟล์ .src.rpm เป็นไฟล์ source code ครับ ไม่สามารถใช้งานได้ทันที ต้องนำไป compile ก่อน

Leave a Reply