«На устройстве не осталось места», несмотря на 70 ГБ свободного места; невозможно создать файлы размером более 8,0 МБ на iPad

«На устройстве не осталось места», несмотря на 70 ГБ свободного места; невозможно создать файлы размером более 8,0 МБ на iPad

Итак, это касается iPad Pro, но я спрашиваю вас, потому что речь идет о базовой системе Unix, лежащей в основе iOS/OS X, а не о конкретном iPad.(И да, я сначала потратил часы на чтение всех соответствующих статей StackExchange о том, что «на устройстве не осталось места».)

Проблема №1:Я не могу создавать файлы больше 2-8 МБ (это меняется после перезагрузки). Это делает iPad практически непригодным для использования.Многие приложения не запускаются, приложения не устанавливаются и т. д. Этосообщает «на устройстве не осталось места» при попытке создать файл размером больше странного лимита в 2–8 МБ, несмотря на наличие гигабайт свободного места.

Проблема №2:Место на диске постоянно исчезает. Я продолжал удалять приложения (до того, как началась эта проблема «на устройстве не осталось места»), и сколько бы я ни удалял, через несколько дней оно действовало как полное. Сначала оно действовало как полное при свободном 1 ГБ. Затем, через несколько недель, оно в конечном итоге стало 2 ГБ, затем 3...4... 6...8... и в конечном итоге даже при свободных 9 ГБ устройство все еще действовало как полное! Так что я знал, что ОГРОМНЫЙ объем дискового пространства был неучтен, потому что я удалил десятки гигабайт приложений.

Ускоряющий инцидент: Несколько месяцев назад произошло нечто катастрофическое, когда у меня было законно очень мало места на диске, и я попытался обновить несколько приложений одновременно. iPad завис, и несколько системных баз данных были повреждены, и iPad начал просить меня снова установить определенные пароли и т. д. С тех пор у меня были различные проблемы с ним, но в основном я мог им пользоваться. До прошлой недели!

В итоге я сделал джейлбрейк iPad, потому что я уже на грани отчаяния и мне придется стереть все данные с устройства, если я не смогу решить эту проблему, а мне просто ОЧЕНЬ хотелось запустить джейлбрейк."ду -х -д 1"чтобы увидеть, ЧТО именно занимало около 60 ГБ недостающего пространства!!

Я запустил fsck_hfs на диске (что было невероятно сложно сделать!!) и КОНЕЧНО ЖЕ, он сказал что-то вроде2 миллиона блоков бесплатно - должно быть 16 миллионов, и я сделал расчеты, и это имело смысл! Fsck завершился и перезагрузился и БАЦ! Внезапно мое пропавшее место вернулось, и у меня есть71 ГБ бесплатно!

Но примерно в это время проблема стала настолько серьезной, что я не мог создавать файлы больше 2-8 МБ. Я буквально запустил:

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

..и он даст сбой при достижении определенного числа, которое почти всегда является идеальной степенью 2 в МиБ (например, 2, 4 или 8 МиБ) с сообщением «На устройстве не осталось места». НО Я ВСЕГДА МОГУ ЗАПИСАТЬ СТОЛЬКО ФАЙЛОВ ТАКОГО РАЗМЕРА, СКОЛЬКО ЗАХОЧУ! Допустим, сегодня ограничение составляет 4,0 МиБ. Я могу выполнять эту команду DD с инкрементными именами файлов снова и снова. Я делал это 7 раз подряд, создавая 7 файлов, и каждый раз это работало идеально. Если я делал 4,1 МиБ, он даст сбой. Хотя я только что создал 7x4 (32 МиБ) файлов!

И ВСЕ РАВНО место на диске ПРОДОЛЖАЕТ уменьшаться само по себе, сегодня утром свободно осталось всего 39 ГБ.Если я снова выполню fsck_hfs, объем свободного места вернется к отметке ~70 ГБ и снова начнет медленно уменьшаться.

Я в растерянности. ПростоКАК устройство может выдавать ошибку «На устройстве не осталось места», когда на нем свободно десятки ГБ?У iPad есть только 1 диск, разделенный на раздел 4 ГБ /System и остальное на /private/var. Мой раздел System заполнен всего на 75%, что нормально для любого устройства iOS.

Я даже проверил иноды с помощью df, и на диске данных (/dev/disk0s1s2) оказалось около 4 миллиардов свободных инодов.

Вот несколько соответствующих распечаток (за разные дни):

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

Отрывок из одного из первых fsck_hfs, который я запустил, когда на устройстве было свободно около 9 ГБ, а должно было быть 70 ГБ:

** 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)

Полностью успешный 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.

Примечания:

A. Ничего существенного в системном журнале, если не удаётся создать большие файлы.

B. Устройство: iPad Pro 9.7" 256 ГБ iOS 10.2.1 HFS (не APFS, которая была представлена ​​позже в 10.3). Не подвергалось джейлбрейку ДО тех пор, пока не возникла эта проблема.

решение1

Если файловая система сильно фрагментирована, возможно, в ней много свободного места, но недостаточно места в больших блоках.

В вашем случае это выглядит так, как будто это может быть правдой для вашей файловой системы.

Фрагментация обычно происходит, если вы копируете множество небольших файлов в файловую систему, а затем удаляете случайную часть этих небольших файлов. Это освобождает фрагменты, которые нельзя рекомбинировать в более крупные блоки.

Раньше usenet newsфайловая система обычно страдала от этой проблемы в случае, если вы копировали много статей на свой личный диск и использовали разное время хранения для разных групп новостей.

Если для этой файловой системы нет инструмента дефрагментации, вы можете скопировать (не перемещать) множество мелких файлов в другое место в файловой системе, а затем удалить старые версии мелких файлов. Если вы получите нужные файлы, делая это, есть большая вероятность, что освобожденные фрагменты совпадут, чтобы создать новые более крупные свободные блоки.

Связанный контент