Jetsada Malaisirirat
4 min readJan 28, 2019

Software-Defined Storage with Ceph

Ceph logo

Software-Defined Storage เป็นคำนิยามหนึ่งของฝั่ง Storage ที่เริ่มเป็นที่นิยมหลักการคือการนำเครื่อง คอมพิวเตอร์หรือเซอร์เวอร์หลาย ๆ เครื่อง มาติดตั้งซอฟต์แวร์เพื่อให้บริการเป็นระบบจัดเก็บข้อมูล แทนที่จะต้องซื้อระบบ Storage แบบเดิม ๆ ที่มีราคาแพงกว่า เมื่อมีปัญหาก็ต้องเรียก Vender มาแก้ไข ไม่สามารถดูและระบบเองได้ จะขยายระบบเพิ่มก็ต้องซื้อของจาก Vender เดียวกัน

ซึ่งในตลาดก็มีซอฟต์แวร์หลาย ๆ ตัว ที่เป็น SDS ทั้งที่เป็น Open Source และ Propietory Software สามารถให้บริการเป็น NAS หรือ SAN แทนระบบ Storage แบบเดิมได้ ซึ่งบทความนี้จะแนะนำซอฟต์แวร์ที่ชื่อ Ceph

ตัว Ceph มีความแตกต่างจากซอฟต์แวร์ตัวอื่น โดย Ceph เป็น Open Source Software ที่สามารถให้บริการเป็น NAS, SAN หรือ Object Storage ซึ่งเป็นจุดเด่นที่ยังไม่เจอในซอฟต์แวร์ตัวอื่น ๆ

https://cdn-images-1.medium.com/max/1600/1*2t_WIU7XkuWl5a-lF4bK8g.png

ความเป็นมาของ Ceph

Ceph เป็นซอฟต์แวร์ทำ Software-Defined Storage ที่เป็น Open Source ได้รับความนิยมติดตั้งเป็น Backend การเก็บข้อมูลในระบบ OpenStack และมีขนาดของ community ที่ใหญ่ขึ้นเรื่อย ๆ

ชื่อของ Ceph นั้นมาจากคำว่า “cephalopod” ซึ่งเป็นสัตว์ในตระกูลปลาหมึก (Octopus and squid) Ceph นั้นเริ่มต้นโดย Sage Weil ในปี 2003 โดยเป็นส่วนหนึ่งของวิทยานิพนธ์ (PhD project) ณ University of California, Santa Cruz โดยสำเร็จในปี 2007.

ในปี 2012 Sage Weil ได้ก่อตั้งบริษัท Inktank ขึ้นมาเพื่อทำธุรกิจให้บริการ support ซอฟต์แวร์ Ceph ในระดับ Enterprise โดยเป็นทั้งผู้ก่อตั้ง และ CTO ของบริษัทฯ และถูก Red Hat ซื้อไปในปี 2014 ด้วยราคา $175 Million

ปัจจุบัน Sage Weil ทำงานที่ Red Hat ในฐานะ Ceph Principal Architect และเป็น Chief Architect ของโครงการ Ceph

Update : ปัจจุบัน Red Hat ได้ถูกซื้อกิจการไปอยู่กับ IBM ด้วยราคา $34 Billion

ความสามารถของ Ceph การใช้งานและข้อจำกัด

Ceph Storage นั้นสามารถให้บริการได้ในหลายรูปแบบ ดังนี้

  • Object Storage (S3/Swift)
  • Block Storage Device (SAN / Kernel RBD,iSCSI target,librbd)
  • CephFS (NAS/Files Sharing)

Ceph นั้นปกติจะติดตั้งและใช้งานในฝั่ง Linux Disto หลัก ๆ ได้อยู่แล้ว เช่น RedHat, CentOS, Ubuntu, SuSe เนื่องจากมี library สามารถติดตั้งเพิ่มให้ใช้งานได้
แต่หากเป็น Windowsจะยังไม่ Support โดยตรง ในส่วนของ CephFS หากต้องการใช้งาน จะต้องมีเครื่องที่ทำหน้าที่เป็นตัวกลางหรือ Gateway

