ค้นหาเว็บไซต์

วิธีการตั้งค่าเซิร์ฟเวอร์ iSCSI (เป้าหมาย) และไคลเอนต์ (ตัวเริ่มต้น) บน Debian 9


ในโลกของศูนย์ข้อมูล เครือข่ายพื้นที่จัดเก็บข้อมูล (SAN) ความจุขนาดใหญ่ได้กลายเป็นมาตรฐานขั้นต่ำ เนื่องจากผู้ให้บริการระบบคลาวด์และการจำลองเสมือนยังคงสร้างผลกระทบอย่างใหญ่หลวงต่อโลกเทคโนโลยี ความต้องการพื้นที่จัดเก็บข้อมูล SAN เพิ่มมากขึ้นจึงเห็นได้ชัดเจน

ฮาร์ดแวร์ SAN ส่วนใหญ่ประกอบด้วยตัวควบคุมแบบเรียบง่าย (หรือชุดตัวควบคุม) และชุดไดรฟ์ความจุสูงจำนวนมาก ทั้งหมดนี้ได้รับการกำหนดค่าเพื่อรองรับความพร้อมใช้งานและความสมบูรณ์ของข้อมูลในปริมาณมาก

ผลิตภัณฑ์เฉพาะทางเหล่านี้จำนวนมากผลิตโดยผู้จำหน่ายชื่อดัง เช่น Netapp, Dell Equalogic, HP Storageworks หรือ EMC และมีป้ายราคาติดอยู่ซึ่งมีเพียงองค์กรที่ใหญ่ที่สุดเท่านั้นที่สามารถซื้อได้

ตามความเป็นจริงแล้ว อุปกรณ์เหล่านี้ไม่มีอะไรมากไปกว่าอาร์เรย์ฮาร์ดดิสก์ขนาดใหญ่ที่มีตัวควบคุมที่ให้พื้นที่ของฮาร์ดดิสก์เหล่านั้นออกไปยังไคลเอนต์ในเครือข่าย ในช่วงหลายปีที่ผ่านมามีเทคโนโลยีมากมายที่ให้ฟังก์ชันการทำงานนี้หรือฟังก์ชันที่คล้ายกันในราคาที่ถูกกว่ามาก

การแจกจ่าย Debian GNU/Linux มอบแพ็คเกจที่ช่วยให้ระบบ Debian สามารถตอบสนองวัตถุประสงค์ของอุปกรณ์จัดเก็บข้อมูล SAN ระดับองค์กรในราคาเพียงเศษเสี้ยวของต้นทุน! ช่วยให้ทุกคนตั้งแต่ผู้ใช้ตามบ้านขั้นพื้นฐานหรือศูนย์ข้อมูลขนาดใหญ่ได้รับประโยชน์จากพื้นที่จัดเก็บข้อมูล SAN โดยไม่ต้องเสียเงินจำนวนมากกับโซลูชันที่เป็นกรรมสิทธิ์ของผู้จำหน่าย

บทความนี้จะดูว่าระบบ Debian 9 (Stretch) สามารถตั้งค่าเพื่อรองรับพื้นที่ดิสก์ได้อย่างไรโดยใช้ระบบที่เรียกว่า Internet Small Computer Systems Interface หรือเรียกสั้นๆ ว่า iSCSI iSCSI เป็นมาตรฐานที่ใช้ Internet Protocol (IP) สำหรับการจัดเตรียมพื้นที่เก็บข้อมูลแบบบล็อก (ฮาร์ดไดรฟ์) ให้กับระบบอื่น iSCSI ทำงานในรูปแบบเซิร์ฟเวอร์ไคลเอนต์ แต่ใช้ชื่อที่แตกต่างกันเพื่อแยกไคลเอนต์ออกจากเซิร์ฟเวอร์

ในคำศัพท์เฉพาะของ iSCSI เซิร์ฟเวอร์ที่ให้บริการ 'พื้นที่ดิสก์' เรียกว่า iSCSI 'เป้าหมาย' และระบบที่กำลังร้องขอ /การใช้พื้นที่ดิสก์เรียกว่า iSCSI 'Initiator' กล่าวอีกนัยหนึ่ง 'ผู้ริเริ่ม' ร้องขอบล็อกพื้นที่เก็บข้อมูลจาก 'เป้าหมาย'

