World of Replica wrote:
> wollte gerade eine usb-festplatte mounten. es handelt sich dabei um eine
> 300gb platte, die unter windows FAT32 formatiert wurde. Die platte wird vom
> usbd erkannt und ich habe auch ein "/dev/da0s1". mit "mount_msdosfs
> /dev/da0s1 /mnt/usb" bekomme ich folgende fehlermeldung:
> mountmsdosfs(): disk too big, sorry
> mount_msdosfs: /dev/da0s1: Invalid argument
Es ist ein Problem der Beschränktheit von FAT.
Hintergrund:
Bei praktischen allen Dateisystemen können Dateien über
eine eindeutige Nummer identifiziert werden (bei UFS sind
das die inode-Nummern). Das BSD-VFS-System verwendet
diese 32bit-Nummern zur Verwaltung der Dateien, für den
Buffer-Cache, NFS-Export und andere Dinge.
Das altertümliche FAT-Dateisystem dagegen hat sowas nicht.
FreeBSD ordnet daher einfach jeder Datei eine Nummer zu,
die anhand der fortlaufenden Nummer des Verzeichnisein-
trages der Datei ermittelt wird. Dadurch wird sicherge-
stellt, dass jede Datei eine eindeutige Nummer hat, die
sich auch durch einen Reboot nicht ändert (was z.B. wichtig
für NFS-Exports ist).
Nun ergibt sich aber das Problem, dass FAT-Dateisysteme ab
einer Größe von 128 GB mehr als 2^32 potentielle Verzeich-
niseinträge haben, d.h. sie passen nicht mehr in einen
32bit-Wert, daher können Sie vom VFS-System nicht verar-
beitet werden. Beim Versuch, sie zu mounten, gibt es obige
Fehlermeldung »disk too big, sorry«.
Siehe weiter unten für mögliche Lösungen.
> auch eine intensive googlesearch hat mich nicht weiter gebracht.
Ich empfehle für sowas: http://freebsd.rambler.ru/
Das ist eine recht gute Search-engine für die (englisch-
sprachigen) Mailinglisten.
> interessanterweise funktioniert das alles aber mit einer anderen
> usb-pladde(160gb) ohne probleme(die ist jedoch ntfs ...).
Das Problem betrifft nur FAT-Dateisysteme, nicht NTFS, und
hat auch nichts mit USB zu tun.
> lösungsvorschläge?
Das beste ist, auf FAT ganz zu verzichten. Wenn das nicht
möglich ist, dann verzichte zumindest auf zu große FAT-
Partitionen, sondern lege besser mehrere kleine an (jeweils
< 128 GB).
Eine andere Möglichkeit ist, den Kernel mit folgender Zeile
neu zu compilieren (siehe Handbook, wie das geht):
options MSDOSFS_LARGE
Es handelt sich um einen experimentellen Hack, der bewirkt,
dass der Kernel eine dynamische Tabelle anlegt, mit der
der 64bit-Eintragsnummer jeder Datei eine 32bit-inode-Nummer
zugeordnet wird. Damit kannst Du ein FAT-Dateisystem moun-
ten, das größer als 128 GB ist. Allerdings ist das Problem
dabei erstens, dass sich die Nummern nach einem Reboot än-
dern, und zweitens, dass der Kernel-Memory zur Neige gehen
kann, wenn das FAT-Dateisystem sehr viele Dateien enthält,
was zu einer Panic führt.
Details findest Du im zugehörigen Abschnitt in der Datei
/sys/conf/NOTES (nach MSDOSFS_LARGE suchen).
Gruß
Olli
-- Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd Any opinions expressed in this message may be personal to the author and may not necessarily reflect the opinions of secnetix in any way. "Life is short (You need Python)" -- Bruce Eckel, ANSI C++ Comitee member, author of "Thinking in C++" and "Thinking in Java" To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Tue 12 Sep 2006 - 19:02:31 CEST