หลักการทำงาน
หลักการทำงานของระบบ 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) ดังนี้
ในกรณีที่สร้างเพียงพาร์ทิชั่นเดียวทั้งในดิสก์ลูกที่ 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 แต่อย่างใด