แนะนำ Ceph Storage – distributed storage รูปแบบใหม่ที่น่าสนใจสำหรับองค์กร

Introduction to Ceph

สำหรับคนที่กำลังมองหาระบบ storage ดีๆ เพื่อนำไปใช้ในองค์กรในช่วงที่ผ่านมานี้ คงจะเคยได้ยินชื่อ Ceph Storage มาบ้างแล้ว ด้วยคุณสมบัติและความสามารถต่างๆ ของ Ceph Storage ที่พัฒนาเพิ่มขึ้นตลอดเวลา อีกทั้ง community ของผู้ใช้ที่ขยายขนาดขึ้นเรื่อยๆ ทำให้ชื่อของ Ceph Storage นั้นยิ่งมีคนพูดถึงมากขึ้น พิสูจน์ได้จากผลสำรวจประจำปีของ OpenStack ที่จัดให้ Ceph Storage เป็นระบบ storage ที่ถูกใช้มากที่สุดเป็นอันดับหนึ่ง แต่สำหรับใครที่ยังไม่เคยได้ยิน หรือพอได้ยินมาบ้างแต่ยังสงสัยว่ามันคืออะไร ในบทความนี้เราจะมาทำความรู้จักกับ Ceph Storage ในเบื้องต้นกันครับ

Ceph Storage is a Distributed Storage

Ceph Storage เป็นระบบ distributed storage แบบหนึ่ง หรือพูดง่ายๆ คือ เป็น storage ที่ทำงานบน cluster ของ computer node โดยในระบบ Ceph Storage ประกอบไปด้วย node 3 ประเภท คือ

  1. Monitor ทำหน้าที่ดูแลสถานะของ cluster
  2. OSD (Object Storage Device) ทำหน้าที่อ่าน/เขียนข้อมูลตามคำสั่งของผู้ใช้
  3. MDS (Metadata Server) ทำหน้าที่ดูแลสถานะของ file hierarchy (มี node ประเภทนี้เฉพาะใช้งาน Ceph Storage กับ CephFS เท่านั้น ดังที่จะอธิบายในหัวข้อหลังจากนี้ครับ)

เพราะว่า Ceph Storage ทำงานบน cluster ที่แต่ละ node ทำหน้าที่แตกต่างกันอย่างชัดเจน ทำให้การบริหารจัดการทำได้สะดวก workload ถูกกระจายออกไปอย่างเหมาะสม ลดความเสี่ยงจาก system failure และทำให้ scale ได้ง่ายอีกด้วย

 

Ceph Storage is Software-Defined Storage

Ceph Storage เป็น Software-defined storage (SDS) ที่ถูกออกแบบมาให้ติดตั้งได้ตั้งแต่บน All-flash server-class hardware ไปจนถึง Commodity off-the-shelf hardware (computer ที่ใช้ทั่วไปตามบ้าน) หรือแม้กระทั่ง Single-board computer เช่น Raspberry Pi

นอกจากนี้ Ceph Storage ไม่ได้ต้องการ hardware แบบพิเศษ เหมือนระบบ storage
แบบอื่นๆ เพื่อที่จะใช้งาน feature เช่น RAID (Redundant Array of Independent Disks), replication, erasure coding หรือ storage virtualization ทำให้ผู้ใช้มีความอิสระในการเลือก hardware สำหรับ storage มากขึ้น และสามารถเลือกให้ตรงตามงบประมาณและ performance requirements ได้มากยิ่งขึ้นกว่าเดิม

 

Ceph Storage is Unified Storage System

