www.mikrocontroller.net

Forum: PC Hard- und Software [Linux] Maximale Anzahl Dateien pro Verzeichnis bei ext4


Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

wie viele Dateien kann man auf einem ext4 System pro Verzeichnis 
anlegen?
Gibt es da eine Begrenzung oder ist das nur durch die gesamte Anzahl 
verfügbarer Inodes begrenzt?

Die Frage bezieht sich auf eine Standardinstallation von Ubuntu 10.04 
LTS mit 160 GB Systempartition.

Hintergrund ist eine Serienfotoanlage, es wird alle 10 Minuten ein Bild 
einer Baustelle aufgenommen und mit eindeutigem Zeitstempel in ein 
Verzeichnis kopiert. Später soll mit ffmpeg ein Zeitraffervideo daraus 
erstellt werden. Damit ffmpeg automatisch die Bilder einlesen kann, ist 
es am einfachsten, wenn alle jpeg-Dateien in einem Verzeichnis liegen. 
Das Bauvorhaben kann bis zu 3 Jahre dauern, ich erwarte also bis zu 
160000 Bilder.

Was passiert eigentlich, wenn man zu viele Dateien anlegt? Bleibt das 
System stabil oder gibts dann ein Problem? Wenn nichts schlimmes 
passiert, könnte ich das ja ausprobieren.

Vielleicht weiß das ja zufällig jemand.


Viele Grüße,

Peter

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine solche Beschränkung ist mir eigentlich nur vom Ur-FAT bekannt, wo 
die Größe des Wurzelverzeichnisses begrenzt war, die anderer 
Verzeichnisse aber nur den allgemeinen Beschränkungen (s.u.) unterlag.

Modernere Dateisysteme kennen keine Begrenzung außer der maximalen 
Dateigröße (die auch für Verzeichnisse gilt), der Zahl der Inodes (so es 
sie oder etwas Vergleichbares gibt) und der Anzahl der 
Unterverzeichnisse (wegen des Link-Counts).

Autor: Yalu X. (yalu) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Diener schrieb:
> Gibt es da eine Begrenzung oder ist das nur durch die gesamte Anzahl
> verfügbarer Inodes begrenzt?

M.W. und nach dem, was eine schnelle Internetrecherche hergibt,
letzteres. Auf dem Ext3-Filesystem auf meinem PC kann ich die 160000
Dateien ohne Probleme anlegen. Ext4 habe ich keins da, auf dem ich das
testen könnte.

Nur die Anzahl der Unterverzeichnisse innerhalb eines Verzeichnisses ist
begrenzt, nämlich auf 64000 bei Ext4 und 32000 bei Ext3.