การตั้งค่าสภาพแวดล้อม

คู่มือนี้จะอธิบายการตั้งค่าพื้นฐานที่เกี่ยวข้องกับเซิร์ฟเวอร์ iSCSI แบบธรรมดา (เป้าหมาย) และ ไคลเอนต์ (ตัวเริ่มต้น) ทั้งสองอย่าง กำลังใช้งาน Debian 9 (ยืด)


Debian iSCSI Target: 192.168.56.101/24
Storage: Contains two extra hard drives to be used as the storage in the iSCSI setup
Debian iSCSI Initiator: 192.168.56.102/24

สามารถดูเครือข่ายได้ดังนี้:

การกำหนดค่าเป้าหมาย Debian iSCSI

ในโลกของ iSCSI เป้าหมาย ถือเป็นโฮสต์ที่มีอุปกรณ์จัดเก็บข้อมูลที่ ตัวเริ่มต้น ใช้

ในบทความนี้ เซิร์ฟเวอร์ที่มี IP 192.168.56.101 ถูกใช้เป็นเป้าหมาย การกำหนดค่าทั้งหมดจะดำเนินการบนโฮสต์นั้นสำหรับส่วนนี้

ขั้นตอนแรกคือการติดตั้งแพ็คเกจที่จำเป็นเพื่อให้ระบบ Debian สามารถให้บริการ เป้าหมาย iSCSI แพคเกจซอฟต์แวร์นี้เรียกว่า Target Framework (TGT)

รายการอื่นๆ ที่ใช้สำหรับคู่มือนี้คือเครื่องมือ Logical Volume Management (LVM) เป็น Logical Volumes (LVs)) จะถูกใช้เป็นการสำรองข้อมูลสำหรับเป้าหมาย iSCSI

ทั้งสองแพ็คเกจสามารถติดตั้งได้ด้วยคำสั่งต่อไปนี้


apt-get update
apt-get install tgt lvm2

เมื่อติดตั้งแพ็คเกจแล้ว LVM จะถูกนำมาใช้เพื่อเตรียมฮาร์ดดิสก์บน เป้าหมาย เพื่อใช้เป็น iSCSI LUN คำสั่งแรกใช้เพื่อเตรียมดิสก์สำหรับรวมไว้ในการตั้งค่า LVM อย่าลืมแก้ไขคำสั่งตามความจำเป็นสำหรับสถานการณ์ที่แตกต่างกัน!


lsblk (Only used to confirm disks to be used in the LVM setup)
pvcreate /dev/sd{b,c}

เมื่อดิสก์ได้รับการจัดเตรียมด้วยคำสั่ง 'pvcreate' ข้างต้น ก็ถึงเวลาสร้าง กลุ่มวอลุ่ม จากดิสก์เฉพาะเหล่านี้ จำเป็นต้องมีกลุ่มวอลุ่มเพื่อสร้างโลจิคัลวอลุ่มที่จะทำหน้าที่เป็นที่เก็บข้อมูล iSCSI ในภายหลัง

หากต้องการสร้างกลุ่มวอลุ่ม จำเป็นต้องใช้คำสั่ง 'vgcreate'


vgcreate tecmint_iscsi /dev/sd{b,c}
vgs  (Only needed to confirm the creation of the volume group)

โปรดสังเกตในเอาต์พุตด้านบนว่าระบบตอบกลับว่ามีการสร้าง กลุ่มวอลุ่ม แต่ควรตรวจสอบอีกครั้งตามที่เห็นด้านบนด้วยคำสั่ง 'vgs' ความจุของกลุ่มวอลุ่มนี้มีเพียง 9.99GB แม้ว่านี่จะเป็นกลุ่มวอลุ่มที่เล็กเป็นพิเศษ แต่กระบวนการจะเหมือนกันสำหรับดิสก์ที่มีความจุมากกว่า!