Object Storage : จำเป็นต้องมี Gateway เพื่อติดต่อระหว่าง Client และ Ceph โดยติดต่อผ่าน api

RBD : สำหรับ Linux จะติดต่อใช้งานได้โดยตรงผ่าน library ของ Ceph หรือหากจะให้ใช้งานโดยทั่วไปจะต้องติดตั้ง Ceph iSCSI Gateway ทำหน้าที่แปลงจาก RBDให้เป็น iSCSI target เพื่อให้เครื่องอื่น ๆ รวมถึง Windows ทีมี iSCSI Initiator สามาร mount และใช้งานได้

CephFS : สำหรับ Linux จะ mount CephFS ขึ้นมาเสมือนเป็นพื้นที่ ๆ หนึ่ง ได้เลยสำหรับ Windows นั้นจะต้องให้ตัว Gateway ทำหน้าที่ mount CephFS ขึ้นมาก่อน และใช้ SAMBA ทำหน้าที่แชร์พื้นที่ของ Ceph ออกไป เพื่อให้ Client ที่เป็น Windows สามารถเข้าถึงเสมือนเป็น share drive ได้

สถาปัตยกรรมของ Ceph

Ceph Architecture

Ceph จะประกอบด้วยส่วนประกอบหลัก ๆ 2 ส่วนคือ

  • MON (Monitor Node)ทำหน้าที่ดูแลสถานะของ Ceph cluster
  • OSD (Object Storage Node) เป็น Node ทำหน้าที่เก็บข้อมูล ของระบบ ส่วนนี้จะใส่ HDD/SSD สำหรับเก็บข้อมูลในระบบ Ceph

และหากต้องการใช้ CephFS จะต้องมีอีกส่วนหนึ่งคือ

  • MDS (Metadata Node) ทำหน้าที่ดูแลสถานะของ file hierarchy (สำหรับ CephFS เท่านั้น)

MON และ MDS สามารถทำ High Availablity ได้ โดยการติดตั้ง MON ขั้นต่ำ 3 ตัว ส่วน MDS สามารถติดตั้งเป็นแบบ Active/Standby ได้

ในคลัสเตอร์ Ceph การติดต่อกันระหว่าง MON, MDS และ OSD จะติดต่อผ่าน Public Network ส่วน Cluster Network (หรือ Private Network) จะใช้ในการ Replication ข้อมูลระหว่าง OSD เท่านั้น หากดีไซน์แบบประหยัดก็สามารถตัด Cluster Network ระบบยังสามารถทำงานได้ แต่จะกระทบจังหวะที่มีโหลดในระบบสูง และมีการ Replication ข้อมูลระหว่าง OSDs หนัก ๆ จะทำให้ระบบช้าลงได้ ดังนั้นแนะนำให้แยก Cluster Network ออกมาต่างหาก

เวอร์ชั่น

เวอร์ชั่นล่าสุด ณ ปัจจุบัน (มกราคม 2019) จะเป็นเวอร์ชั่น Mimic (v13.2.0) — on June 1, 2018 โดยทาง Ceph มีแผนที่จะปล่อยเวอร์ชั่นใหม่ ทุก ๆ 9 เดือน โดยประมาณ Version number จะแยกได้คือ

x.0.z — development (for early testers)

x.1.z — release candidates (for test clusters)

x.2.z — stable/bugfix (for users/production)

โดยการเลือกใช้งาน Ceph นั้น แนะนำให้เลือกเป็น Stable Version คือ Version.2.x

การใช้งานระบบ

การให้บริการ สำหรับ Client ที่เข้ามาใช้งานในระบบโดยตรง จะต้องมี Kernel ที่สนับสนุน Ceph มีเบอร์ IP วงเดียวกับ Ceph สามารถติดต่อตรงกับเครื่องในระบบ Ceph ได้ สำหรับ

