Von einer Datei und ihrem Namen belegter physischer Speicherplatz

Von einer Datei und ihrem Namen belegter physischer Speicherplatz

Beim Übertragen vieler Dateien von einer Linux Redhat-Workstation auf eine FAT32formatierte externe Festplatte ( WD 2 TBformatiert mit dem Mac-Festplattendienstprogramm) trat bei mir die Fehlermeldung auf, dass auf meiner Festplatte nicht mehr genügend Speicherplatz vorhanden sei. Ich habe jedoch überprüft, ob noch ~700 GBSpeicherplatz frei ist, also gehe ich davon aus, dass mir aufgrund langer Dateinamen der Speicherplatz ausgegangen ist (nicht sicher?)? Wie kann ich das überprüfen?

Die Details zu meiner externen Festplatte lauten

/dev/sdc1 on /media/GUDDULINUX3 type vfat (rw,nosuid,nodev,relatime,uid=988,gid=2000,fmask=0022,dmask=0077,codepage=cp437,iocharset=ascii,s

Derzeit gibt es etwa ~545Verzeichnisse mit Dateien zwischen ~7000und ~11000in jedem Verzeichnis. Jede Datei ist eine Binärdatei der Größe (überprüft mit du -sh) ~32Koder 96K(jeweils ungefähr die Hälfte) und der Name ist etwa XC6_9k.131_132.12.2012.210.s3( 29Zeichen lang). Die Dateigröße sieht in Ordnung aus, da es sich um Binärdateien mit 8000oder 24000Gleitkommazahlen handeln soll.

Ist es möglich, dass etwas anderes nicht stimmt? Leider kann ich den genauen Speicherplatz, den die Verzeichnisse belegen, nicht überprüfen du -sh. Der Versuch dauert ewig.

Bearbeiten 1- Ich habe das Festplattendienstprogramm von Mac verwendet, um die externe Festplatte zu überprüfen, und dort steht: 11361590 files, 1076797472 KiB free (33649921 clusters)

Bearbeiten 2-

Ich habe Angelos Vorschlägen gefolgt df -hund es df -iauf der externen Festplatte versucht, die an meinen Laptop (Mac) angeschlossen ist. Es sieht so aus, als ob ich keine freien Inodes mehr in habe /Volumes/GUDDULINUX3. Irgendwelche Vorschläge, was ich tun kann – gewinne ich Inodes, wenn ich tardie kleinen Dateien in einer tarDatei für jedes Verzeichnis speichere? Sollte ich auf eine NTFSformatierte Festplatte wechseln?

avinash$ df -h
Filesystem                          Size   Used  Avail Capacity  iused   ifree %iused  Mounted on
/dev/disk0s2                       233Gi  216Gi   17Gi    93% 56587186 4482254   93%   /
devfs                              187Ki  187Ki    0Bi   100%      646       0  100%   /dev
map -hosts                           0Bi    0Bi    0Bi   100%        0       0  100%   /net
map auto_home                        0Bi    0Bi    0Bi   100%        0       0  100%   /home
/dev/disk1s1                       1.8Ti  836Gi  1.0Ti    45%        0       0  100%   /Volumes/GUDDULINUX3

avinash$ df -i
Filesystem                        512-blocks       Used  Available Capacity  iused   ifree %iused  Mounted on
/dev/disk0s2                       488555536  452185504   35858032    93% 56587186 4482254   93%   /
devfs                                    373        373          0   100%      646       0  100%   /dev
map -hosts                                 0          0          0   100%        0       0  100%   /net
map auto_home                              0          0          0   100%        0       0  100%   /home
localhost:/rGEmV8JCfpffeQBEQFAlLe  488555536  488555536          0   100%        0       0  100%   /Volumes/MobileBackups
/dev/disk1s1                      3906009792 1752414720 2153595072    45%        0       0  100%   /Volumes/GUDDULINUX3

Dies sind Ergebnisse mit der an meine Linux-Workstation angeschlossenen Festplatte; die Inode-Informationen werden nicht angezeigt.

seismo82% df -h /media/GUDDULINUX3/ 
Filesystem Size Used Avail Use% Mounted on 
/dev/sdc1 1.9T 836G 1.1T 45% /media/GUDDULINUX3 

seismo82% df -i /media/GUDDULINUX3/
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/sdc1           0     0     0     - /media/GUDDULINUX3

Bearbeiten 3-

Es scheint, als inodewürde das mit nicht funktionieren FAT32. Ich denke, das Problem ist, dass es eine Untergrenze für die FAT32Anzahl der Dateien in einem Verzeichnis gibt, die niedriger ist als ~65kabhängig vom Dateinamen. Zuerst habe ich viele bereits vorhandene Dateien auf der externen Festplatte getarnt, wodurch viel inodes(oder FAT32Ähnliches) freigegeben werden sollte. Aber trotzdem wurde beim Verschieben des großen Verzeichnisses (es enthält ~23kDateien) der Fehler „Kein Speicherplatz mehr auf dem Gerät“ angezeigt. Dann habe ich, anstatt einzelne Dateien zu verschieben, ein Tar des Verzeichnisses erstellt und es war möglich, es auf eine externe Festplatte zu verschieben!!! Beim Versuch, es auf der externen Festplatte zu enttarnen, wurde mir erneut der Fehler angezeigt. Ich denke also, dass ich an eine Beschränkung der Anzahl der Dateien im Verzeichnis gestoßen bin. Siehew3dk's Kommentar hierzu Maximale Dateien pro Verzeichnis

Ich habe die Verzeichnisse geprüft, die beim Verschieben einen Fehler gemeldet haben. Das Limit scheint 100 16383Dateien für Dateinamen mit 29Zeichen und 21843100 Dateien für Dateinamen mit 20Zeichen zu sein. Theoretisch liegt das Limit bei ~65k100 Dateien für Dateinamen mit Namen im 8.3Format. Vielen Dank an alle, die mir bei der Diagnose des Problems geholfen haben. Im Moment werde ich einfach alles tarnen, was ich habe.

Antwort1

Zusätzlich zu den Partitionsgrößenbeschränkungen, Dateigrößenbeschränkungen und Verzeichnisgrößenbeschränkungen des FAT32-Dateisystems (die Ihnen anscheinend alle bekannt sind) gibt es auch eine maximale Beschränkung von insgesamt 268.435.437 Dateien auf einem FAT32-Volume, unabhängig vom Verzeichnis.

Wenn man schnell nachrechnet, sind 545 Verzeichnisse mit jeweils 7000 Dateien fast 4MillionDateien – weit mehr, als FAT32 verarbeiten kann.

verwandte Informationen