ขั้นตอนต่อไปคือการสร้างโลจิคัลวอลุ่มที่จะทำหน้าที่เป็นดิสก์ไปยังไคลเอ็นต์ iSCSI (ตัวเริ่มต้น) สำหรับตัวอย่างนี้ กลุ่มวอลุ่มทั้งหมดจะถูกนำมาใช้แต่ไม่จำเป็น

โลจิคัลวอลุ่มจะถูกสร้างขึ้นโดยใช้คำสั่ง 'lvcreate'


lvcreate -l 100%FREE tecmint_lun1 tecmint_iscsi
lvs  (Simply used to confirm the creation of the logical volume)

คำสั่ง 'lvcreate' ข้างต้นอาจทำให้สับสนเล็กน้อยเมื่อมองแวบแรก แต่การแยกย่อยเป็นดังนี้:

  • lvcreate – คำสั่งที่ใช้ในการสร้างโลจิคัลวอลุ่ม
  • -l ฟรี 100% – สร้างโลจิคัลวอลุ่มโดยใช้พื้นที่ว่างทั้งหมดของกลุ่มวอลุ่ม
  • -n tecmint_lun1 – ชื่อของโลจิคัลวอลุ่มที่จะสร้าง
  • tecmint_iscsi – ชื่อของกลุ่มวอลุ่มที่จะสร้างโลจิคัลวอลุ่มภายใน

เมื่อสร้าง โลจิคัลวอลุ่ม แล้ว ก็ถึงเวลาสร้าง LUN จริง (หมายเลขหน่วยลอจิคัล) LUN จะเป็นอุปกรณ์จัดเก็บข้อมูลที่ ตัวเริ่มต้น จะเชื่อมต่อและใช้ในภายหลัง

การสร้าง LUN นั้นง่ายมาก และใช้เวลาเพียงไม่กี่ขั้นตอน ขั้นตอนแรกคือการสร้างไฟล์การกำหนดค่า ไฟล์นี้จะอยู่ในไดเรกทอรี '/etc/tgt/conf.d' และสำหรับบทความนี้จะเรียกว่า 'TecMint_iscsi.conf'

หากต้องการสร้างไฟล์นี้ให้ใช้โปรแกรมแก้ไขข้อความ


nano /etc/tgt/conf.d/TecMint_iscsi.conf

ภายในไฟล์นี้ ข้อมูลการกำหนดค่าที่จำเป็นทั้งหมดสำหรับ LUN นี้จะได้รับการกำหนดค่า มีตัวเลือกมากมายที่สามารถวางไว้ในไฟล์นี้ได้ แต่สำหรับตอนนี้ LUN พื้นฐานที่มี Challenge Handshake Authentication Protocol (CHAP) ร่วมกันจะ ได้รับการกำหนดค่า

คำจำกัดความของ LUN จะมีอยู่ระหว่างคำสั่ง 'เป้าหมาย' สองรายการ หากต้องการพารามิเตอร์เพิ่มเติมที่สามารถอยู่ในคำสั่ง target ให้ตรวจสอบหน้าคู่มือสำหรับไฟล์ 'targets.conf' โดยการออก 'man 5 targets.conf'


<target iqn.2018-02.linux-console.net:lun1>
     # Provided device as an iSCSI target
     backing-store /dev/mapper/tecmint_iscsi-tecmint_lun1
     initiator-address 192.168.56.102
    incominguser tecmint-iscsi-user password
     outgoinguser debian-iscsi-target secretpass
</target>

