Ceph — block, object va file storage xizmatlarini bitta distributed storage platformada taqdim etadigan ochiq kodli tizim. U ko‘p server va disklarni yagona storage clusterga birlashtiradi. Ceph katta private cloud, virtualization, Kubernetes va data center infratuzilmalarida ishlatiladi.
Ceph markaziy bitta storage controllerga tayanmasdan ma’lumotni cluster bo‘ylab taqsimlashga intiladi.
RADOS
Cephning asosiy storage qatlami RADOS deb ataladi.
U objectlarni cluster bo‘ylab saqlaydi va replication yoki erasure coding bilan himoya qiladi.
Yuqori qatlamlar block, object va file APIlarini shu asosda taqdim etadi.
RADOS client ma’lumot joylashuvini cluster map orqali topadi.
OSD
Object Storage Daemon disk yoki storage device’ni boshqaradi.
OSD:
- object saqlash;
- replication;
- recovery;
- rebalancing;
- scrub;
- heartbeat
vazifalarida qatnashadi.
Ko‘pincha har disk uchun alohida OSD ishlatiladi.
Monitor
Ceph Monitor cluster map va quorumni saqlaydi.
U OSD, monitor va boshqa service holatini biladi.
Bir nechta monitor quorum hosil qiladi.
Monitor barcha data trafikini o‘tkazmaydi; client map olgach OSDlar bilan bevosita ishlaydi.
Manager
Ceph Manager runtime metric, module va boshqaruv imkoniyatlarini taqdim etadi.
Dashboard, monitoring exporter va orchestrationga oid funksiyalar manager moduli orqali ishlashi mumkin.
Manager failure data pathni darhol to‘xtatmasligi mumkin, ammo boshqaruv imkoniyatlari cheklanadi.
Placement Group
Objectlar bevosita har bir OSDga qo‘lda map qilinmaydi.
Ular placement grouplarga biriktiriladi.
Placement grouplar keyin OSD setlariga joylashtiriladi.
Bu millionlab objectni boshqarish va rebalancingni soddalashtiradi.
PG soni noto‘g‘ri tanlansa performance va operatsion muammo yuz beradi.
CRUSH
CRUSH algoritmi object joylashuvini hisoblaydi.
U fizik topology’ni hisobga olishi mumkin:
- disk;
- host;
- rack;
- room;
- data center.
Replication nusxalari bir xil host yoki rackda qolib ketmasligi uchun failure domain rule bilan belgilanadi.
Pool
Pool objectlar uchun mantiqiy storage hududi.
Har pool:
- replication yoki erasure coding;
- placement rule;
- PG soni;
- quota;
- application type
ga ega.
RBD, CephFS va object gateway alohida poollardan foydalanishi mumkin.
Replication
Replicated pool bir objectning bir nechta nusxasini turli OSDlarda saqlaydi.
Masalan, uch nusxali model disk yoki host failure’iga chidamlilik beradi.
Storage xarajati yuqori.
Write acknowledgement policy durability va latencyga ta’sir qiladi.
Erasure coding
Data va parity shardlarga bo‘linadi.
Replicationga qaraganda kamroq storage overhead bilan fault tolerance beradi.
CPU va network xarajati yuqoriroq bo‘lishi mumkin.
Kichik random write va metadata workloadlar uchun alohida replicated pool kerak bo‘lishi ehtimoli bor.
RBD
RADOS Block Device virtual machine yoki container uchun block volume beradi.
RBD image:
- snapshot;
- clone;
- thin provisioning;
- resize;
- replicationga oid imkoniyat
bilan ishlashi mumkin.
Hypervisor yoki Kubernetes CSI orqali ulanadi.
CephFS
POSIXga yaqin distributed file system.
Metadata server file nomi, directory va permissionlarni boshqaradi.
File data RADOS poolda saqlanadi.
Metadata server HA va cache behaviori file workload performance’iga ta’sir qiladi.
Object Gateway
S3 va Swiftga yaqin object API taqdim etuvchi gateway qatlam mavjud.
Bucket, user, policy va multipart upload bilan ishlaydi.
Gateway stateless tarzda ko‘paytirilishi mumkin.
Metadata va objectlar Ceph poollarida saqlanadi.
Recovery
OSD yo‘qolsa cluster missing replica yoki shardlarni boshqa OSDlarda tiklaydi.
Recovery network va disk I/O’ni band qiladi.
Client workload bilan recovery o‘rtasida priority va throttle sozlanadi.
Failure vaqtida performance pasayishi normal.
Rebalancing
Yangi disk qo‘shilganda yoki OSD weight o‘zgarganda data qayta taqsimlanadi.
CRUSH barcha objectni markaziy catalog orqali ko‘chirmasdan yangi placementni hisoblaydi.
Rebalancing katta clusterda uzoq davom etishi mumkin.
Capacity oldindan rejalashtiriladi.
Scrubbing
OSDlar object metadata va content consistency’sini tekshiradi.
Deep scrub checksum va diskdagi buzilishni topishga yordam beradi.
Scrub disk yukini oshiradi.
Schedule production workloadga moslanadi.
BlueStore
Ceph OSD uchun storage backend sifatida raw block device bilan ishlaydigan arxitektura qo‘llanadi.
Metadata alohida tez device’da saqlanishi mumkin.
WAL va database joylashuvi write performance’iga ta’sir qiladi.
Disk class va hardware mos tanlanadi.
Network
Ceph juda ko‘p east-west trafik yaratadi:
- client I/O;
- replication;
- recovery;
- heartbeat;
- rebalancing.
Past latency va yetarli bandwidth muhim.
Public va cluster network alohida bo‘lishi mumkin, ammo architecture va hardwarega bog‘liq.
Capacity
Cluster to‘lib qolsa recovery va write uchun bo‘sh joy qolmaydi.
Near-full va full thresholdlar mavjud.
Raw capacity bilan usable capacity bir xil emas.
Replication, erasure coding, reserve va metadata hisobga olinadi.
Monitoring
Muhim signallar:
- cluster health;
- PG holati;
- slow operation;
- OSD down;
- latency;
- capacity;
- recovery;
- scrub error;
- network.
Faqat HEALTH_OK application latency’si yaxshi degani emas.
Failure domain
Replica nusxalari faqat boshqa diskda emas, boshqa host yoki rackda joylashishi kerak. CRUSH rule shu darajani belgilaydi. Uch replica bitta hostdagi uch diskda bo‘lsa host failure’da barcha nusxa yo‘qoladi.
Upgrade
Ceph service’lari rolling tarzda yangilanishi mumkin, ammo version compatibility va health talab qilinadi. Recovery yoki degraded holatda upgrade boshlash xavfli. Avval cluster sog‘lomligi va backup tekshiriladi.
Bog‘liq tushunchalar
Ceph, RADOS, OSD, Ceph Monitor, CRUSH, Placement Group, RBD, CephFS, Object Gateway, Erasure coding, Distributed storage