Ceph Storage Cluster Troubleshooting แก้ปัญหา

Ceph Storage Cluster Troubleshooting แก้ปัญหา

Ceph เป็น distributed storage system ที่ซับซ้อน การ troubleshoot ปัญหาต้องเข้าใจ architecture และรู้จักเครื่องมือที่ใช้วินิจฉัย บทความนี้รวบรวมปัญหาที่พบบ่อยในการดูแล Ceph cluster ทั้ง OSD failures, slow requests, PG issues, network problems และ performance degradation พร้อมวิธีแก้ไขแบบ step-by-step และ Python scripts สำหรับ automated health checks เหมาะสำหรับ system administrators และ DevOps engineers ที่ดูแล Ceph clusters
PG (Placement Group) Issues

Performance Tuning
# performance.py — Ceph performance tuning import json import random class PerformanceTuning: TUNING = { "osd_journal": { "name": "OSD Journal/WAL on SSD", "description": "ใช้ SSD สำหรับ BlueStore WAL+DB แยกจาก HDD data", "impact": "Write latency ลดลง 50-80%", "command": "ceph-volume lvm create --data /dev/sdb --block.wal /dev/nvme0n1p1 --block.db /dev/nvme0n1p2", }, "recovery_speed": { "name": "Recovery/Backfill Speed", "description": "ปรับ speed ของ recovery ให้เหมาะสม (ไม่กระทบ client I/O)", "impact": "Balance recovery speed vs client performance", "command": "ceph tell 'osd.*' config set osd_recovery_max_active 3", }, "pg_count": { "name": "PG Count Optimization", "description": "ตั้ง PG count ให้เหมาะ: (OSDs × 100) / replicas → round up to power of 2", "impact": "กระจาย data ได้ดีขึ้น ลด hotspots", "command": "ceph osd pool set pg_num 256", }, "network": { "name": "Network Optimization", "description": "แยก public network (client) กับ cluster network (replication)", "impact": "Replication ไม่กระทบ client traffic", "command": "ceph config set global cluster_network 10.0.1.0/24", }, "cache_tier": { "name": "Cache Tier (SSD ↔ HDD)", "description": "ใช้ SSD pool เป็น cache หน้า HDD pool", "impact": "Read performance ดีขึ้น 5-10x สำหรับ hot data", "command": "ceph osd tier add hdd-pool ssd-pool && ceph osd tier cache-mode ssd-pool writeback", }, } def show_tuning(self): print("=== Performance Tuning ===\n") for key, tune in self.TUNING.items(): print(f"[{tune['name']}]") print(f" {tune['description']}") print(f" Impact: {tune['impact']}") print() def benchmark(self): print("=== Benchmark Commands ===") cmds = [ "rados bench 60 write -p testpool --no-cleanup", "rados bench 60 seq -p testpool", "rados bench 60 rand -p testpool", "rbd bench --io-type write --io-size 4K --io-total 1G testpool/testimg", "fio --name=ceph-test --ioengine=rbd --pool=testpool --rbdname=testimg --iodepth=32 --rw=randwrite --bs=4k --runtime=60", ] for cmd in cmds: print(f" $ {cmd}") perf = PerformanceTuning() perf.show_tuning() perf.benchmark()FAQ - คำถามที่พบบ่อย
Q: HEALTH_WARN แต่ทุกอย่างทำงานปกติ ต้องแก้ไหม?
เนื้อหาเกี่ยวข้อง — ทำความเข้าใจ Fivetran Connector Site Reliability SRE
A: ควรแก้ HEALTH_WARN ทั่วไป: clock skew (sync NTP), nearfull OSD (เพิ่ม storage), noout flag set (ลืมถอด flag) บาง WARN ไม่เร่งด่วน: too few PGs (ปรับเมื่อ maintenance) แต่ WARN อาจกลายเป็น ERROR ถ้าปล่อยนาน ดู ceph health detail เสมอ
Q: OSD down แล้วจะสูญเสียข้อมูลไหม?
แนะนำเพิ่มเติม — บทวิเคราะห์จาก XM Signal
เนื้อหาเกี่ยวข้อง — บทความที่เกี่ยวข้อง: đầu tư vàng nên mua loại nào
A: ไม่ ถ้าใช้ replication 3x (default) ต้อง OSD down 3 ตัวที่เก็บ data เดียวกันพร้อมกันถึงจะสูญเสีย Ceph จะ auto-recover เมื่อ OSD กลับมา ถ้า OSD down นาน (> 10 นาที default): Ceph เริ่ม recovery ไป OSD อื่น สำคัญ: อย่าให้ usage > 80% (ต้องมี space สำหรับ recovery)
Q: Recovery ช้ามาก ทำอย่างไร?
แนะนำเพิ่มเติม — คู่มือเทรดจาก SiamCafeBook
เนื้อหาเกี่ยวข้อง — ดูเพิ่มเติมเรื่อง REST API Design Machine Learning Pipeline
A: ปรับ recovery speed: ceph tell osd.* config set osd_recovery_max_active 5 เพิ่ม backfill: ceph tell osd.* config set osd_max_backfills 3 ลด priority: ceph tell osd.* config set osd_recovery_sleep 0.1 (ช้าลงแต่ไม่กระทบ client) ข้อควรระวัง: recovery เร็ว = client I/O ช้า, ต้อง balance
Q: ควร deep-scrub บ่อยแค่ไหน?
เนื้อหาเกี่ยวข้อง — แนะนำให้อ่าน Wallet แปลว่าอะไร — ข้อมูลครบถ้วน 2026
A: Default: ทุก 7 วัน (osd_deep_scrub_interval) แนะนำ: ไม่เปลี่ยนจาก default Deep-scrub ตรวจ data integrity (checksum verify) ใช้ I/O มาก — schedule ช่วง low-traffic Manual: ceph pg deep-scrub เมื่อสงสัย data corruption




