„Kein Speicherplatz mehr auf dem Gerät“, obwohl 70 GB frei sind; kann auf dem iPad keine Dateien erstellen, die größer als 8,0 MiB sind

„Kein Speicherplatz mehr auf dem Gerät“, obwohl 70 GB frei sind; kann auf dem iPad keine Dateien erstellen, die größer als 8,0 MiB sind

OK, das ist auf einem iPad Pro, aber ich frage euch, weil es hier um das zugrunde liegende Unix-System hinter iOS/OS X geht und nicht wirklich iPad-spezifisch ist.(Und ja, ich habe Stunden damit verbracht, zuerst alle relevanten StackExchange-Artikel zum Thema „Kein Speicherplatz mehr auf dem Gerät“ zu lesen.)

Problem Nr. 1:Ich kann keine Dateien erstellen, die größer als 2-8 MB sind (das variiert beim Neustart). Dadurch wird das iPad praktisch unbrauchbar.Viele Apps starten nicht, Apps werden nicht installiert usw. Esmeldet „kein Speicherplatz mehr auf dem Gerät“, wenn Sie versuchen, eine Datei zu erstellen, die größer ist als das bizarre Limit von 2–8 MB, obwohl Sie über Gigabyte an freiem Speicherplatz verfügen.

Problem Nr. 2:Es verschwindet ständig Speicherplatz. Ich habe ständig Apps deinstalliert (bevor dieses Problem „kein freier Speicherplatz auf dem Gerät“ auftrat) und egal, wie viele ich gelöscht habe, ein paar Tage später zeigte es an, dass es voll war. Zuerst zeigte es an, dass es voll war, als noch 1 GB frei war. Dann, über mehrere Wochen, waren es schließlich 2 GB, dann 3...4...6...8... und schließlich verhielt sich das Gerät sogar bei 9 GB freiem Speicherplatz noch so, als wäre es voll! Ich wusste also, dass eine RIESIGE Menge an Speicherplatz nicht belegt war, weil ich Dutzende von Gigabyte an Apps deinstalliert hatte.

Auslösender Vorfall: Vor ein paar Monaten ist etwas Katastrophales passiert, als ich wirklich sehr wenig Speicherplatz hatte und versuchte, mehrere Apps gleichzeitig zu aktualisieren. Das iPad fror ein und mehrere Systemdatenbanken wurden beschädigt, und das iPad forderte mich auf, bestimmte Passwörter erneut einzurichten usw. Seitdem hatte ich verschiedene Probleme damit, konnte es aber größtenteils verwenden. Bis letzte Woche!

Ich habe das iPad schließlich jailbreaken lassen, weil ich mit meinem Latein am Ende bin und das Gerät löschen muss, wenn ich das Problem nicht lösen kann, und ich sehnte mich danach, ein"du -h -d 1"um zu sehen, WAS genau die rund 60 GB fehlenden Speicherplatz verbraucht hat!!

Ich habe ein fsck_hfs auf dem Laufwerk ausgeführt (was unglaublich schwierig war!!) und tatsächlich kam etwas wie2 Millionen Blöcke frei - sollten 16 Millionen sein, und ich habe nachgerechnet und es hat absolut Sinn ergeben! Der fsck wurde abgeschlossen und neu gestartet und BAM! Plötzlich ist mein fehlender Speicherplatz wieder da und ich habe71 GB kostenlos!

Aber das war ungefähr zu der Zeit, als das Problem so schlimm wurde, dass ich keine Dateien mehr erstellen konnte, die größer als 2-8 MB sind. Ich habe buchstäblich Folgendes ausgeführt:

dd if=/dev/zero of=testfile.bin bs=1M count=10

..und es schlägt bei einer bestimmten Zahl fehl, die fast immer eine perfekte Zweierpotenz von MiB ist (wie 2, 4 oder 8 MiB) mit der Meldung „Kein Platz mehr auf dem Gerät“. ABER ICH KANN IMMER SO VIELE WEITERE DATEIEN DIESER GRÖSSE SCHREIBEN, WIE ICH WILL! Nehmen wir an, das Limit liegt heute bei 4,0 MiB. Ich kann diesen DD-Befehl mit inkrementellen Dateinamen immer wieder ausführen. Ich habe es 7 Mal hintereinander gemacht und dabei 7 Dateien erstellt, und jedes Mal hat es perfekt funktioniert. Wenn ich es auf 4,1 MiB gebracht habe, schlägt es fehl. Obwohl ich gerade 7x4 (32 MiB) Dateien erstellt habe!

Und TROTZDEM wird der Speicherplatz von selbst immer kleiner; heute Morgen sind nur noch 39 GB frei.Wenn ich es noch einmal mit fsck_hfs ausführe, kehrt es zur Marke von ~70 GB frei zurück und beginnt langsam wieder zu schwinden.

Ich bin ratlos. NurWIE kann das Gerät die Fehlermeldung „Kein Speicherplatz mehr auf dem Gerät“ anzeigen, wenn Dutzende GB frei sind?Das iPad hat nur 1 Festplatte, aufgeteilt in eine 4 GB große Systempartition und den Rest in /private/var. Meine Systempartition ist nur zu 75 % voll, was für jedes iOS-Gerät normal ist.

