Storage เป็นส่วนที่สำคัญในการเก็บข้อมูล ซึ่งการเก็บข้อมูลนั้นจะต้องใส่ใจว่าข้อมูลจะต้องไม่หายซึ่งก็จะมี solution ในการเก็บที่มากมายหลากหลายรูปแบบ แต่ในครั้งนี้จะเราจะมาพูดถึงเรื่องของ Ceph ที่เป็นหนึงใน Solution Open source ที่ใช้งานได้ดีเลยทีเดียว
Ceph คืออะไร
Ceph คือ Open Source solution ที่นำมาใช้งานเพื่อให้บริการ storage pool ที่สามารถนำมาให้บริการในเรื่องของ object storage เพื่อให้บริการในการเก็บไฟล์ข้อมูล โดยจะมีสถานะเป็น container เก็บข้อมูล เปรียบเทียบกับ AWS S3 และ block storage เพื่อให้บริการกับ VM ก็ได้เช่นกัน
Ceph มี feature หลัก ๆ อะไรบ้าง ?
- Data Prevention Loss Ceph สามารถทำ Replication ข้อมูลได้โดยใช้ OSD ที่มีอยู่ภายในระบบ ซึ่งต้องมีขั้นต่ำที่ OSD 3 OSD
- Quota Management จำกัดและแบ่งการใช้งานให้กับแต่ละผู้ใช้งานได้อย่างง่าย หรือจะแบ่งเป็น Pool ใส่ข้อมูลก็ยังได้
- File Sharing ทำ Drive ไว้สำหรับ share file เพื่อแชร์ไฟล์ใช้ในองค์กรณ์ก็ได้
- Multi Protocol Support Ceph รองรับการให้บริการในหลากหลายรูปแบบไม่ว่าจะเป็น RADOS Gateway, ISCSI, NFS เป็นต้น

ข้อดี-ข้อเสีย ของ Ceph
- เป็น Open source ไม่มีค่าใช้จ่ายสำหรับตัวซอฟต์แวร์
- สามารถให้บริการได้หลากหลายรูปแบบ (Block, Object, Filesystem)
- สามารถขยายระบบได้ง่าย เพียงเติมเครื่องเข้าระบบ ง่ายสุดๆไปเลย
- ใช้ Hardware ทั่ว ๆ ไป ไม่จำเป็นต้องเป็น Hardware เฉพาะแต่ละส่วน (High Availability) ไม่ว่าจะเป็น MON, MDS หรือ OSD
ข้อเสียของ Ceph นั้นจะเปลืองดิสก์กว่า Storage แบบปกติ เนื่องจากการเก็บ ข้อมูลของ Ceph ที่จะเก็บข้อมูลสำรองไว้ 2–3 ชุด สำหรับ High Availablity เพื่อให้มั่นใจว่าถ้าหากบางเครื่องในระบบมีปัญหาก็จะยังคงสามารถอ่านเขียนข้อมูลจาก Ceph ได้ โดยไม่ต้องปิดระบบนั้นเอง
อีกอย่าง Ceph ยังมีการใช้งานในรูปแบบของ Bluestore ซึ่งเป็นแบบของ Block Storage โดยตรงโดยที่จะใช้ CephFS ในการจัดการ ดังนั้นถ้า disk ยิ่งมีขนาดใหญ่ทำให้ Server ที่มาให้บริการยิ่งต้องใช้ RAM มากขึ้น โดยการคำนวนง่าย ๆ จาก Recommend ของ Redhat คือ Disk 1 TB ต้องใช้ RAM 1 GB สมมุติว่า Server มี Disk 30 TB ต้องใช้ RAM 30 GB เพื่อให้ CephFS ใช้งานด้วย

