Ceph Client – Part III: CephFS and Customized Client

Ceph File System หรือ CephFS เป็นอีกหนึ่ง client ที่มาพร้อมกับระบบ Ceph Storage โดย CephFS นั้น ทำให้ผู้ใช้สามารถใช้งาน Ceph Storage ในลักษณะของ distributed file system ได้ (ในขณะที่ในความเป็นจริงแล้ว Ceph Storage เป็น object storage)​ ทำให้สามารถนำไปใช้งานในองค์กรทั่วไปได้อย่างง่ายดาย เพราะว่า CephFS รองรับ operation มาตรฐานทั่วไปของ POSIX (เช่น อ่าน, เขียน, ลบ, หรือ copy ไฟล์) ทำให้ผู้ใช้สามารถใช้งาน CephFS ร่วมกับแอปพลิเคชันหรือโปรแกรมอื่นๆได้ในทันที

 

สำหรับผู้ที่สนใจเกี่ยวกับ Ceph Storage เพิ่มเติม สามารถติดตามอ่านบทความตอนก่อนหน้านี้ได้ที่นี่ครับ

 

การทำงานของ CephFS

การทำงานของ CephFS มีลักษณะคล้ายคลึงกับระบบ file system ทั่วไป ดังที่ได้อธิบายไปพอสังเขป ในบทความ RADOS: MDS Node

ในระบบ file system ทั่วไปนั้น แบ่งการเก็บข้อมูลออกเป็น 3 ส่วน คือ ข้อมูลภายในไฟล์ (file content), metadata และ directory hierarchy เหตุที่ไม่สามารถเก็บเพียงข้อมูลภายในไฟล์อย่างเดียวได้ เพราะว่าไม่เช่นนั้น จะไม่สามารถจัดระเบียบไฟล์เป็น directory hierarchy หรือไม่สามารถกำหนดสิทธิ์การเข้าถึงไฟล์ หรือคุณสมบัติต่างๆ ของไฟล์ลงไปได้ ซึ่งข้อมูลเหล่านี้จัดเป็น metadata ของไฟล์นั่นเอง

ด้วยเหตุที่ต้องมีการเก็บและจัดการ metadata และ directory hierarchy เพิ่มเข้ามาในการเก็บข้อมูลในลักษณะของ file system จึงทำให้ เมื่อใช้งาน CephFS จำเป็นต้องมี node อีกประเภทหนึ่งเพิ่มเข้ามาใน RADOS cluster นอกเหนือจาก Monitor node และ OSD node คือ MDS node หรือ Metadata Server node โดย MDS node นี้เองที่ทำหน้าที่จัดการในส่วนนี้ (metadata และ directory hierarchy) และหากว่าไม่มี MDS node ก็จะไม่สามารถใช้งาน CephFS ได้เลย เพื่อให้ระบบมีความมั่นคงมากขึ้น ผู้ออกแบบ Ceph Storage จึงได้สร้างให้ MDS node สามารถทำ Failover ได้ และนอกจากนี้ ยังมีความสามารถในการทำ dynamic subtree partitioning อีกด้วย ทำให้เมื่อเกิด hotspot ขึ้น เมื่อมี MDS node หลายๆ node ใน cluster MDS node อื่นๆ สามารถเข้ามาช่วยแบ่งเบาภาระการทำงานกันได้ หรือพูดง่ายๆ คือสามารถกระจาย workload ได้อย่างอัตโนมัตินั่นเอง

สำหรับผู้ที่สนใจเรื่อง file system และ MDS node สามารถศึกษาเพิ่มเติมได้ที่นี่ครับ

ในการเก็บข้อมูลของไฟล์ของ CephFS นั้น ไฟล์จะถูกแบ่งออกเป็นชิ้นๆ เรียกว่า stripe และถูกจัดเก็บลงไปใน RADOS object ตามที่วิธีการแบ่งและจัดเก็บที่ระบุไว้ใน file layout ของแต่ละไฟล์ (ผู้ใช้สามารถกำหนดเองได้)​ โดยใน 1 RADOS object สามารถประกอบไปด้วย stripe ของ ไฟล์หลายๆ stripe ดังที่แสดงในภาพด้านล่าง

CephFS Stripe

