Re: maximale Dateigroessen

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Sun, 17 Oct 2010 17:42:37 +0200 (CEST)

Marc Santhoff <M.Santhoff(at)web.de> wrote:
> da ich gerade gegen eine Wand gelaufen bin - maximal 4GB Dateigröße auf
> FAT32 - möchte ich gern wissen:
>
> Wo finde ich die maximale Dateigröße, die FreeBSD auf den unterstützten
> Dateisystemen verarbeiten kann?
>
> Gibt es weitere Einschränkungen, die noch kleinere Limits erzwingen?

Das ist ein relativ komplexes Thema, und die bereits auf-
gezählten Wikipedia-Artikel sind da nur begrenzt hilfreich,
da sie nur das theoretische Maximum nennen, wie es von den
"on-disk"-Strukturen definiert wird. In der Praxis liegen
die Limits häufig weitaus niedriger.

Es hängt z.B. auch von der FreeBSD-Version ab, wie hoch
das Limit ist, da es von zahlreichen Eigenheiten der in-
volvierten Treiber abhängt. Im Laufe der Entwicklung
wurden die Limits immer höher geschraubt. Man kann aber
eigentlich davon ausgehen, dass die realen Limits bei
den Implementationen der "nativen" Dateisysteme (UFS2,
ZFS) so hoch sind, dass sie für praktisches Arbeiten
irrelevant sind. Und falls man ein Dateisystem über das
netzwerk exportiert, schlagen dort natürlich wieder ganz
eigene Limits zu: NFS v2 hat z.B. ein 32bit-Limit (was
aber in der Praxis irrelevant ist, da schon seit langem
V3 der Default ist).

Ein weiterer Punkt, der in den Wikipedia-Artikel unter-
schlagen wird, ist auch, dass nicht zwischen logischer
und physikalischer Dateigröße unterschieden wird. Für
beides gibt es aber i.allg. _unterschiedliche_ Limits.
Besonders auffällig ist das z.B. bei UFS1, wo die (lo-
gische) Dateigröße bis 2^58 Bytes (256 PB) gehen kann,
aber ein UFS1-Dateisystem hat nur ein Maximum von 16 TB,
zumindest in der FreeBSD-Implementation (das theoretische
Maximum wäre immerhin 256 TB, aber da bin ich nicht ganz
sicher ... UFS1 wird ja heutzutage kaum noch verwendet).

Ein weiterer "Haken" sind die Variablentypen, die in den
jeweiligen Betriebsystemen für VFS und die Datei-API zum
Einsatz kommen. Im Falle von FreeBSD ist das irrelevant,
da dort der Typ "off_t" schon immer 64bit groß war. Bei
manchen Betriebssystemen (nicht FreeBSD, außer bei der
Verwendung von mmap) ist die Dateigröße auch an VM-Objekte
geknüpft, was dann bei 32bit-Betriebsystemen zu einem
32bit-Dateilimit führt.

Und letztendlich hängt das Limit natürlich auch von den
Anwendungen ab. Dass das OS Dateien mit XXX TB unter-
stützt, heißt noch lange nicht, dass auch jedes Programm
damit umgehen kann. Es gibt heute noch Anwendungen, die
Offsets in einem int ablegen. Wer beispielsweise noch
einen Apache 1.3.x laufen hat, der wird mit ihm Probleme
bei Dateien haben, die größer als 2 GB sind, da für Byte-
Ranges ein int verwendet wird. (Ich weiß, Apache 1.3.x
ist inzwischen EOL, aber das sollte jetzt nur ein Beispiel
sein.) Übrigens: Auch unter FreeBSD/amd64 ist ein int
nur 32 Bits groß.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart
FreeBSD-Dienstleistungen, -Produkte und mehr:  http://www.secnetix.de/bsd
"Share your knowledge.  It is a way to achieve immortality." -- The Dalai Lama
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sun 17 Oct 2010 - 17:43:03 CEST

search this site