Ich habe sogar die Inodes mit df geprüft und auf der Datenfestplatte (/dev/disk0s1s2) sind etwa 4 Milliarden Inodes frei.

Hier sind einige relevante Ausdrucke (von verschiedenen Tagen):

iPad:/private root# df
Filesystem     512-blocks      Used Available Capacity iused      ifree %iused  Mounted on
/dev/disk0s1s1    9316200   6795912   2427128    74%  125137 4294842142    0%   /
devfs                  99        99         0   100%     172          0  100%   /dev
/dev/disk0s1s2  486135960 476137152   9998808    98% 1217291 4293749988    0%   /private/var
iPad:/private root# df -h
Filesystem       Size   Used  Avail Capacity iused      ifree %iused  Mounted on
/dev/disk0s1s1  4.4Gi  3.2Gi  1.2Gi    74%  125137 4294842142    0%   /
devfs            50Ki   50Ki    0Bi   100%     172          0  100%   /dev
/dev/disk0s1s2  232Gi  227Gi  4.8Gi    98% 1217291 4293749988    0%   /private/var

iPad-Pro-256GB:/sbin root# mount
/dev/disk0s1s1 on / (hfs, local, journaled, noatime)
devfs on /dev (devfs, local, nobrowse)
/dev/disk0s1s2 on /private/var (hfs, local, nodev, nosuid, journaled, noatime, protect)

iPad-Pro-256GB:~ root# pwd
/var/root
iPad-Pro-256GB:~ root# dd if=/dev/zero of=test3.bin bs=1M count=20
dd: error writing 'test3.bin': No space left on device
9+0 records in
8+0 records out
8388608 bytes (8.4 MB, 8.0 MiB) copied, 0.671137 s, 12.5 MB/s

Auszug aus einem der ersten fsck_hfs, die ich ausgeführt habe, als das Gerät etwa 9 GB frei hatte, aber 70 GB frei hätte haben sollen:

** Checking volume bitmap.
   Volume bitmap needs minor repair for orphaned blocks
   Volume bitmap needs repair for under-allocation
** Checking volume information.
   Invalid volume free block count
   (It should be 16884367 instead of 2063604)

Ein vollständig erfolgreiches fsck_hfs:

iPad-Pro-256GB:/ root# umount -f /private/var && killall backboardd && fsck_hfs -f -y /dev/disk0s1s2
umount: /private/var: not currently mounted
iPad-Pro-256GB:/ root# fsck_hfs -f -y /dev/disk0s1s2
** /dev/rdisk0s1s2
   Executing fsck_hfs (version hfs-366.30.3).
** Checking Journaled HFS Plus volume.
** Detected a case-sensitive volume.
   The volume name is Data
** Checking extents overflow file.
** Checking catalog file.
   Incorrect size for file MediaLibrary.sqlitedb
   (It should be 1343488 instead of 1564672)
** Checking multi-linked files.
** Checking catalog hierarchy.
** Checking extended attributes file.
** Checking volume bitmap.
   Volume bitmap needs minor repair for orphaned blocks
** Checking volume information.
   Invalid volume free block count
   (It should be 16972349 instead of 14633343)
** Repairing volume.
   Limited repair mode, not all repairs available
** Rechecking volume.
** Checking Journaled HFS Plus volume.
** Detected a case-sensitive volume.
   The volume name is Data
** Checking extents overflow file.
** Checking catalog file.
** Checking multi-linked files.
** Checking catalog hierarchy.
** Checking extended attributes file.
** Checking volume bitmap.
** Checking volume information.
** Trimming unused blocks.
** The volume Data was repaired successfully.

Anmerkungen:

A. Im Syslog ist nichts Relevantes zu sehen, wenn die Erstellung großer Dateien fehlschlägt.

B. Gerät: iPad Pro 9,7" 256 GB iOS 10.2.1 HFS (nicht APFS, das später in 10.3 eingeführt wurde). Niemals gejailbreakt, BIS lange nachdem dieses Problem auftrat.

Antwort1

Wenn ein Dateisystem sehr fragmentiert ist, kann es sein, dass viel freier Speicherplatz vorhanden ist, in größeren Blöcken jedoch nicht genügend Platz vorhanden ist.

In Ihrem Fall sieht es so aus, als ob dies auf Ihr Dateisystem zutreffen könnte.

Fragmentierung tritt typischerweise auf, wenn Sie viele kleine Dateien in das Dateisystem kopieren und dann einen zufälligen Teil dieser kleinen Dateien entfernen. Dadurch werden Fragmente freigegeben, die nicht wieder zu größeren Blöcken zusammengefügt werden können.

Früher usenet newstrat dieses Problem in Dateisystemen häufig dann auf, wenn Sie viele Artikel auf Ihre private Festplatte kopierten und für die verschiedenen Newsgroups unterschiedliche Aufbewahrungszeiten verwendeten.

Wenn es für dieses Dateisystem kein Defragmentierungstool gibt, können Sie viele der kleinen Dateien an eine andere Stelle im Dateisystem kopieren (nicht verschieben) und dann die alten Versionen der kleinen Dateien entfernen. Wenn Sie dabei die richtigen Dateien erhalten, besteht eine große Chance, dass die freigegebenen Fragmente zusammenpassen und neue größere freie Blöcke bilden.

verwandte Informationen