มีเรื่องมากมายเกิดขึ้นข้างต้น คำอธิบายสั้นๆ อาจเป็นประโยชน์กับคนส่วนใหญ่

  • บรรทัด แรก เริ่มต้นการกำหนดค่า iSCSI LUN เฉพาะ ในกรณีนี้ LUN มีป้ายกำกับว่า 'iqn.2018-02.linux-console.net:lun1' ส่วน 'iqn' ระบุว่าจะเป็นชื่อที่ผ่านการรับรองของ iSCSI '2018-02' คือชุดวันที่ที่เลือกโดยพลการ 'linux-console.net' คือโดเมนที่ LUN นี้เป็นเจ้าของ สุดท้าย 'lun1' ถูกใช้เป็นชื่อของเป้าหมายเฉพาะนี้
  • บรรทัด ที่สอง ด้านบนแสดงความคิดเห็น ความคิดเห็นอาจมีอยู่ในไฟล์การกำหนดค่าเป้าหมาย และต้องนำหน้าด้วยสัญลักษณ์ '#'
  • บรรทัด ที่สาม คือตำแหน่งพื้นที่เก็บข้อมูลจริงที่ตัวเริ่มต้นจะใช้ ในกรณีนี้ การสำรองข้อมูลหน่วยเก็บข้อมูลจะเป็นโลจิคัลวอลุ่มที่สร้างขึ้นก่อนหน้านี้ในคำแนะนำ
  • บรรทัด ที่สี่ คือที่อยู่ IP ที่คาดหวังจากตัวเริ่มต้น แม้ว่านี่จะไม่ใช่รายการการกำหนดค่าที่จำเป็น แต่ก็สามารถช่วยเพิ่มความปลอดภัยได้
  • บรรทัด ที่ห้า คือชื่อผู้ใช้/รหัสผ่านที่เข้ามา เช่นเดียวกับที่อยู่ของตัวเริ่มต้นข้างต้น พารามิเตอร์นี้ไม่จำเป็นเช่นกัน แต่สามารถช่วยรักษาความปลอดภัย LUN ได้ เนื่องจากคู่มือนี้ครอบคลุมถึง CHAP ร่วมกันของ iSCSI ด้วย พารามิเตอร์นี้จึงจำเป็นต้องมี บรรทัดนี้ระบุชื่อผู้ใช้และรหัสผ่านที่เป้าหมายคาดหวังจากตัวเริ่มต้นเพื่อเชื่อมต่อกับ LUN นี้
  • บรรทัด ที่หก คือชื่อผู้ใช้/รหัสผ่านที่เป้าหมายจะมอบให้กับผู้ริเริ่มเพื่ออนุญาตให้มีการตรวจสอบสิทธิ์ CHAP ร่วมกัน โดยปกติไม่จำเป็นต้องใช้พารามิเตอร์นี้ แต่บทความนี้ครอบคลุมถึงการตรวจสอบสิทธิ์ CHAP ร่วมกัน ดังนั้นพารามิเตอร์นี้จึงจำเป็น
  • บรรทัดสุดท้ายคือคำสั่งปิดสำหรับคำจำกัดความเป้าหมาย ให้ความสนใจกับเครื่องหมายทับปิดด้านหน้าเป้าหมายคำหลัก!

เมื่อพิมพ์การกำหนดค่าที่เหมาะสมสำหรับ LUN แล้ว ให้บันทึกการเปลี่ยนแปลงและออกจากโปรแกรมแก้ไขข้อความ หากใช้ nano ให้กด ctrl+o เพื่อบันทึก จากนั้นกด ctrl+x เพื่อออกจาก nano

เมื่อสร้างไฟล์การกำหนดค่าแล้ว ควรเริ่มบริการ tgt ใหม่เพื่อให้ tgt ทราบถึงเป้าหมายใหม่และการกำหนดค่าที่เกี่ยวข้อง

ซึ่งสามารถทำได้ด้วยคำสั่งใดคำสั่งหนึ่งต่อไปนี้ และขึ้นอยู่กับระบบ init ที่ใช้งานอยู่


service tgt restart  (For sysv init systems)
systemctl restart tgt  (For systemd init systems)

เมื่อรีสตาร์ท tgt แล้ว สิ่งสำคัญคือต้องตรวจสอบเพื่อให้แน่ใจว่า เป้าหมาย iSCSI พร้อมใช้งานตามไฟล์การกำหนดค่าที่สร้างขึ้น

ซึ่งสามารถทำได้โดยใช้คำสั่ง 'tgtadm'


tgtadm --mode target --op show   (This will show all targets)

นี่เป็นการสรุปการกำหนดค่าของเป้าหมาย ส่วนถัดไปจะทำงานผ่านการกำหนดค่าของ ตัวเริ่มต้น

การกำหนดค่าตัวเริ่มต้น Debian iSCSI

