Apakah POSIX membatasi jumlah direktori di root os?

12

Saya mencoba mempelajari standar POSIX. Bila menggunakan Unix, saya /bin, /etc, /dev, /media, dan biasanya /opt, tapi yang standar atau sampai dengan pelaksanaan spec? Mungkinkah ada banyak direktori di root, atau dibatasi oleh standar?

Niklas
sumber
3
POSIX tidak menyentuh area ini.
Thomas Dickey

Jawaban:

17

Menurut standar yang diterbitkan Grup Terbuka , satu-satunya direktori yang diperlukan adalah:

  • /
  • /dev, Yang berisi console, nulldantty
  • /tmp, dijamin bisa ditulisi tetapi tidak harus dilestarikan.

Linux Foundation mengelola Filesystem Hierarchy Standard (FHS) yang memperluas ini untuk memasukkan direktori yang biasanya Anda lihat pada sistem Linux:

  • /bin: Biner perintah pengguna esensial
  • /boot: File statis dari bootloader
  • /dev: File perangkat
  • /etc: Konfigurasi sistem khusus host
  • /home: Direktori home user (opsional)
  • /lib: Pustaka bersama penting dan modul kernel
  • /lib<qual>: Alternatif format pustaka bersama yang penting (opsional)
  • /media: Mount point untuk media yang dapat dipindahkan
  • /mnt: Mount point untuk sistem file yang dipasang sementara
  • /opt: Paket perangkat lunak aplikasi tambahan
  • /root: Direktori rumah untuk pengguna root (opsional)
  • /run: Data variabel run-time
  • /sbin: Sistem binari
  • /srv: Data untuk layanan yang disediakan oleh sistem ini
  • /tmp: Berkas sementara
  • Serta /usrhierarki dan /varhierarki

FHS dirancang sedemikian generik mungkin, untuk memungkinkan penggabungan dalam sistem UNIX apa pun. Direktori tambahan kemungkinan ada di sistem yang masuk akal, tetapi ini tidak diamanatkan oleh POSIX.

Namun, perhatikan bahwa Grup Terbuka juga menyatakan itu

Aplikasi yang benar-benar sesuai harus tidak mengasumsikan kemampuan untuk membuat file di salah satu direktori ini, kecuali ditentukan di bawah ini.

Karena direktori benar-benar hanya file, ini menyiratkan bahwa aplikasi yang sangat sesuai tidak akan membuat file atau direktori di tingkat root. Oleh karena itu, POSIX tidak selalu membatasi distribusi yang mungkin ditempatkan pada level root, tetapi tampaknya menyatakan bahwa suatu aplikasi yang sesuai dengan spesifikasinya tidak dapat berasumsi bahwa ia akan mampu melakukannya.

Rubah
sumber
5
Pertanyaannya bukan direktori mana yang standar , tetapi ditanya apakah ada batasan . POSIX tidak menjawab pertanyaan itu.
Thomas Dickey
Itu menambahkan pendapat tanpa menunjuk ke kutipan dari POSIX.
Thomas Dickey
Paragraf terakhir adalah apa yang saya sebutkan: "sepertinya menyatakan". POSIX menghindari menyebutkan batas dalam area ini, berfokus pada kesamaan daripada perbedaan.
Thomas Dickey
1
Fox terima kasih. Jawaban Anda adalah informasi yang saya cari.
Niklas
13

Dalam 10.1 Struktur dan File Direktori , POSIX mendaftar direktori yang harus ada. Tetapi ia tidak menetapkan batasan pada jumlah direktori lain yang dapat ada pada level root dari sistem file.

Untuk itu, tampaknya tidak membatasi ukuran direktori lain.

Perhatian POSIX di bidang ini difokuskan pada kesamaan daripada perbedaan.

Thomas Dickey
sumber
Karena pada sistem * nix berpotensi setiap direktori (termasuk /) dapat menjadi direktori root, akan sangat konyol untuk memaksakan batas atas jumlah entri dalam direktori root. /tidak terlalu istimewa dalam hal ini, karena itu cukup konyol untuk memaksakan batas atas jumlah entri secara /khusus.
CVn
8