CephFS File Striping (source: http://docs.ceph.com/docs/master/architecture/)

การจัดเก็บแบบนี้ทำให้ประสิทธิภาพการทำงานของ file system ดีขึ้นอีกด้วย เพราะว่า เมื่อไฟล์ถูกแบ่งออกเป็นชิ้นๆ และกระจายไปยัง OSD node ต่างๆใน Ceph Storage cluster ในลักษณะคล้ายกับ RAID 0 ทำให้สามารถอ่านแต่ละชิ้นของไฟล์ขึ้นมาจาก OSD node ต่างๆ ได้แบบ parallel นั่นเอง

 

การใช้งาน CephFS

ก่อนที่จะเริ่มใช้งาน CephFS จำเป็นต้องมีการ initialize CephFS ขึ้นมาในระบบ Ceph Storage ก่อน โดยในเวอร์ชันปัจจุบันยังไม่รองรับการมี CephFS มากกว่า 1 ระบบใน Ceph Storage cluster หนึ่งๆ (ในความเป็นจริงสามารถทำได้ แต่ยังจัดว่าเป็น experimental feature)

หลังจากสร้าง CephFS ขึ้นมาแล้ว ขั้นตอนต่อไป เพียงแค่ผู้ใช้ mount CephFS เข้าไปใช้งาน ก็สามารถเข้าถึงข้อมูลที่เก็บอยู่ภายในได้ทันที ซึ่งในการ mount CephFS เข้าใช้งานนั้น สามารถทำได้ผ่าน kernel module ด้วยการใช้คำสั่ง mount คล้ายกับการ mount block device ทั่วๆไป หรือ สามารถ mount ในลักษณะของ File System in User Space (FUSE) ได้อีกด้วย ยิ่งไปกว่านั้น CephFS ยังสามารถถูก export ออกมาเป็น NFS (Network File System) ผ่าน NFS-Ganesha  ได้อีกด้วย

เมื่อผู้ใช้ทำการ mount CephFS เข้าใช้งานแล้ว ก็สามารถใช้งาน CephFS ได้เหมือนใช้งาน file system ทั่วๆไป ผ่านคำสั่งมาตรฐานของ POSIX ได้ทันที เช่น อ่าน, เขียน, ลบ, copy หรือ move ไฟล์ เป็นต้น

 

Customized Client

นอกจาก client มาตรฐานทั้งสามแบบที่มาพร้อมกับ Ceph Storage (RGW, RBD และ CephFS) ระบบ Ceph Storage ยังอนุญาตให้ผู้ใช้สามารถสร้าง client ขึ้นมาเพื่อใช้งาน Ceph Storage ได้เองอีกด้วย ด้วยเหตุนี้จึงทำให้หากผู้ใช้มีแอปพลิเคชันอยู่แล้ว แต่อยากนำมาใช้งานเชื่อมต่อกับ Ceph Storage ก็สามารถทำได้ ในการทำ Customized Client นี้ สามารถทำได้ผ่านการเรียกใช้งาน librados ซึ่งเป็น library ที่รวมเอาคำสั่งต่างๆ ที่จำเป็นต่อการทำงานร่วมกับ Ceph Storage ไว้นั่นเอง

 

Ceph Storage นั้นมาพร้อมกับ Client ที่หลากหลายประเภท โดยผู้ใช้สามารถเลือกใช้ให้เหมาะกับงานของตนได้ ด้วยเหตุนี้เองทำให้ Ceph Storage มีความยืดหยุ่นในการใช้งานเป็นอย่างมาก เพราะสามารถทำงานได้ทั้งในรูปแบบของ object Storage, block device และ file system เลยทีเดียวครับ นอกจากนี้ยังมีทางเลือกให้ผู้ใช้สามารถสร้างแอปพลิเคชันมาทำงานเชื่อมต่อกับ Ceph Storage โดยตรงได้อีกด้วยครับ

 

References:

 

เกี่ยวกับ Throughwave Thailand

Throughwave Thailand เป็นตัวแทนจำหน่าย (Distributor) สำหรับผลิตภัณฑ์ Enterprise IT ครบวงจรทั้ง Server, Storage, Network และ Security พร้อมโซลูชัน VMware และ Microsoft ที่มีลูกค้าเป็นองค์กรชั้นนำระดับหลายหมื่นผู้ใช้งานมากมาย โดยทีมงาน Throughwave Thailand ได้รับความไว้วางใจจากลูกค้าจากทีมงาน Engineer มากประสบการณ์ ที่คอยสนับสนุนการใช้งานของลูกค้าตลอด 24×7 ร่วมกับ Partner ต่างๆ ทั่วประเทศไทยนั่นเอง https://www.throughwave.co.th