หลักการทำงาน

จาก NakhonNet
ข้ามไปยัง: นำทาง, ค้นหา

หลักการทำงานของระบบ Diskless

หลักการทั่วไป

การทำงานของระบบ Diskless ในที่นี้ ก็เหมือนๆ กับระบบ Diskless โดยทั่วไป คือ

  • เก็บไฟล์ Image ของฮาร์ดดิสก์ไว้ที่เซิร์ฟเวอร์
  • ให้เครื่องลูกมาใช้ไฟล์ Image ดังกล่าวแทนฮาร์ดดิสก์
  • เมื่อเครื่องลูกเขียนข้อมูล จะไปเขียนข้อมูลดังกล่าวในไฟล์ชั่วคราวแทน (CoW - Copy on Write) โดยเครื่องลูกแต่ละเครื่องจะมีไฟล์ CoW แยกจากกัน
  • เมื่อเครื่องลูกอ่านข้อมูล
    • กรณีที่เป็นข้อมูลที่เพิ่งเขียนไปก็จะอ่านจาก CoW
    • กรณีที่เป็นข้อมูลดั้งเดิมก็จะอ่านจากไฟล์ Image
  • เมื่อบูตเครื่องลูก ระบบจะล้าง CoW ของเครื่องนั้นๆ ออกทั้งหมด ทำให้มีสภาพกลับคืนไปเหมือนเดิมทุกครั้งที่บูตเครื่องลูก
  • การปรับปรุงข้อมูลในไฟล์ Image จะใช้วิธีเอา CoW ของเครื่องลูกที่กำหนดรวมเข้าไปในไฟล์ Image ทำให้ได้ไฟล์ Image ใหม่ที่รวมเอาการเปลี่ยนแปลงจากเครื่องลูกดังกล่าว

การบูตเครื่องลูก

ขั้นตอนการบูตเครื่องลูกมีดังนี้

เครื่องลูก เครื่องเซิร์ฟเวอร์
BIOS ตรวจสอบเครื่อง
BIOS อ่านค่า IP
DHCPD
BIOS กำหนดค่า IP
ส่งค่า IP
BIOS บูตจาก PXE
TFTPD
iPXE ทำงาน
ส่ง iPXE
iPXE อ่าน config จากเซิร์ฟเวอร์
HTTPD
iPXE รับ config
ส่ง config
iPXE เชื่อมต่อ iSCSI
IETD
iPXE บูตวินโดวส์ผ่าน iSCSI
เปิดการเชื่อมต่อ iSCSI

โปรแกรมที่ใช้งานในการบูต มีดังนี้

  • ทำงานบนเซิร์ฟเวอร์
    • DHCPD สำหรับส่งค่า IP Address และการระบุว่าให้อ่านไฟล์สำหรับบูตจากที่ใด
    • TFTPD สำหรับส่งไฟล์สำหรับบูต โดยในที่นี้จะใช้โปรแกรม iPXE
    • HTTPD สำหรับส่ง config ให้ iPXE จำลองไดรฟ์เพื่อบูตวินโดวส์
    • IETD สำหรับส่งไฟล์ Image ไปยังเครื่องลูก
  • ทำงานบนเครื่องลูก
    • iPXE สำหรับเชื่อมต่อไปยัง IETD เพื่อดึงไฟล์ Image มาจำลองเป็นฮาร์ดดิสก์

iSCSI

ใน iSCSI Target (Server) จะมีการกำหนด image ที่จะเปิดให้เครื่องลูกใช้งาน โดยจะมีการกำหนดเป็น Target ID (tid) และ Logical Unit Number (lun) ดังนี้

Dt fld.png iSCSI Target
Dt tri.pngDt fld.png tid: 1 - สำหรับเครื่องลูกที่ 1
Dt ver.pngDt tri.pngDt fil.png lun: 0 - ดิสก์ลูกที่ 1 (ไฟล์ image ที่ใช้งานผ่าน CoW สำหรับเครื่องลูกที่ 1)
Dt ver.pngDt cor.pngDt fil.png lun: 1 - ดิสก์ลูกที่ 2 (ไฟล์ extra เช่น pc01e1.img)
Dt cor.pngDt fld.png tid: 2 - สำหรับเครื่องลูกที่ 2
Dt bla.pngDt tri.pngDt fil.png lun: 0 - ดิสก์ลูกที่ 1
Dt bla.pngDt cor.pngDt fil.png lun: 1 - ดิสก์ลูกที่ 2

ในกรณีที่สร้างเพียงพาร์ทิชั่นเดียวทั้งในดิสก์ลูกที่ 1 และดิสก์ลูกที่ 2 เครื่องลูกก็จะมองเห็นเป็นไดรฟ์ C: และ D: ตามลำดับ

สำหรับดิสก์ลูกที่ 1 โปรแกรมจะใช้งานผ่าน CoW สำหรับแต่ละเครื่องลูกแยกจากกัน ทำให้แต่ละเครื่องสามารถใช้งานไฟล์ image หลักร่วมกันได้

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

Copy on Write (CoW)