ขั้นตอนต่อไปในการใช้ เป้าหมาย iSCSI ที่กำหนดค่าไว้ก่อนหน้านี้คือการกำหนดค่าของ iSCSI Initiator

ระบบ Debian 9 อื่นจะถูกใช้เป็น ตัวเริ่มต้น ในบทความนี้ แต่ระบบใดๆ ที่สามารถใช้โปรโตคอล iSCSI จะสามารถเชื่อมต่อกับเป้าหมายที่กำหนดค่าไว้ก่อนหน้านี้ได้ ซึ่งอาจรวมถึงไฮเปอร์ไวเซอร์เช่น XenServer/ESXi หรือการกระจายอื่นๆ เช่น Red Hat, Debian หรือ Ubuntu

ขั้นตอนแรกในกระบวนการนี้สำหรับ ตัวเริ่มต้น Debian นี้คือการติดตั้งแพ็คเกจที่เหมาะสมสำหรับ iSCSI


apt-get update
apt-get install open-iscsi

เมื่อ apt กำหนดค่าแพ็คเกจ open-iscsi เสร็จแล้ว การกำหนดค่า iSCSI Initiator ก็สามารถเริ่มต้นได้ ขั้นตอนแรกคือการสื่อสารกับ เป้าหมาย เพื่อรับข้อมูลการกำหนดค่าเริ่มต้นสำหรับเป้าหมายที่เตรียมไว้


iscsiadm -m discovery -t st -p 192.168.56.101

เมื่อคำสั่งนี้ทำงาน คำสั่งจะตอบกลับด้วยชื่อของ lun ที่กำหนดค่าไว้ก่อนหน้านี้สำหรับโฮสต์นี้โดยเฉพาะ คำสั่งดังกล่าวจะสร้างไฟล์สองไฟล์สำหรับข้อมูล LUN ที่เพิ่งค้นพบ

ตอนนี้ไฟล์ที่สร้างขึ้นสำหรับโหนดนี้จะต้องมีการกำหนดค่าข้อมูล CHAP เพื่อให้ เป้าหมาย iSCSI นี้สามารถเข้าถึงได้โดย ตัวเริ่มต้น

ในทางเทคนิคแล้ว ข้อมูลนี้สามารถตั้งค่าได้สำหรับทั้งระบบโดยรวม แต่ในกรณีที่โฮสต์เชื่อมต่อกับ LUN ที่แตกต่างกันด้วยข้อมูลประจำตัวที่แตกต่างกัน การวางข้อมูลประจำตัวเหล่านั้นในไฟล์การกำหนดค่าโหนดเฉพาะสามารถบรรเทาปัญหาใดๆ ได้

ไฟล์การกำหนดค่าโหนดจะมีอยู่ในไดเร็กทอรี '/etc/iscsi/nodes/' และจะมีไดเร็กทอรีต่อ LUN ที่พร้อมใช้งาน ในกรณีของบทความนี้ (โปรดทราบว่าเส้นทางจะเปลี่ยนหากชื่อ/ที่อยู่ IP มีการเปลี่ยนแปลง)


/etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

ในการทำงานกับไฟล์นี้ คุณสามารถใช้โปรแกรมแก้ไขข้อความใดก็ได้


nano /etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

ภายในไฟล์นี้จะมีตัวเลือกที่กำหนดค่าไว้แล้วหลายตัวเลือกสำหรับ เป้าหมาย ที่เกี่ยวข้อง ซึ่งถูกกำหนดระหว่างคำสั่ง 'iscsiadm' ที่รันก่อนหน้านี้

เนื่องจากการตั้งค่า เป้าหมาย/ตัวเริ่มต้น ของ Debian นี้ใช้ CHAP ร่วมกัน จึงจำเป็นต้องเปลี่ยนและเพิ่มตัวเลือกบางอย่างลงในไฟล์นี้ จากนั้นจึงลงชื่อเข้าใช้ เป้าหมาย iSCSI ดำเนินการแล้ว

การเปลี่ยนแปลงในไฟล์นี้คือ:


node.session.auth.authmethod = CHAP                    #Enable CHAP Authentication
node.session.auth.username = tecmint-iscsi-user        #Target to Initiator authentication
node.session.auth.password = password                  #Target to Initiator authentication
node.session.auth.username_in = debian-iscsi-target    #Initiator to Target authentication
node.session.auth.password_in = secretpass             #Initiator to Target authentication

ตัวเลือกข้างต้นจะอนุญาตให้ เป้าหมาย นี้ตรวจสอบสิทธิ์กับ ผู้ริเริ่ม รวมทั้งอนุญาตให้ ผู้ริเริ่ม ตรวจสอบสิทธิ์กับ เป้าหมาย >.

มีตัวเลือกอื่นในไฟล์นี้อาจจำเป็นต้องเปลี่ยนแปลงขึ้นอยู่กับการตั้งค่าของผู้ดูแลระบบ และนั่นคือพารามิเตอร์ 'node.startup'

หากปฏิบัติตามคำแนะนำนี้ ตัวเลือก 'node.startup' จะถูกตั้งค่าเป็น 'ด้วยตนเอง' ณ จุดนี้ สิ่งนี้อาจไม่ต้องการ หากผู้ดูแลระบบต้องการให้เชื่อมต่อ เป้าหมาย iSCSI เมื่อระบบเริ่มทำงาน ให้เปลี่ยน 'คู่มือ' เป็น 'อัตโนมัติ' ดังนี้:


node.startup = automatic

เมื่อทำการเปลี่ยนแปลงข้างต้นแล้ว ให้บันทึกไฟล์และออก ณ จุดนี้ จำเป็นต้องรีสตาร์ทบริการ open-iscsi Initiator เพื่ออ่านการเปลี่ยนแปลงใหม่เหล่านี้และเชื่อมต่อกับ เป้าหมาย iSCSI

ซึ่งสามารถทำได้โดยใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้ ขึ้นอยู่กับระบบ init ที่ใช้งานอยู่


service open-iscsi restart   (For sysv init systems)
systemctl restart open-iscsi (For systemd init systems)

โปรดสังเกตในกล่องสีเขียวด้านบนว่า ตัวเริ่มต้น iSCSI สามารถเข้าสู่ระบบ เป้าหมาย ได้ เพื่อยืนยันเพิ่มเติมว่า เป้าหมาย iSCSI พร้อมใช้งานสำหรับ ตัวเริ่มต้น เราสามารถตรวจสอบระบบเพื่อหาดิสก์ไดรฟ์เพิ่มเติมที่พร้อมใช้งานโดยใช้คำสั่ง 'lsblk ' คำสั่งและตรวจสอบเอาต์พุตสำหรับไดรฟ์เพิ่มเติม


lsblk

คำสั่งอื่นที่สามารถใช้กับ ตัวเริ่มต้น เพื่อยืนยันการเชื่อมต่อกับ เป้าหมาย คือ 'iscsiadm' ดังนี้:


iscsiadm -m session

จุดสุดท้ายในการยืนยันการเชื่อมต่อจะอยู่ที่ เป้าหมาย เองโดยใช้คำสั่ง 'tgtadm' เพื่อแสดงรายการการเชื่อมต่อ iSCSI ใด ๆ


tgtadm --mode conn --op show --tid 1

จากจุดนี้ อุปกรณ์ iSCSI ที่เชื่อมต่อใหม่จะสามารถใช้งานได้เหมือนกับดิสก์ที่เชื่อมต่อตามปกติ! การแบ่งพาร์ติชัน การสร้างระบบไฟล์ การติดตั้ง และ/หรือการติดตั้งแบบต่อเนื่องสามารถจัดการได้ตามปกติ

ข้อควรระวังสำคัญประการหนึ่งที่ควรทราบเกี่ยวกับอุปกรณ์ iSCSI คือ หาก เป้าหมาย iSCSI มีระบบไฟล์ที่สำคัญซึ่งจำเป็นในขณะที่ ตัวเริ่มต้น กำลังบูต ตรวจสอบให้แน่ใจว่า เพื่อใช้รายการ '_netdev' ในไฟล์ '/etc/fstab' เพื่อให้แน่ใจว่าอุปกรณ์ iSCSI เชื่อมต่อก่อนที่ระบบจะบู๊ตต่อ!