Ceph Storage มาพร้อมกับ 3 interface ในการติดต่อเข้าใช้งาน storage โดยผู้ใช้สามารถเลือกได้ทั้ง Object storage interface, Block storage interface หรือ File system interface (ดังที่แสดงในรูปด้านขวา)

  1. Ceph Object Storage รองรับทั้ง Amazon S3 และ OpenStack Swift protocol สามารถทำงานร่วมกับ application ที่รองรับ protocol เหล่านั้นได้ทันที
  2. Ceph Block Storage รองรับการทำงานในลักษณะที่คล้ายกับ SAN (Storage Area Network) โดยสามารถสร้าง resizable logical block devices และ mount มาใช้งานที่เครื่อง client ปลายทางได้ และยังสามารถทำงานร่วมกับ KVM (Kernel-based Virtual Machine) เช่น QEMU (Quick Emulator) ได้อีกด้วย เหมาะเป็นอย่างยิ่งเมื่อนำไปใช้จัดการ virtual machine (VM) image เพราะสามารถทำ snapshot layering ได้ ทำให้สามารถ clone VM image ออกมาใช้งานได้อย่างรวดเร็วมาก
  3. Ceph File System Storage รองรับการทำงานในลักษณะคล้าย NAS (Network-Attached Storage) คือ ผู้ใช้สามารถสร้าง CephFS (Ceph File System) ขึ้นมาใน Ceph Storage แล้ว mount ไปใช้งานยังเครื่องปลายทางได้เช่นเดียวกับ NAS ทั่วไปโดยใช้งานผ่าน CephFS Gateway

เมื่อเปรียบเทียบกับ storage อื่นๆ ในท้องตลาดแล้ว นับว่า Ceph Storage นั้นเป็น storage ที่มีความเพียบพร้อมมากเพราะมาพร้อมกับทั้ง 3 interface ในขณะที่เจ้าอื่นๆส่วนใหญ่จะให้มามากที่สุดเพียง 2 interface เท่านั้น

Ceph Storage is a Greater Peace of Mind

Ceph Storage มีคุณสมบัติและความสามารถต่างๆ มากมายที่ช่วยรักษาข้อมูลให้คงทนถาวรมากขึ้น เช่น data replication, erasure coding, across-cluster mirroring ซึ่งส่วนใหญ่สามารถตั้งให้ทำงานได้โดยอัตโนมัติโดยที่ผู้ใช้ไม่ต้องทำอะไรเพิ่มพิเศษ เพียงแค่บันทึกข้อมูลลงไปในระบบ ข้อมูลนั้นจะถูก replicate หรือ กระจายไปเก็บหลายๆ ที่เองโดยอัตโนมัติ

ความสามารถหนึ่งที่สำคัญและทำให้การเก็บข้อมูลมีความปลอดภัยมากขึ้นใน Ceph Storage คือ configurable data placement rule (CRUSH ruleset) กล่าวคือ ผู้ใช้สามารถกำหนดเองได้ ว่าจะให้ข้อมูลกลุ่มไหน ถูก replicate หรือ กระจายไปเก็บไว้ที่ใดบ้าง เช่น ผู้ใช้สามารถกำหนดให้เก็บข้อมูลการจ่ายเงินไว้ 3 replica โดยต้องเก็บไว้คนละ host ที่อยู่คนละ room กันด้วย ในลักษณะนี้ก็สามารถกำหนดลงไปใน Ceph Storage ได้อย่างง่ายดาย ทำให้ผู้ใช้สามารถออกแบบการจัดวางข้อมูล (data placement) ได้อย่างมีประสิทธิภาพและตรงตาม data disaster และ recovery plan ของแต่ละองค์กร ความสามารถนี้เป็นไปได้เพราะความสามารถของ CRUSH ที่จะกล่าวต่อไปครับ

 

Ceph Storage is Designed for Scale

CRUSH เป็น data placement algorithm ที่ใช้คำนวณตำแหน่งการจัดวางข้อมูลใน Ceph Storage โดย algorithm นี้สามารถคำนวณได้ทันทีไม่ว่าจะเป็นบน OSD node หรือ client computer ของผู้ใช้ ทำให้ไม่จำเป็นต้องมี centralized service มาคอยเก็บว่าข้อมูลนี้เก็บไว้ที่ใด หาก service นี้เกิดปัญหาสามารถส่งผลให้ทั้งระบบ storage ใช้การไม่ได้ไปด้วย และการมี service แบบนี้ยังทำให้การ scale out ทำได้ลำบาก แต่ Ceph Storage นั้นไม่มีปัญหานี้