Copy on Write คือเทคนิคในการใช้ไฟล์หลักร่วมกันจากหลายๆ เครื่อง แต่เมื่อเครื่องใดเครื่องหนึ่งจะเขียนข้อมูล ก็จะไปเขียนในเนื้อที่สำรองแทน ซึ่งเป็นที่มาของคำว่า Copy on Write โดยเนื้อที่สำรองนี้แต่ละเครื่องจะแยกจากกัน ทำให้แต่ละเครื่องสามารถเขียนข้อมูลได้อิสระจากกัน ส่วนการอ่านข้อมูลก็จะอ่านจากทั้งไฟล์หลัก และใน CoW โดยจะอ่านจาก CoW เฉพาะข้อมูลที่เครื่องดังกล่าวเขียนลงไป ส่วนข้อมูลที่ไม่มีการเขียนก็จะอ่านจากไฟล์หลัก

เครื่องลูก เครื่องเซิร์ฟเวอร์
อ่านข้อมูล
ส่งข้อมูลจาก Image
เขียนข้อมูล
เขียนข้อมูลลง CoW
อ่านข้อมูลที่เคยเขียนไว้
อ่านข้อมูลจาก CoW

เมื่อเปิดเครื่องใหม่ ระบบจะล้าง CoW ออกทั้งหมด ทำให้ในแต่ละครั้งที่เปิดเครื่องใช้งาน สถานะของระบบจะกลับคืนสู่สภาพเดิม

Variation

Variation ใช้ในกรณีที่เครื่องลูกมีความแตกต่างกันเล็กน้อย และจำเป็นต้องมีการกำหนดค่าที่แตกต่างกันออกไป เช่น บอร์ดคนละยี่ห้อที่ใช้ชิปเซ็ตเดียวกัน อาจจะต้องกำหนดค่าที่แตกต่างกันออกไป

โดยปกติแล้ววินโดวส์จะมีการตรวจสอบความแตกต่างกันของฮาร์ดแวร์โดยอัตโนมัติอยู่แล้ว แต่อาจจะต้องมีการบูตใหม่เพื่อใช้ค่าใหม่ ซึ่งจะเป็นปัญหาในระบบ Diskless เพราะเมื่อบูตใหม่ค่าดังกล่าวก็จะหายไป

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

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

การปรับปรุง Image

การปรับปรุง Image จะใช้วิธีนำเอา CoW ของเครื่องใดเครื่องหนึ่ง หรือจาก Variation มาปรับปรุงลงไปใน Image หลัก

เครื่องลูก เครื่องเซิร์ฟเวอร์
ติดตั้ง/ปรับปรุงโปรแกรม
บันทึกการเปลี่ยนแปลงลง CoW
สั่ง Merge CoW
นำ CoW มารวมในไฟล์ image
ล้าง CoW, Variation ทุกเครื่อง

การสั่ง Merge CoW จะต้องสั่งจากเครื่องอื่นที่ไม่ใช่เครื่องลูก เพราะจะต้องปิดเครื่องลูกทุกเครื่องก่อนสั่ง Merge CoW และเปิดได้อีกครั้งเมื่อการรวมไฟล์เสร็จสิ้น

ในการติดตั้ง/ปรับปรุงโปรแกรม สามารถทดลองทำได้หลายๆ ครั้งโดยไม่มีผลต่อไฟล์ image เพราะตราบใดที่ยังไม่รวม CoW เข้าไปในไฟล์ image ก็เท่ากับว่ายังไม่ได้แก้ไขข้อมูลในไฟล์ image แต่อย่างใด


View/Edit Diskless Server
ภาพรวม หลักการทำงาน - Hardware - Software
ติดตั้ง Server ติดตั้ง Slackware64 13.37 บูต - แบ่งพาร์ทิชั่น - เตรียมฮาร์ดดิสก์ - ติดตั้งแพ็กเกจ - ติดตั้ง Lilo - กำหนดค่าเน็ตเวิร์ก - กำหนดรหัสผ่าน - Slackware64 14.0
ปรับแต่ง Slackware Linux การใช้งานเบื้องต้น - คอมไพล์ Kernel - สร้างไดเรกทอรี - ปรับแต่ง Filesystem - ปรับแต่งแพ็กเกจ - เพิ่มการเรียก dhcpd
ปรับแต่ง Network กำหนดชื่อ Device - ทำ Network Bonding - กำหนดค่า Network
RAID สร้างพาร์ทิชั่น - สร้าง RAID - ไม่ใช้ RAID
กำหนดค่า Service NTPD - NAMED - TFTPD
โปรแกรม iSCSI Enterprise Target - iPXE
โปรแกรมจัดการระบบ Apache - MySQL - PhpMyAdmin - CakePHP - Disk Serve Manager (อัปเกรด)
ติดตั้ง Client ติดตั้ง Windows XP - ติดตั้ง iSCSI - ปรับแต่ง Windows XP - คัดลอกดิสก์ไปยังเซิร์ฟเวอร์ - Windows 7 64-bit
การใช้งาน ภาพรวม นิยาม - ไฟล์ Config และ Script
การกำหนดค่า Config - Cluster - Alternative - Computer - ตัวอย่าง
การใช้งาน หน้าจอหลัก - Mode การใช้งาน - ปรับปรุง Image - สำรอง Image - ขยายขนาด Image - ใช้หลาย Server
โปรแกรมเสริม ปรับแต่งเครื่องลูกขณะบูต - ฟอร์แมตไดรฟ์เสริม
การแก้ไขปัญหา FAQ - ไฟล์กำหนดค่า - ไฟล์บันทึกการทำงาน - Secure Erase