Wenn man versucht, dieses Maximum zu überschreiten, passiert aber nichts
Schlimmes, es kommt lediglich die Meldung:

  mkdir: cannot create directory `foo': Too many links

Autor: mano (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich würde es mit einem einfachen shell-Skript ausprobieren.

Script könnte so aussehen (ungetestet)
#! /bin/sh

COUNT=0

while test $COUNT -le 160000
do
  touch $COUNT.test
  COUNT=`expr $COUNT + 1`
done

echo all done

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..für Bruteforceausprobierer geht das (in bash-Syntax) auch in einem 
Einzeiler:

$ for ((i=0; i<160000; i++)) ; do touch ${i}-test ; done

Zum Zwecke der Vereinfachung würde ich die Dateien nicht in einem 
einzigen Verzeichnis zusammenfassen, sondern z.B. jeden Monat eines in 
der Form 'yyyy-mm' oder so. Mit ein bisschen Schellschgribbt ist das 
kein Problem. Und man kann die Dateien nachher trotzdem leicht 
chronologisch sortieren lassen.

HF und machts nix kaputt

Autor: melt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt eine theoretische Grenze, aber die liegt bei mehr als 100 
Billionen Dateien, also keine Sorge ;)

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Antworten!

Ich denke, ich kann einfach mal 160000 leere Dateien zum Test anlegen, 
wenn ich die nächste Wartung mache.

>Zum Zwecke der Vereinfachung würde ich die Dateien nicht in einem
>einzigen Verzeichnis zusammenfassen, sondern z.B. jeden Monat eines in
>der Form 'yyyy-mm' oder so. Mit ein bisschen Schellschgribbt ist das
>kein Problem. Und man kann die Dateien nachher trotzdem leicht
>chronologisch sortieren lassen.

Das wollte ich ursprünglich auch machen, aber ffmpeg braucht alle 
Quelldateien durchgehend nummeriert in einem Verzeichnis. Oder hat da 
jemand eine Idee?

Grüße,

Peter

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erst pro Verzeichnis ein Video erstellen und dann alle Video 
zusammenfügen.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es könnte sich allerdings herausstellen, dass solche Dirs etwas 
abbremsen, je nachdem was man so treibt. Beispielsweise sobald man 
solche Monster in einem Browser/Explorer zu sehen kriegt.

Autor: BillX (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

reichen die 160 GB denn für die 160000 Bilder ?

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das wollte ich ursprünglich auch machen, aber ffmpeg braucht alle
> Quelldateien durchgehend nummeriert in einem Verzeichnis. Oder hat da
> jemand eine Idee?

Ein Stapel Symlinks in einem eigenen Verzeichnis regelt.. kann man auch 
von einem Einzeiler anlegen lassen:

$ i=0 ; find /source/of/evil/ -type f -name "*.jpg" | while read f ; do 
ln -s "${f}" $(printf "%06d.jpg" $i) ; let i=i+1 ; done

HF

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aso Nachtrag falls es so noch nicht sortiert ist: sort regelt :-)

$ i=0 ; find /source/of/evil/ -type f -name "*.jpg" | sort | while read 
f ; do ln -s "${f}" $(printf "%06d.jpg" $i) ; let i=i+1 ; done

Hab ich schon mal erwähnt dass Bash und GNU toll ist?

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Erst pro Verzeichnis ein Video erstellen und dann alle Video
>zusammenfügen.

Ja, die Lösung kenn ich schon, so hab ich das bei meinem vorletzten 
Zeitrafferprojekt gemacht. Wenn technisch nichts dagegen spricht, fahre 
ich das aber lieber über ein Verzeichnis.

>Es könnte sich allerdings herausstellen, dass solche Dirs etwas
>abbremsen, je nachdem was man so treibt. Beispielsweise sobald man
>solche Monster in einem Browser/Explorer zu sehen kriegt.

Das ist mir auch schon bekannt, alle meine bisherigen Zeitrafferprojekte 
sind ausnahmslos auf Windows XP gelaufen, das hier ist das erste, das 
komplett auf Ubuntu läuft. Mit Windows hat man so ab etwa 10000 Bildern 
schon erhebliche Wartezeiten, bis das im Explorer angezeigt wird. 
Backups mache ich momentan mit einem Mac Book und OS X 10.4.9, da gibts 
eigentlich kaum Verzögerungszeiten.

Ziel ist es, dass die Fotos bis zur Erstellung des Films auf dem Rechner 
bleiben, es wird alles notwendige dort durchgeführt. Dunkle Fotos 
(Nachtaufnahmen) und Wochenendaufnahmen werden nicht mit in den Film 
aufgenommen. Eventuell bastel ich mir noch eine Datumsanzeige, die mit 
in die Bilder gemischt wird.

Performanceprobleme hab ich bis jetzt noch nicht, es sind schon etwa 
10000 Bilder gemacht und das wird alles ganz flüssig angezeigt.


Grüße,

Peter

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ g457:

Die Idee mit den Links ist gut, ich hab das bisher durch Umbenennen der 
benötigten Bilder und Löschen der unbenötigten gelöst.

Die 160 GB reichen für alle Bilder, ein Bild hat zwischen 300 und 800 
kB.

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.