POSIX จำกัด จำนวนไดเรกทอรีในระบบปฏิบัติการหรือไม่?


12

ฉันพยายามเรียนรู้มาตรฐาน POSIX เมื่อใช้ระบบปฏิบัติการยูนิกซ์ฉันได้/bin, /etc, /dev, /mediaและมักจะ/optแต่ที่ได้มาตรฐานหรือถึงการดำเนินการข้อมูลจำเพาะของคุณหรือไม่ อาจมีไดเรกทอรีจำนวนมากในรูทหรือถูก จำกัด โดยมาตรฐานหรือไม่


3
POSIX ไม่ได้สัมผัสกับพื้นที่นี้
Thomas Dickey

คำตอบ:


17

ตามมาตรฐานที่เผยแพร่ของ Open Group ไดเรกทอรีที่จำเป็นเท่านั้นคือ:

  • /
  • /devซึ่งมีconsole, nullและtty
  • /tmpรับประกันเขียนได้ แต่ไม่จำเป็นต้องเก็บรักษาไว้

Linux Foundation จะดูแลรักษาลำดับขั้นของระบบแฟ้ม (FHS) ซึ่งจะขยายสิ่งนี้เพื่อรวมไดเรกทอรีที่คุณมักจะเห็นในระบบ Linux:

  • /bin: ไบนารีคำสั่งผู้ใช้สำคัญ
  • /boot: ไฟล์คงที่ของ bootloader
  • /dev: ไฟล์อุปกรณ์
  • /etc: การกำหนดค่าระบบเฉพาะโฮสต์
  • /home: โฮมไดเรกทอรีผู้ใช้ (ไม่จำเป็น)
  • /lib: ไลบรารีที่ใช้ร่วมกันที่จำเป็นและโมดูลเคอร์เนล
  • /lib<qual>: ไลบรารีที่สำคัญที่ใช้ร่วมกันรูปแบบสำรอง (ไม่บังคับ)
  • /media: จุดเมานท์สำหรับสื่อที่ถอดได้
  • /mnt: จุดเมานท์สำหรับระบบไฟล์ที่เมาท์ชั่วคราว
  • /opt: แพ็กเกจซอฟต์แวร์แอปพลิเคชันเสริม
  • /root: โฮมไดเร็กทอรีสำหรับผู้ใช้รูท (ทางเลือก)
  • /run: ข้อมูลตัวแปรรันไทม์
  • /sbin: ระบบไบนารี
  • /srv: ข้อมูลสำหรับการให้บริการโดยระบบนี้
  • /tmp: ไฟล์ชั่วคราว
  • เช่นเดียวกับ/usrลำดับชั้นและ/varลำดับชั้น

FHS ได้รับการออกแบบให้เป็นแบบทั่วไปมากที่สุดเพื่อให้สามารถรวมตัวกันในระบบ UNIX ใด ๆ ไดเรกทอรีเพิ่มเติมมีแนวโน้มที่จะมีอยู่ในระบบที่เหมาะสม แต่ไม่ได้รับคำสั่งจาก POSIX

อย่างไรก็ตามโปรดทราบว่า The Open Group ยังระบุด้วยว่า

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

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


5
คำถามไม่ได้ซึ่งไดเรกทอรีมาตรฐานแต่ถามว่ามีขีด จำกัด POSIX ไม่ตอบคำถามนั้น
Thomas Dickey

มันเพิ่มความคิดเห็นโดยไม่ต้องชี้ไปที่คำพูดจาก POSIX
Thomas Dickey

ย่อหน้าสุดท้ายคือสิ่งที่ฉันอ้างถึง: "ดูเหมือนจะระบุ" POSIX หลีกเลี่ยงการพูดถึงขีด จำกัด ในพื้นที่นี้โดยเน้นที่ความธรรมดามากกว่าความแตกต่าง
Thomas Dickey

1
ขอบคุณ Fox คำตอบของคุณคือข้อมูลที่ฉันต้องการ
Niklas

13

ใน10.1 โครงสร้างไดเรกทอรีและไฟล์ POSIX แสดงรายการไดเรกทอรีที่ต้องมีอยู่ แต่จะไม่ จำกัด จำนวนไดเรกทอรีอื่น ๆ ที่สามารถมีอยู่ในระดับรากของระบบไฟล์

สำหรับเรื่องนั้นไม่ปรากฏว่ามีการ จำกัด ขนาดของไดเรกทอรีอื่น

ความสนใจของ POSIX ในพื้นที่นี้มุ่งเน้นไปที่คนธรรมดามากกว่าความแตกต่าง


เนื่องจากระบบ * nix อาจเป็นไปได้ว่าทุกไดเร็กทอรี (รวมถึง/) สามารถเป็นรูทไดเร็กทอรีได้มันจะค่อนข้างไร้สาระที่จะกำหนดขีด จำกัด สูงสุดของจำนวนรายการในรูทไดเร็กทอรี /ไม่ได้พิเศษโดยเฉพาะในเรื่องนี้ดังนั้นจึงเป็นไปตามที่มันจะค่อนข้างโง่พอสมควรที่จะกำหนดขีด จำกัด บนจำนวนรายการ/โดยเฉพาะ
CVn

