Ceph Client – Part II: RBD

RBD

RBD
(adapted from: https://www.slideshare.net/buildacloud/ceph-intro-and-architectural-overview-by-ross-turk)

Ceph Block Device หรือที่เรียกว่า RBD (ย่อมาจาก RADOS Block Device) เป็น Ceph client ประเภทหนึ่งที่ใช้กันอย่างแพร่หลายมาก อธิบายอย่างง่ายๆ คือ เป็น client ที่อนุญาตให้ผู้ใช้งานใช้งาน Ceph Storage ในลักษณะเดียวกับ SAN (Storage Area Network) ได้นั่นเอง และด้วยความสามารถในการทำ snapshot และ layering ทำให้สามารถ clone virtual machine image ได้รวดเร็วมาก เหมาะเป็นอย่างยิ่งสำหรับงานประเภท hypervisor โดยเฉพาะในระบบจำพวก CloudStack หรือ OpenStack

 

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

การใช้งาน Ceph Block Device (RBD)

เมื่อใช้ RBD ผู้ใช้สามารถจำลอง block device ขึ้นมาและเชื่อมต่อใช้งานกับเครื่องของผู้ใช้ได้โดยตรง เสมือนมี hard disk drive นั้นอยู่ที่เครื่องตนเอง (ลักษณะเช่นเดียวกับการใช้งาน SAN ทั่วไป) ในการใช้งานผู้ใช้สามารถสร้าง block device image (ไฟล์ที่จำลอง block device) ขึ้นมาผ่าน RBD โดยสามารถกำหนดขนาดได้ตามต้องการ เช่น 1TB หรือ 100TB เป็นต้น โดยขนาดของ block device image นี้สามารถขยายในภายหลังได้อีกด้วย และเมื่อสร้างไฟล์จำลอง block device ขึ้นมาแล้ว ผู้ใช้เพียงแค่ map block device นั้นเข้ามาที่เครื่องของตนโดยอาศัย RBD kernel module (KRBD) และ format เป็น file system ที่ต้องการใช้ เช่น xfs, ext4 หรือ NTFS และใช้งานได้ทันทีเหมือน hard disk drive ทั่วๆ ไป ที่ยิ่งไปกว่านั้นคือ RBD ถูกออกแบบมาให้ทำงาน ร่วมกับ Cinder, Glance และ Nova ใน OpenStack ได้เป็นอย่างดี ทำให้ผู้ใช้ OpenStack นิยมเลือก Ceph Storage เป็นระบบจัดการ block device เพราะไม่ต้องเสียค่าใช้จ่ายสูงเหมือนการติดตั้ง SAN ทั่วไป อีกทั้งยังได้ความสามารถที่เหนือกว่าอีกด้วย เช่น การจัดการดูแลตัวเอง กระจาย workload ตรวจหาและซ่อมข้อผิดพลาดได้เอง เป็นต้น ซึ่งความสามารถเหล่านี้ได้มาจาก RADOS นั่นเอง

RBD เก็บข้อมูลอย่างกระจายตัวใน RADOS

สำหรับการทำงานภายในของ RBD เมื่อผู้ใช้สร้างและใช้งานไฟล์ image ของ block device ที่สร้างขึ้นมา RBD จะทำการแบ่งไฟล์ image นั้นออกเป็นชิ้นๆ และกระจายกันเก็บอยู่ใน RADOS cluster ซึ่งเป็นการกระจาย workload ของการอ่านและบันทึกข้อมูลออกไปยัง node ต่างๆใน Ceph Storage Cluster   จึงส่งผลให้ block device ที่สร้างจาก RBD นั้นทำงานได้อย่างมีประสิทธิภาพ

เมื่อมีการเรียกใช้งานข้อมูลภายใน block device ผ่าน RBD เช่น เปิดไฟล์หนึ่งที่เก็บอยู่ใน block device นั้น RBD kernel module (KRBD) จะตรวจสอบว่าข้อมูลดังกล่าวมีใน cache ของตนเองหรือไม่ หากไม่พบ KRBD จะส่งคำสั่งอ่าน RADOS object ที่เก็บข้อมูลที่ต้องการไปยัง RADOS cluster โดยผ่านทาง librados จากนั้นเมื่อ RADOS cluster อ่าน RADOS object จาก OSD node ต่างๆ ภายใน cluster ตามที่ร้องขอมาและส่งกลับไปยัง KRBD แล้ว KRBD จะประกอบข้อมูลและส่งต่อให้ผู้ใช้เป็นลำดับต่อไป ดังที่แสดงอยู่ในแผนภาพด้านบน

Snapshot and Layering

นอกจากความสามารถที่ติดมากับ RADOS cluster แล้ว RBD ยังมีความสามารถที่น่าสนใจของตัวเองอีกด้วย เช่น snapshot, layering เป็นต้น

RBD สามารถทำ snapshot ของ block device image ได้ (snapshot คือ สำเนาของ block device image ณ เวลาที่ทำ snapshot) โดยการทำ snapshot อนุญาตให้ผู้ใช้สามารถย้อนสถานะของ block device กลับไปยัง snapshot ที่ทำไว้ได้ หรือ กล่าวง่ายๆ คือ ทำให้ผู้ใช้ย้อนเวลากลับไปได้นั่นเอง เช่น เมื่อลบไฟล์สำคัญอย่างไม่ตั้งใจ หรือข้อมูลเกิดเสียหายขึ้น ก็สามารถย้อนกลับไปยัง snapshot ที่ทำไว้ก่อนหน้า ณ เวลาที่ไฟล์สำคัญนั้นยังมีอยู่ หรือข้อมูลยังคงถูกต้องสมบูรณ์อยู่ได้

นอกจากนี้ RBD ยังสามารถทำ copy-on-write (COW) clone ออกมาจาก snapshot โดยอาศัยความสามารถของการทำ layering ได้อีกด้วย กล่าวคือ RBD จะทำ layer ขึ้นมาบน snapshot ที่ทำไว้ก่อนหน้า ซึ่งจะถูกมองเป็น block device image อันใหม่ โดยขั้นตอนนี้ใช้เวลาน้อยมาก (แทบจะทันที) เพราะ layer ที่สร้างมาเป็น layer เปล่าๆ นอกจากนี้ยังใช้พื้นที่น้อยอีกด้วย เพราะ layer ที่สร้างมาใหม่นั้นจะใช้พื้นที่ก็ต่อเมื่อมีการแก้ไขข้อมูลลงไปใน block device image ที่ clone ออกมา

Copy-on-write Cloning

Copy-on-write Cloning
(adapted from: https://www.slideshare.net/buildacloud/ceph-intro-and-architectural-overview-by-ross-turk)

ดังที่แสดงในรูปข้างต้น เมื่อมีการอ่านข้อมูล หากยังไม่มีข้อมูลในชั้น layer นั้น ข้อมูลจะถูกอ่านขึ้นมาจากชั้น snapshot สำหรับการเขียนข้อมูล ข้อมูล block ที่ถูกแก้ไข จะถูก copy ไปยัง layer ชั้นบนก่อน และทำการแก้ไข block ข้อมูลใน layer นั้น (ด้วยเหตุนี้จึงเรียกว่า copy-on-write)  ความสามารถนี้ เหมาะเป็นอย่างมากกับการนำไปใช้งานกับ hypervisor (RBD ถูกออกแบบมาให้ทำงานได้กับ QEMU/KVM) โดยเฉพาะในการทำ golden VM image หรือ image ของ virtual machine ต้นฉบับ ซึ่งสามารถทำเป็น snapshot ไว้ได้ และเมื่อต้องการสร้าง virtual machine เครื่องใหม่ ผู้ใช้เพียงแค่ COW clone snapshot นั้นออกมา ก็จะได้ virtual machine ใหม่ขึ้นมาใช้ทันที

 

Ceph Block Device หรือ RBD ก็เป็นอีกหนึ่ง Ceph client ที่ใช้กันอย่างแพร่หลายในปัจจุบันนี้ ด้วยความสามารถของ RADOS ที่ทำให้ข้อมูลนั้นมีความปลอดภัย และเข้าถึงได้อย่างมีประสิทธิภาพ ผนวกกับ ความสามารถในการทำ copy-on-write cloning ทำให้ RBD เหมาะกับการใช้งานกับ hypervisor หรือระบบ cloud โดยเฉพาะในแวดวง OpenStack และ CloudStack นอกจากนี้ยังสามารถนำไปใช้งานในลักษณะของ SAN ในองค์กรทั่วไปได้อีกด้วย

 

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