จำนวนไฟล์สูงสุดที่โฟลเดอร์ Unix สามารถเก็บไว้คือเท่าใด


20

จำนวนไฟล์สูงสุดที่โฟลเดอร์ Unix สามารถเก็บไว้คือเท่าใด

ฉันคิดว่ามันจะเหมือนกับจำนวนไฟล์


3
คำถามที่ดีกว่านี้อาจเป็น: ฉันควรใช้กี่คน? stackoverflow.com/questions/466521/…
Joachim Sauer

1
ฉันชอบที่จะให้ url เว็บไซต์ของฉันดูเหมือนกับ site.com/username/ และอื่น ๆ แต่คิดว่า (ถ้าฉันโชคดี) จะได้รับผู้ใช้มากกว่า 2 ล้านคนที่เป็นมากกว่า 2 ล้านโฟลเดอร์เนื่องจากฉันไม่ได้ ต้องการที่จะใช้สคริปต์เช่น PHP กับ modrewrite ฉันกำลังมองไปที่ possibilitie อื่น ๆ ของโฟลเดอร์ในโฟลเดอร์

1
ทำสิ่งที่คุณชื่นชอบและสร้างไดเรกทอรีย่อยด้วยรูปแบบการเขียนใหม่
Peter Eisentraut

คำตอบ:


19

แตกต่างกันไปตามระบบไฟล์http://en.wikipedia.org/wiki/Comparison_of_file_systems


9
ฉันชอบตารางนั้นดีกว่าเมื่อมีคอลัมน์แจ้งให้คุณทราบว่าระบบไฟล์จะฆ่าภรรยาของคุณหรือไม่
Paul Tomblin

ฮ่า ๆ !
2391 Zach Zach


14

ในทุกระบบไฟล์ Unix ปัจจุบันไดเรกทอรีสามารถเก็บไฟล์ได้ไม่ จำกัดจำนวน ในขณะที่ "ไม่ จำกัด " ถูก จำกัด โดย diskspace และinodesไม่ว่าอะไรก็ตามจะหมดไปก่อน

ด้วยการออกแบบระบบไฟล์รุ่นเก่า ( ext2 , UFS , HFS + ) สิ่งต่าง ๆ มักจะช้าถ้าคุณมีไฟล์จำนวนมากในไดเรกทอรี โดยปกติสิ่งต่าง ๆ จะเริ่มเจ็บปวดประมาณ 10,000 ไฟล์ ด้วยระบบไฟล์ที่ใหม่กว่า ( ReiserFS , XFS , ZFS , UFS2 ) คุณสามารถมีไฟล์ได้นับล้านไฟล์ในไดเรกทอรีโดยไม่เห็นคอขวดของประสิทธิภาพการทำงานทั่วไป

แต่การมีไฟล์จำนวนมากในไดเรกทอรีนั้นยังไม่ผ่านการทดสอบและมีเครื่องมือมากมายที่ล้มเหลว ตัวอย่างเช่นสคริปต์การบำรุงรักษาระบบเป็นระยะอาจมีปัญหากับมัน

ฉันใช้ไดเรกทอรีที่มีไฟล์หลายล้านไฟล์ใน UFS2 อย่างมีความสุขและไม่เห็นปัญหาใด ๆ จนกว่าฉันจะต้องการลบไดเรกทอรี - ซึ่งใช้เวลาหลายวัน


12

ขึ้นอยู่กับจำนวนinodesที่ระบบไฟล์สร้างขึ้น การดำเนินการ

df -i 

จะให้จำนวนของ inodes ฟรี นี่เป็นข้อ จำกัด ในทางปฏิบัติของจำนวนระบบไฟล์และไดเรกทอรีสามารถเก็บได้


1
อย่างไรก็ตามระบบไฟล์จำนวนมากมีข้อ จำกัด ของไฟล์ต่อไดเรกทอรีโดยไม่คำนึงถึงจำนวนของ inodes ที่ว่าง