ถ้าต้องการให้บริการ Windows หรือ Clients อื่น ๆ ที่ไม่ได้เป็น Linux จะต้องทำ Gateway เช่น rados gateway และให้เครื่องติดต่อมาที่ gateway หากเป็น CephFS ก็ mount CephFs และแชร์ผ่าน SAMBA ออกไปให้เครื่อง Windows สามารถใช้งานพื้นที่ Ceph ได้

ข้อควรระวัง

ในแต่ละส่วนของ Ceph ไม่ว่าจะเป็น MON หรือ MDS สามารถให้บริการเป็น High Availability ได้อยู่แล้ว ในส่วนของ OSD ก็ replicate ข้อมูลอัติโนมัติ เมื่อมี OSD down ไป ดังนั้นหากติดตั้งเป็นไปตาม Architecture ก็ไม่น่าห่วงเท่าได้ จะมีข้อกังวลส่วนของ Network หากในส่วนนี้ทำงานโดย Network Switch ตัวเดียว หาก Switch มีปัญหาขึ้นมาก็จะทำให้แต่ละเครื่องไม่สามารถติดต่อกันได้ ก็จะทำให้ระบบมีปัญหาได้ ดังนั้นบนระบบ Production มีข้อแนะนำให้ใช้ Switch ที่รองรับ802.3ad link aggregation หรือ LACP Protocol และสามารถ Stack Switch ให้เสมือนว่าเป็น Switch ตัวเดียวกันได้ และที่แต่ละโหนดของระบบ Ceph Storage ให้ทำ Bonding การ์ดแลน ใน mode 4 โดยเสียบสายแลนแยก Switch กัน หาก Switch ตัวไดตัวหนึ่งมีปัญหา ก็ยังสามารถใช้งานได้โดยผ่าน Switch อีกตัวหนึ่ง ซึ่งในโหมดนี้การ์ดแลนจะทำงานทั้งสองการ์ด ทำให้ได้ Bandwidth ของระบบเพิ่มขึ้นด้วย

ข้อดีของ Ceph

  • เป็น Open source ไม่มีค่าใช้จ่ายสำหรับตัวซอฟต์แวร์ แต่หากต้องการ Support ก็จะมี subscirption ของ Vender หลาย ๆ ค่าย เช่น RedHat, SuSe ขายอยู่เช่นกัน
  • สามารถให้บริการได้หลากหลายรูปแบบ (Block, Object, Filesystem)
  • สามารถขยายระบบได้ง่าย เพียงเติมเครื่องเข้าระบบ
  • ใช้ Hardware ทั่ว ๆ ไป ไม่จำเป็นต้องเป็น Hardware เฉพาะ
  • แต่ละส่วนมีความคงทนของระบ (High Availability) ไม่ว่าจะเป็น MON, MDS หรือ OSD

ข้อเสียที่ชัดที่สุดของ Ceph นั้นจะเปลืองดิสก์กว่า Storage แบบปกติ เนื่องจากเทคโนโลยีในการเก็บ ข้อมูลของ Ceph ที่จะเก็บสำเนาของข้อมูลไว้ 2–3 ชุด สำหรับ High Availablity เพื่อให้มั่นใจว่าถ้า บางเครื่องในระบบมีปัญหาจะยังคงสามารถอ่านเขียนข้อมูลจาก Ceph ได้ โดยไม่ต้องปิดระบบ แต่ในเวอร์ชั่นใหม่ ๆ ก็มีการพัฒนาการจัดเก็บแบบ Erasure Coding สำหรับการเก็บแบบ Archive ที่ไม่ได้อ่านเขียนบ่อย โดยจะเปลี่ยนการเก็บข้อมูลคล้าย ๆ RAID ซึ่งจะเก็บข้อมูลได้มากกว่า

Real Case — Ceph Cluster Store Data for Windows Client

เป็นระบบ Ceph Cluster ขนาดประมาณ 500TB จำนวณ 45 เครื่อง ให้บริการ File System แก่ Client ที่เป็น Windows และมีการ Authenticate ผ่าน Active Directory Server

Responses (1)