Tidak ada batasan untuk jumlah entri dalam direktori, baik dalam POSIX atau implementasi Unix yang khas. Mungkin ada batas tidak langsung untuk jumlah subdirektori, yang merupakan jumlah maksimum tautan keras (setiap ..entri subdirektori adalah tautan keras ke direktori); itu 2 16 untuk banyak filesystem umum, yang membatasi direktori hingga 65533 subdirektori (setidaknya untuk filesystem yang menyimpan ..entri secara eksplisit). Anda akan mulai memukul kinerja yang buruk sebelum itu. Menurut POSIX, suatu implementasi hanya diperbolehkan untuk mendukung 8 tautan keras pada suatu file ( _POSIX_LINK_MAX), tetapi tidak ada implementasi aktual yang terbatas pada 6 subdirektori. Lagi pula, pada banyak filesystem, termasuk ext4, jumlah hard link tidak dipertahankan.. entri, jadi satu-satunya batasan adalah berapa banyak ruang atau berapa banyak inode yang tersedia di sistem file.

POSIX tidak banyak bicara tentang organisasi file pada sistem. Hanya mandat keberadaan beberapa file . Satu-satunya entri wajib dalam direktori root adalah /devdan /tmp. Kebiasaan entri Unix lainnya seperti /usr, /var, /bin, /etc, /lib, /home, dll Unix konvensi yang tidak dikodifikasi oleh POSIX.

Di Linux, FHS mengkodekan klasik dan beberapa lagi. Sebagian besar distribusi Linux menempel pada entri FHS. Sistem Unix lain biasanya memiliki sebagian besar entri yang sama, mungkin dengan beberapa perbedaan, tetapi jumlahnya hampir sama.

Administrator sistem dapat membuat lebih banyak, meskipun ini tidak disarankan: ada tempat yang terdefinisi dengan baik untuk sebagian besar hal (perangkat lunak berjalan di bawah /usratau /opt, data sistem berada di bawah /var, data pengguna berada di bawah /net, titik mount di bawah /mediaatau /mnt, dll.), Sehingga jarang ada alasan bagus untuk membuat direktori baru di tingkat atas.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Ini tidak benar. Sebagian besar sistem file "masuk akal" memiliki jumlah subdirektori per direktori maksimum, atau jumlah maksimum inode per perangkat. Namun, itu biasanya sangat besar relatif terhadap jumlah direktori Anda cenderung melihat di root drive.
Kevin
@Kevin Oh, bagusnya, pada sistem file umum Anda harus menekan jumlah hard link maksimum terlebih dahulu, dan itu bisa serendah 16 bit.
Gilles 'SANGAT berhenti menjadi jahat'
@Kevin Meskipun ini tidak terjadi pada ext4, tampaknya tidak ada batasan pada jumlah subdirektori selain ruang yang tersedia (blok atau inode). Apakah Anda memikirkan batasan lain pada jumlah subdirektori per direktori?
Gilles 'SANGAT berhenti menjadi jahat'
Sistem file yang dirancang dengan benar tidak membuat tautan keras ke .. direktori entri. Dalam sistem file yang dirancang dengan benar, jumlah tautan suatu direktori adalah 1 kecuali jika ada tautan keras yang dibuat secara manual.
schily
1
Tidak, tidak ada batasan seperti itu pada sistem berkas 100% POSIX. Seperti yang sudah disebutkan, POSIX tidak memerlukan. dan .. menjadi hardlink ke direktori lain. Jika ya, ini adalah detail implementasi yang merupakan hasil peretasan yang diperkenalkan pada sistem file V7. Ada sistem file yang sesuai dengan POSIX yang bekerja sangat berbeda.
schily
2

tidak seperti FAT sistem file yang digunakan oleh UNIX tidak memiliki batas ukuran khusus pada direktori root, tetapi begitu partisi penuh Anda tidak akan dapat menambahkan lebih banyak.

Jasen
sumber