8

ไม่มีข้อ จำกัด เกี่ยวกับจำนวนของรายการในไดเรกทอรีทั้งใน POSIX หรือในการใช้งาน Unix ทั่วไป อาจมีข้อ จำกัด ทางอ้อมสำหรับจำนวนของไดเรกทอรีย่อยซึ่งเป็นจำนวนสูงสุดของการเชื่อมโยงฮาร์ด ( ..รายการของแต่ละไดเรกทอรีย่อยคือการเชื่อมโยงอย่างหนักไปยังไดเรกทอรี); นั่นคือ 2 16สำหรับระบบไฟล์ทั่วไปจำนวนมากซึ่ง จำกัด ไดเรกทอรีไว้ที่ไดเรกทอรีย่อย 65533 (อย่างน้อยสำหรับระบบไฟล์เหล่านั้นที่เก็บ..รายการไว้อย่างชัดเจน) คุณจะเริ่มแสดงประสิทธิภาพที่แย่ก่อนหน้านั้น ตาม POSIX การใช้งานได้รับอนุญาตให้สนับสนุนเพียง 8 ฮาร์ดลิงก์ในไฟล์ ( _POSIX_LINK_MAX) แต่ไม่มีการใช้งานจริงถูก จำกัด ไว้ที่ 6 ไดเรกทอรีย่อย และต่อไปในระบบไฟล์จำนวนมากรวมถึง ext4 จำนวนฮาร์ดลิงก์จะไม่ได้รับการดูแล.. รายการดังนั้นข้อ จำกัด เพียงอย่างเดียวคือจำนวนพื้นที่หรือจำนวน inodes ที่มีอยู่ในระบบไฟล์

POSIX ไม่ได้พูดอะไรมากเกี่ยวกับการจัดระเบียบไฟล์ในระบบ เพียงเอกสารการดำรงอยู่ของไม่กี่ไฟล์ รายการเดียวที่บังคับใช้ในไดเรกทอรีรากมีและ/dev /tmpนิสัย Unix อื่น ๆ รายการเช่น/usr, /var, /bin, /etc, /lib, /homeฯลฯ จะUnixการประชุมที่ไม่ได้รับการประมวลผลโดย POSIX

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

ผู้ดูแลระบบอาจสร้างมากขึ้นถึงแม้นี่จะเป็นกำลังใจ: มีสถานที่ที่ดีที่กำหนดสำหรับสิ่งที่มากที่สุด (ซอฟต์แวร์ไปตาม/usrหรือ/optข้อมูลระบบไปตาม/varข้อมูลผู้ใช้ไปตาม/netติดไปอยู่ภายใต้จุด/mediaหรือ/mntอื่น ๆ ) จึงมีไม่ค่อย เหตุผลที่ดีในการสร้างไดเรกทอรีใหม่ที่ระดับบนสุด


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

@ เควินโอ้จุดที่ดีในระบบไฟล์ทั่วไปคุณจะต้องกดฮาร์ดลิงก์สูงสุดนับก่อนและนั่นอาจต่ำถึง 16 บิต
Gilles 'SO- หยุดความชั่วร้าย'

@Kevin แม้ว่าจะไม่ใช่ในกรณีของ ext4 แต่ก็ไม่ได้มีข้อ จำกัด เกี่ยวกับจำนวนของไดเรกทอรีย่อยอื่นที่ไม่ใช่พื้นที่ว่าง (บล็อกหรือ inodes) คุณนึกถึงข้อ จำกัด อื่น ๆ ของจำนวนไดเรกทอรีย่อยต่อไดเรกทอรีหรือไม่
Gilles 'หยุดความชั่วร้าย'

ระบบไฟล์ที่ออกแบบมาอย่างถูกต้องไม่ได้สร้างการเชื่อมโยงอย่างหนักไปยังรายการ .. ไดเรกทอรี ในระบบไฟล์ที่ออกแบบมาอย่างถูกต้องจำนวนลิงค์ของไดเรกทอรีคือ 1 เว้นแต่จะมีการสร้างฮาร์ดลิงก์ด้วยตนเอง
schily

1
ไม่ไม่มีข้อ จำกัด ดังกล่าวในระบบไฟล์ที่รองรับ POSIX 100% ดังที่ได้กล่าวมาแล้ว POSIX ไม่ต้องการ และ .. เพื่อเป็นลิงก์ไปยังไดเรกทอรีอื่น หากเป็นเช่นนี้นี่คือรายละเอียดการนำไปใช้งานซึ่งเป็นผลมาจากการแฮ็กที่แนะนำในระบบไฟล์ V7 มีระบบไฟล์ที่สอดคล้องกับ POSIX อื่น ๆ ที่ทำงานแตกต่างอย่างสิ้นเชิง
schily

2

ซึ่งแตกต่างจาก FAT ระบบไฟล์ที่ใช้โดย UNIX ไม่มีขนาด จำกัด พิเศษในไดเรกทอรีราก แต่เมื่อพาร์ทิชันเต็มคุณจะไม่สามารถเพิ่มได้อีก

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