นอกจากนี้ CRUSH ยังช่วย distribute load ของข้อมูลออกไปในแต่ละ OSD node อย่างเท่าๆกัน และยังสามารถกำหนด weight ที่แตกต่างกันบนแต่ละ OSD node ได้ ด้วยความสามารถนี้ ทำให้ไม่เกิดการคอขวดขึ้นในระบบ และช่วยลดความเสี่ยงในเรื่อง data loss ได้อีกด้วย เพราะหากข้อมูลมากระจุกตัวกันที่ node เพียงไม่กี่ node แล้ว node เหล่านั้นเกิดปัญหาขึ้น อาจทำให้สูญเสียข้อมูลจำนวนมากไปในคราวเดียวกันได้ เปรียบเหมือนการเอาไข่มาใส่ตะกร้าใบเดียวกันนั่นเอง

สิ่งที่เหนือยิ่งไปกว่านั้น คือ CRUSH ยังช่วยให้การ scale out หรือ shrink in (เพิ่ม/ลดความจุ) ทำได้อย่างง่ายดาย เพียงแค่เพิ่ม OSD node ใหม่เข้าไป หรือ นำ OSD node ออกจากระบบ ระบบจะทำการ relocate หรือ replicate data เพิ่มเติมให้มีจำนวน replica ตามที่กำหนดไว้ และข้อมูลจะกระจายตัวกันอย่างสม่ำเสมอ ทำให้ไม่เกิดคอขวดทางด้านประสิทธิภาพการทำงานขึ้น และสามารถ scale out หรือ shrink in ได้อย่างง่ายดายและไม่มีข้อจำกัด

แล้ว Ceph Storage เหมาะกับอะไรบ้าง?

ตัวอย่างของความสามารถของ Ceph Storage ข้างบนก็น่าจะพอเพียงที่จะทำให้หลายคนต้องหันมาสนใจ ติดตาม และทดลองใช้ storage ตัวนี้กัน โดยถ้าหากเปรียบเทียบกับ storage ในท้องตลาดแล้วจะพบว่า Ceph Storage มีคุณสมบัติและความสามารถที่มากกว่า หรือเทียบเท่า storage ส่วนใหญ่ทั้งหมด และที่สำคัญที่สุด คือ Ceph Storage license นั้น ฟรีไม่มีค่าใช้จ่ายเนื่องจากเป็น Open Source แต่ก็ยังมีบริษัทมากมายที่ นำ Ceph มา package ร่วมเป็นส่วนหนึ่งของผลิตภัณท์ขายเช่นกัน ซึ่งก็จะเป็นทางออกให้องค์กรที่ต้องการใช้ Ceph แต่ยังต้องการ commercial support ครับ

แต่ส่ิงที่น่าสนใจที่สุดสำหรับ Ceph ก็คือเราสามารถปรับค่าของระบบให้สามารถทำงานได้ทั้งงานแบบที่ต้องการความเร็วของการเขียนข้อมูลสูงๆ (high write transaction rate หรือ IOPS สูง) อย่างในงานพวก Database หรือ Log เก็บข้อมูลทั้งหลาย ไปจนถึงงานที่ต้องการความเร็วในการอ่านพร้อมกับความปลอดภัยสูงๆ ซึ่งก็น่าจะเหมาะกับงานเก็บข้อมูลที่นานๆครั้งจะทำการเปลี่ยนแปลง ไม่ว่าจะเป็น ระบบเก็บข้อมูลของ e-commerce catalog หรืองานเก็บข้อมูลย้อนหลังทางบัญชีทั้งหลาย โดยมีการจัดเก็บข้อมูลหลายชุดพร้อมๆกัน ซึ่งใช้ความสามารถในการทำ replication แบบอัตโนมัติของ Ceph เรียกได้ว่า Ceph ระบบเดียวสามารถนำมาใช้ตอบโจทย์ได้หลายอย่างทีเดียว

ในตอนต่อไปผมจะอธิบายลงลึกไปถึง architecture ต่างๆของ Ceph Storage ว่าภายในประกอบกันอย่างไร และแต่ละส่วนทำงานร่วมกันอย่างไร เพื่อให้เข้าใจถึงเหตุผลเบื้องหลังความสามารถที่หลากหลายของ Ceph Storage แล้วต่อจากนั้นผมจะเล่าถึงประสบการณ์การติดตั้งและใช้งาน Ceph Storage เบื้องต้น กับเรื่องราวน่าสนใจที่ผมไปประสบพบเจอมาครับ