จำนวนไฟล์ต่อไดเรกทอรี


19

ฉันมีไดเรกทอรีที่มีไฟล์ขนาดเล็กประมาณ 100,000 ไฟล์ (แต่ละไฟล์มีตั้งแต่ 1-3 บรรทัดแต่ละไฟล์เป็นไฟล์ข้อความ) ขนาดไดเรกทอรีไม่ใหญ่มาก (<2GB) ข้อมูลนี้อาศัยอยู่ในเซิร์ฟเวอร์ NFS ที่ดูแลอย่างมืออาชีพ เซิร์ฟเวอร์รัน Linux ฉันคิดว่าระบบไฟล์ ext3 แต่ฉันไม่รู้แน่นอน นอกจากนี้ฉันไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้

ไฟล์เหล่านี้เป็นผลลัพธ์ของการทดลองทางวิทยาศาสตร์ขนาดใหญ่ซึ่งฉันไม่สามารถควบคุมได้ อย่างไรก็ตามฉันต้องวิเคราะห์ผลลัพธ์

การดำเนินการ / การประมวลผล I / O ใด ๆ ในไดเรกทอรีนี้ช้ามาก การเปิดไฟล์ (fopen ใน python) การอ่านจากไฟล์ที่เปิดปิดไฟล์ทั้งหมดช้ามาก ใน bash ls, du ฯลฯ ไม่ทำงาน

คำถามคือ:

จำนวนไฟล์สูงสุดในไดเรกทอรีในลีนุกซ์ในทางที่เป็นไปได้ในการประมวลผล, fopen, อ่าน, ฯลฯ คืออะไร? ฉันเข้าใจว่าคำตอบนั้นขึ้นอยู่กับหลาย ๆ อย่าง: ประเภท fs, รุ่นเคอร์เนล, รุ่นของเซิร์ฟเวอร์, ฮาร์ดแวร์ ฯลฯ ฉันต้องการกฎง่ายๆถ้าเป็นไปได้


6
Giles ตอบคำถามโดยตรงของคุณ แต่โดยรวมแล้วระบบไฟล์ Linux ทำให้การทดแทนที่ไม่ดีสำหรับฐานข้อมูลเมื่อคุณใช้ชื่อไฟล์เป็นกุญแจสำหรับบิตของข้อมูลขนาดเล็ก คุณไม่ได้ควบคุมการสร้าง แต่คุณสามารถโพสต์ข้อมูลลงในแบบฟอร์มที่คล้อยตามการวิเคราะห์มากขึ้น ถ้าคุณทำไม่ได้คุณจะจ่ายเงินค่าโสหุ้ยระบบไฟล์ทุกขั้นตอน คุณสามารถลดค่าใช้จ่าย แต่คุณอาจจะมีความสุขที่สุดถ้าคุณกำจัดมัน
msw

นอกจากนี้ดูstackoverflow.com/questions/466521/
Cristi

คำตอบ:


22

ในขณะที่คุณคาดการณ์มันจะขึ้นอยู่กับหลายสิ่งหลายอย่างส่วนใหญ่เป็นประเภทระบบแฟ้มและตัวเลือกและในระดับเคอร์เนลรุ่น ในซีรี่ส์ ext2 / ext3 / ext4 มีการปรับปรุงครั้งใหญ่เมื่อมีdir_indexตัวเลือกปรากฏขึ้น (บางครั้งหลังจากรีลีสเริ่มต้นของ ext3): มันทำให้ไดเรกทอรีถูกเก็บไว้เป็นแผนผังการค้นหา (การเข้าถึงเวลาแบบลอการิทึม) แทนที่จะเป็นรายการเชิงเส้น ) นี่ไม่ใช่สิ่งที่คุณสามารถเห็นได้ผ่าน NFS แต่ถ้าคุณมีผู้ติดต่อกับผู้ดูแลระบบคุณสามารถขอให้พวกเขาเรียกใช้tune2fs -l /dev/something |grep features(อาจโน้มน้าวให้พวกเขาอัปเกรด?) เฉพาะจำนวนไฟล์เท่านั้นที่มีความสำคัญไม่ใช่ขนาดของไฟล์

ถึงแม้จะมีdir_index100,000 คนก็ยังรู้สึกใหญ่ เป็นการดีที่จะได้รับผู้เขียนของโปรแกรมที่สร้างไฟล์เพื่อเพิ่มระดับของไดเรกทอรีย่อย เพื่อไม่ให้ประสิทธิภาพลดลงฉันจะแนะนำขีด จำกัด ประมาณ 1,000 ไฟล์ต่อไดเรกทอรีสำหรับ ext2 หรือ ext3 ที่ไม่มีdir_indexและ 20,000 ด้วยdir_indexหรือ reiserfs หากคุณไม่สามารถควบคุมวิธีการสร้างไฟล์ได้ให้ย้ายไฟล์เหล่านั้นไปยังไดเรกทอรีอื่นก่อนทำสิ่งอื่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.