CephFS กับจำนวนไฟล์ใน Directory ได้แค่ 1 แสนไฟล์นะเธอว์

qq20150903-12x

ผมมีภาระกิจแก้กรรมที่ทำไว้กับเว็ปใหญ่แห่งหนึ่ง ตอนที่ย้ายมาใช้ WordPress ก็เอาทุกอย่างยัดไว้ใน container เดียว แล้วขนาดมันก็โตไปถึง 100GB พอจะ scale ให้มี Backend หลายๆตัวก็ต้องย้ายทุกอย่างออกมาไว้บน Distributed FS ซึ่งแน่นอนผมเป็นโรคบ้า CephFS อยู่แล้วคงไม่เลือกตัวอื่น เมื่อจัดการสร้าง Ceph Cluster เสร็จ ก็ mount เข้ามาใช้แบบ CephFS แล้วทำงาน rsync ปล่อยไปหลายชั่วโมง ตื่นมาก็พบว่านิ่งไปเฉยๆ กลับไปไล่ดู Log ที่ฝั่ง Ceph ก็ไม่เจออะไร แต่ฝั่ง rsync มี error “No space left on device” เอาล่ะสิ ชักแปลกๆ ทดสอบ rsync ข้าม Server ทิ้งไว้ข้ามคืน ก็ไม่ error แฮะ ความลำบากคือทดสอบอะไรแต่ละทีมันใช้เวลาข้ามคืน ถึงจะเห็น error ใช้เวลาหลายวัน สุดท้ายก็พบว่า ข้อกำหนดนึงของ CephFS คือ MDS server มันกำหนดให้มีไฟล์ได้แค่ 100,000 ไฟล์ต่อ Directory ตามค่า Directory fragmentation ถ้าต้องการเปิดให้ทำงานมากกว่านี้ สามารถกำหนดผ่าน config ได้ แต่ควรขยาย cache size ขึ้นไปด้วย

[mds]
mds bal frag = true
mds cache size = 2000000

Credit ภาพ จาก http://www.wzxue.com/cephfs-update/