1
ใช่ แต่คำถามกำหนดเป้าหมายระบบไฟล์ UNIX และเท่าที่ฉันทราบระบบไฟล์ UNIX ที่ทันสมัยทั้งหมดไม่ จำกัด จำนวนไฟล์ในไดเรกทอรี

6

ฉันคิดว่าคุณกำลังคิดที่จะเก็บไฟล์ไว้มากมายในที่เดียวใช่ไหม

ระบบไฟล์ Unix ที่ทันสมัยส่วนใหญ่สามารถใส่ไฟล์จำนวนมากไว้ในไดเรกทอรีเดียว แต่การดำเนินการเช่นเส้นทางต่อไปนี้รายชื่อไฟล์ ฯลฯ เกี่ยวข้องกับการค้นหาเชิงเส้นผ่านรายการไฟล์และทำงานช้าหากรายการมีขนาดใหญ่เกินไป

ฉันดูเหมือนจะจำได้ว่าได้ยินสองสามพันมากเกินไปสำหรับการใช้งานจริงมากที่สุด วิธีแก้ปัญหาโดยทั่วไปคือการแบ่งกลุ่ม นั่นคือ,

/some/path/to/dir/a/
/some/path/to/dir/b/
...
/some/path/to/dir/z/

basenameและจัดเก็บไฟล์ในไดเรกทอรีย่อยเหมาะสมตามกัญชาของพวกเขา เลือกแฮชที่แสนสะดวกตัวอักษรตัวแรกอาจใช้กับกรณีง่าย ๆ ได้


Cristian Ciupitu เขียนในความคิดเห็นที่XFSและไฟล์ระบบใหม่มากอื่น ๆ อาจจะใช้log(N)โครงสร้างที่สามารถค้นหาเนื้อหาถือไดเรกทอรีดังนั้นข้อ จำกัด นี้เป็นอย่างมากปรับตัวดีขึ้น


5
ระบบไฟล์ที่ทันสมัยบางระบบเช่น XFS ไม่เกี่ยวข้องกับการค้นหาเชิงเส้น เทคโนโลยี B-Tree ของ XFS ช่วยให้สามารถไปยังบล็อกและ / หรือส่วนขยายที่มีตำแหน่งของไฟล์ได้โดยตรงโดยใช้ดัชนีที่ซับซ้อน (จากuoks.uj.edu.pl/resources/flugor/IRIX/xfs-whitepaper.html )
Cristian Ciupitu

Ah! ฉันไม่รู้ ขอบคุณ จะเพิ่มไปยังข้อความ
dmckee

1
สำหรับ ext3 คุณต้องเปิดใช้งานคุณสมบัติ "dir_index" cf tune2fs (8)

0

ext3หนึ่งในรูปแบบที่พบมากที่สุดของระบบไฟล์ linux นั้นจะช้ามากหากคุณมีไฟล์ประมาณ 20k + ในไดเรกทอรี ไม่ว่าจะมีจำนวนเท่าใดคุณควรพยายามหลีกเลี่ยงการมีไฟล์จำนวนมากในไดเรกทอรีเดียว


0

จากความคิดเห็นที่คุณออกไปฉันคิดว่าคุณไม่สนใจว่าจะมีไฟล์ / โฟลเดอร์กี่ไฟล์ที่ FS ของคุณสามารถโฮสต์ได้

คุณควรพิจารณาใช้ ModRewrite และเขียนใหม่ site.com/ ชื่อผู้ใช้ไปที่ site.com/?user= หรืออะไรทำนองนั้นแล้วเก็บข้อมูลทั้งหมดของคุณไว้ในฐานข้อมูล โดยทั่วไปไม่จำเป็นต้องสร้างหนึ่งโฟลเดอร์ต่อผู้ใช้ (และไม่ใช่ความคิดที่ดี)

ที่กล่าวไว้ว่าแต่ละระบบไฟล์มีข้อ จำกัด และdfสามารถบอกได้ว่ามีกี่ไอโหนดในพาร์ติชั่นระบบของคุณ

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