Cluster File System
จากอดีตจนถึงปัจจุบัน ไม่ว่าระบบการประมวลผลของคอมพิวเตอร์จะก้าวหน้ารวดเร็วไปสักแค่ใหนก็ตาม แต่ก็มักจะเกิดปัญหาคอขวดในการรับส่งข้อมูลของระบบจัดเก็บข้อมูล อันเนื่องมาจากระบบจัดเก็บข้อมูล โดยเฉพาะระบบคลัสเตอร์ต่าง ๆ อันเนื่องมาจากระบบคอมพิวเตอร์คลัสเตอร์ประกอบด้วยเครื่องคอมพิวเตอร์จำนวนมากที่ช่วยกันประมวลผลข้อมูล ซึ่งเครื่องเหล่านี้จะต้องอ่านเขียนข้อมูลกับไฟล์เซิร์ฟเวอร์ ซึ่งอาจเป็นเครื่อง ๆ เดียว แต่ต้องรองรับการเขียนข้อมูลจากระบบคลัสเตอร์ทั้งระบบ ทำให้เกิดปัญหาความล่าช้าในการอ่านเขียนข้อมูลเกิดขึ้นอันเนื่องมาจากการแย่งกันเขียนข้อมูลของเครื่องในระบบคลัสเตอร์และ I/O ของเครื่องไฟล์เซิร์ฟเวอร์ที่มีต่ำกว่าข้อมูลที่จะเขียนลงไฟล์เซิร์ฟเวอร์ทำให้เกิดปัญหาคอขวดในการรับส่งข้อมูลเกิดขึ้น หรือบางครั้งเราอาจจะต้องการ พื้นที่ในการจัดเก็บไฟล์ที่ใหญ่กว่าที่ไฟล์ซิสเต็มส์ปกติจะสามารถสร้างขึ้นมาได้ หรือเราอาจจะต้องการรวมพื้นที่จากแต่ละเครื่องมารวมกันและสร้างพื้นที่จัดเก็บ ข้อมูลขนาดใหญ่เพียงก้อนเดียว
ระบบไฟล์แบบคลัสเตอร์ จึงเกิดขึ้นเพื่อแก้ไขปัญหาดังกล่าว โดยใช้หลักการเปลี่ยนจากไฟล์เซิร์ฟเวอร์เพียงเครื่องเดียวเป็นใช้หลายเครื่องมาช่วยกัน อ่าน/เขียน ข้อมูล เราจึงเรียกระบบนี้ว่า Cluster File System โดยหลักการทำงานของคลัสเตอร์ไฟล์ซิสเต็ม คือ ใช้หลักการกระจายไฟล์และ แบ่งไฟล์กระจายไปเก็บที่เครื่องหลาย ๆ เครื่อง ในการอ่านเขียนไฟล์จากเครื่องคอมพิวเตอร์จำนวนมาก จะติดต่อไปยังกลุ่มเครื่องให้บริการไฟล์เซิร์ฟเวอร์ ซึ่งประกอบด้วยไฟล์เซิร์ฟเวอร์หลาย ๆ เครื่องแทน ทำให้ระบบภาระงานในการอ่านและเขียนไฟล์นั้นถูกกระจายกันออกไปยังเครื่องไฟล์หลาย ๆ เครื่อง แทนที่ภาระงานนั้นจะตกอยู่กับเพียงเครื่อง ๆ เดียว ทำให้ระบบสามารถให้บริการได้ดีขึ้น
lustre นั้นเป็นระบบ Cluster File System ระบบหนึ่งที่นิยมใช้กันแพร่หลายในระบบสมรรถนะสูงปัจจุบัน โดย lustre นั้นมาจากคำผสมของคำว่า linux และ cluster โดยกว่า 40% ของ 100 ระบบคอมพิวเตอร์คลัสเตอร์ที่มีประสิทธิภาพสูงที่สุดนั้น ล้วนใช้ lustre ทั้งนั้น ซึ่งในปัจจุบันมีหลายหน่วยงาน ในหลากหลายวงการ ไม่ว่าจะเป็น วงการอุตสาหกรรม พลังงาน การเงิน การศึกษา โดย lustre นั้น ถูกออกแบบมาให้มีประสิทธิภาพในการทำงาน เพื่อรองรับคุณสมบัติระบบการกระจายข้อมูล สามารถรองรับการขยายตัวของระบบได้ สามารถรองรับลูกข่ายที่จะเข้ามาใช้งานในระบบได้เป็นจำนวนมาก
ข้อดีของ lustre
- จัดการ I/O ได้อย่างมีประสิทธิภาพ ทั้งในด้านการจัดการข้อมูลแบบต่อเนื่อง และแบบกระจาย
- มีเสถียรภาพในการทำงาน มีการตรวจจับความผิดพลาดและแก้ไขโดยอัตโนมัติ
- รองรับการขยายตัวของระบบได้ง่าย รองรับลูกข่ายได้มาก
- รองรับการเข้าถึงระบบไฟล์ในระดับ petabytes
- การพัฒนาของ lustre เป็นการพัฒนาแบบ open source
- รองรับมาตรฐานเปิดของระบบเครือข่าย และมาตรฐาน POSIX
ส่วนประกอบของ lustre
lustre นั้นประกอบไปด้วยส่วนต่าง ๆ ที่สำคัญคือ
- Metadata Server (MDS) เป็นเครื่องเซิร์ฟเวอร์ที่สร้างข้อมูลเมตาดาต้าไปจัดเก็บยังหน่วยจัดเก็บข้อมูล (MDTs) ทำหน้าที่ จัดการ การอ่านเขียนข้อมูล และจัดการไดเรกทอรีในระบบไฟล์
- Metadata Targets (MDT) เป็นหน่วยจัดเก็บข้อมูลของเมตาดาต้า เช่น ชื่อไฟล์, ไดเรกทอรี, สิทธิ์ และรูปแบบไฟล์ เป็นต้น บนเครื่อง MDS
- Object Storage Servers (OSS) เป็นเครื่องเซิร์ฟเวอร์ที่เชื่อมต่อกับหน่วยจัดเก็บข้อมูลย่อย (OSTs) ทำหน้าที่ให้บริการไฟล์ I/O และการร้องขอผ่านเครือข่าย
- Object Storage Target (OST) เป็นหน่วยจัดเก็บไฟล์ข้อมูลบนหนึ่งหรือหลาย ๆ เครื่อง OSS Lustre clients เป็นเครื่องไคลเอ็นท์ที่ร้องขอการอ่านเขียนไฟล์บนระบบ Lustre โดยเครื่องไคลเอ็นท์ต้องทำการเชื่อมต่อมายังเครือง MDS ก่อน
หลักการทำงานของ Lustre
หลักการทำงานของ lustre โดยคร่าว ๆ จะเป็นดังนี้
- เครื่อง client จะทำการร้องขอข้อมูลที่ต้องการไปที MDS
- MDS ค้นข้อมูลตำแหน่งไฟล์ที่ร้องขอมาว่าเก็บไฟล์ไว้ที่เครื่อง OSS ใดบ้าง
- OSS ส่งไฟล์ข้อมูลกลับไปยัง Client โดยตรง
ซึ่งในการทำงานจริง ๆ นั้น เราจะ mount disk จากเครื่อง MDS โดยเห็นเป็น disk ก้อนเดียว เสมือนเป็น disk ปกติ โดยเครื่อง MDS นั้นจะเป็นคนจัดการควบคุม ส่วนการอ่าน/เขียนไฟล์จากเครื่อง OSS ต่าง ๆ ทั้งหมด
การติดตั้งระบบ Lustre
ในการติดตั้งระบบ Lustre สามารถติดตั้งผ่าน Repository ของ Lustre ที่ https://downloads.whamcloud.com/public/lustre โดยใช้ yum หรือ Download Package มาติดตั้งเองหรืออีกวิธีหนึ่งคือการติดตั้งผ่านซอฟต์แวร์ Integrate Manager for Lustre (IML)
Integrate Manager for Lustre (IML)
ซอฟต์แวร์ IML นี้จะเป็นซอฟต์แวร์ช่วยในการติดตั้งซอฟต์แวร์ Lustre แก่เครื่องในระบบ และบริหารจัดการระบบ Lustre โดยการ Monitoring ระบบ, สามารถบริหารจัดการ Resource ที่แชร์อยู่ระหว่าง MDS/OSS เพื่อทำ High Availability ของระบบ Lustre ได้
High Availability ในระบบ Lustre
Integrate Manager for Lustre นั้น ถ้าติดตั้งบนระบบที่ออกแบบมาสำหรับทำ High Availability คือเครื่องแต่ละส่วนของระบบ Lustre เช่น MDS และ OSS นั้น จะมีเป็นคู่ ๆ โดยในคู่เครื่องนั้น ๆ จะสามารถ mount LUN ที่แชร์ระหว่างกันได้ โดยในการเม้าท์ LUN จะใช้ซอฟต์แวร์ Corosync/Pacmaker/PCS ในการจัดการผ่านหน้า Web GUI ของ IML โดยในแต่ละคู่จะต้องมี interface ที่ต่อ crossover กันอยู่ เพื่อตรวจสอบสถานะของคู่ว่าเครื่องยังทำงานอยู่หรือไม่
และบน Production ควรมีพอร์ต Out-of-band Management (Idrac/ILO/ILOM) เชื่อมต่อไว้ด้วย เมื่อระบบมีปัญหา IML จะสามารถยิง IPMI Command เพื่อไปสั่งการเครื่องในระบบ Lustre ให้เปิด,ปิด ระบบได้ ส่วน Lustre Network จะเป็นวงที่ให้บริการ Lustre แก่ Client ซึ่งมักจะเป็น Network ความเร็วสูง เช่น 10GbE หรือ Infiniband
ซึ่งในระบบใหญ่ ๆ นั้น เราสามารถเซ็ต lustre ได้หลายรูปแบบ ตามงบประมาณและความเหมาะสม
ผลงานที่ผ่านมา
คลัสเตอร์คิท เป็นบริษัทคนไทยบริษัทแรก และบริษัทเดียวที่รับความไว้วางใจให้ดำเนินการติดตั้งซอฟต์แวร์ระบบไฟล์ lustre ให้กับหลายองค์กร รวมถึงระบบคลัสเตอร์ที่มีความเร็วในการประมวลผลสูงที่สุด 3 อันดับแรกของประเทศ ซึ่งประกอบด้วย
- ระบบคลัสเตอร์ "เทรา" ขนาด 800 คอร์ ของศูนย์ไทยกริดแห่งชาติ
- ระบบคลัสเตอร์ "Eclipse" ขนาด 704 คอร์ ของ ศูนย์พันธุวิศวกรรมและเทคโนโลยีชีวภาพแห่งชาติ (BIOTEC)
- ระบบคลัสเตอร์ "ศิลา" ขนาด 284 คอร์ ของ สถาบันวิจัยและพัฒนา มหาวิทยาลัยรามคำแหง
- ระบบเก็บบริการข้อมูลโครงการดิจิตอลไทยแลนด์ เพื่อเก็บภาพถ่ายดาวเทียม จากดาวเทียมธีออส (THEOS)” ของ สำนักงานพัฒนาเทคโนโลยีอวกาศและภูมิสารสนเทศ (องค์การมหาชน)
- ระบบ HAII Cluster ขนาด 432 core ของ สถาบันสารสนเทศทรัพยากรน้ำและการเกษตร (HAII) เพื่อการวิจัยลมและน้ำ