จากรูปนี้คือตัว Ceph นั้นจะมีส่วนที่สำคัญอยู่ที่ตัวคือ Ceph Monitor ซึ่งเป็นตัวที่ไว้จัดการ สถานะของ Node ที่อยู๋ภายใน Cluster ของตัวเองซึ่งตัว Ceph เนี่ยจะมีตัวหลัก ๆ คือ ceph-mon ที่เอาไว้เชื่อมระหว่างไฟล์ที่อยู่ใน CephFS กับไฟล์จริง ๆ ภายใน disk โดยตัว ceph-mon เนี่ยจะทำงานคู่กับ ceph-mds (ceph metadata server) ที่ใช้บอกสถานะของ file แต่ละ object ที่อยู่ภายใน cluster ว่ามีสถานะอะไร เช่น up, damaged, lost เป็นต้น ซึ่ง ceph จะมี algorithm นึงที่ชื่อว่า ceph CRUSH algorithm ซึ่งมาจาก ceph Controlled Replication Under Scalable Hashing algorithm โดยตัวของ algorithm นี้จะทำการ Map object ว่า object นี้อยู่ที่ OSD หรือ disk ลูกไหนภายใน cluster โดยในการตั้งค่านั้นจะมีสิ่งที่เรียกว่า CRUSH rules ถ้าเอาให้เข้าใจแบบง๊ายยยย ง่ายสุดคือเป็นการบอก Ceph ว่าจะมีการทำ replication data กี่ชุด มี ssd กี่ลูก hdd กี่ลูกในระบบ ซึ่งการตั้งนี้จะส่งผลต่อการเขียน data ลง disk การทำ replication ข้อมูลซึ่งจะส่งผลต่อพื้นที่ ที่ใช้งานได้ของ cluster อีกด้วย

โดยตัวของ Ceph เองนั้นสามารถให้บริการได้ 2 รูปแบบโดยที่ชื่อว่า File store mode และ Blue store mode ซึ่งทั้งสองตัวนี้ข้อแตกต่างคือ File store จะให้บริการผ่าน File System แบบปกติของ Linux เลย ส่วน Blue Store จะให้บริการผ่าน CephFS (Ceph File System) โดยภายในนั้นจะมี RockDB เก็บ Metadata และมีการลด Latency เพิ่มจาก File Store เพื่อให้บริการในรูปแบบของ Block Storage ได้ ซึ่งแน่นอนว่าการลด Latency นั้นจะต้องใช้ Storage ที่มีความเร็วสูง และแน่นอนว่า SSD ยังไม่เร็วพอ ซึ่งในส่วนที่เร็วพอนั้นคือ RAM นั่นเอง นี่คือสาเหตุว่าถ้าใช้ Ceph แล้วเปิดไปที่ Blue Store ทำไมถึงใช้ RAM เยอะ ถ้ามี Disk เยอะนั่นเอง

อ่ะมาดูดีกว่าหลังจากเล่าไปละว่าถ้าเอามาใช้งานจริง ๆ มันจะเป็นไงบ้าง โดยครั้งนี้จะเอาส่วนของ Ceph ใน Proxmox มาดูกันว่าเวลาใช้งานที่บอกว่าเอาให้ vm ใช้งานอ่ะมันเป็นยังไง

อย่างใน Proxmox จะมองตัว RBD เป็น Storage ตัวนึงที่สามารถเอา Disk ของ instance ลงไปเขียนไว้ในนี้ก็ได้ อีกทั้งยังสามารถทำให้การ migrate vm นั้นทำได้รวดเร็วจนสามารถทำ live migrate ได้อีกด้วย
อีกตัวอย่างนึงที่ Openstack นำมาใช้งานได้คือการเอา Ceph มาเป็น Backing Storage โดยที่จะมีการใช้ Object Gateway ของ Ceph ผ่าน Keystone เพื่อบันทึกข้อมูลและ Swift เพื่อให้บริการในส่วนของ Bucket ในการเก็บข้อมูล ยังมี Ceph Block Device เพื่อให้ Cinder มาจัดการ Volume ให้ VM Glance มาเก็บ image ของ Openstack ลงใน Ceph และสุดท้ายคือ Nova ที่ให้ Guest VM มาใช้งาน Disk ของ Ceph ได้

สรุป Ceph Storage เหมาะกับใช้งานอย่างไร?
Feature ของ Ceph Storage ข้างบนอาจจะทำให้หลายคนหันมาสนใจ และทดลองใช้ storage ตัวนี้กัน หากเปรียบเทียบกับ storage เจ้าอื่นๆจะพบว่า Ceph Storage มีคุณสมบัติหลากหลาย หรือ แทบจะเท่ากับ storage ส่วนใหญ่ทั้งหมด และที่สำคัญที่สุดเป็น Open source ไม่ต้อเสียค่าใช้จ่ายในการซื้อ license นั้น ฟรี!
