Для начала я расскажу историю возникновения проблемы и способы ее решения.
Моя команда - это Нетбук Sony Vaio m120AL что у меня около 3 долгих лет с жестким диском на 320 ГБ, где они сосуществуют Windows 7, Чакра , мой рабочий раздел с Xubuntu 12.04, раздел подкачки, раздел / home и раздел дополнительной информации, с которым я делюсь информацией с Окон.
По этим причинам мои корневые разделы в обеих системах довольно малы по большинству стандартов (около 6 ГБ каждый), но они никогда не вызывали у меня проблем, поскольку их более чем достаточно для всех пакетов, которые мне нужны.
Теперь, войдя в конкретную ситуацию, несколько дней назад применяя некоторые обновления в Xubuntu (среди которых было включено новое ядро) Я вижу, что диспетчер обновлений показывает ошибку, говоря, что он пытается установить linux-image-3.2.0-51-generic, но его зависимость linux-headers-3.2.0-51 он не будет установлен, я подробно рассмотрел ошибку и заметил, что dpkg жалуется на нехватку места.
Ошибка говорила что-то в этом стиле, хотя и не идентично, потому что я не записывал это:
не удалось создать `/usr/src/linux-headers-3.2.0-43/arch/xtensa/include/asm/coprocessor.h.dpkg-new '(при обработке` ./usr/src/linux-headers -3.2.0-43 / arch / xtensa / include / asm / coprocessor.h '): на устройстве не осталось места
В какой-то предыдущий раз то же самое случилось со мной, но это было потому, что я позволил нескольким старым ядрам накапливаться, не удаляя их, но на этот раз я проверяю, и у меня есть практически 600 МБ, согласно носатый из того, что я не понимаю, но чтобы подтвердить, может ли это быть ошибка в том, как я ее настроил или что-то подобное, я запускаю df -h:
Так что я не ошибаюсь, и этого более чем достаточно для выполнения обновления (я делал это много раз за долгий год с тех пор, как работал с Xubuntu), в любом случае я делаю sudo apt-get clean чтобы очистить загруженные мной пакеты и повторить попытку, но с теми же результатами.
Я все еще нахожу это странным, но в любом случае я пытаюсь убрать / из тем значков, которые я всегда использую и которые я много изменил (Faenza y Пробудившийся), чтобы освободить больше места, и, наконец, выполнить обновление, продолжая снова, чтобы вернуть их в /.
Однако в моей голове оставалась мысль, что дело должно идти в другом месте, но я не знал, в каком именно. Через несколько часов, когда я пытаюсь установить несколько дополнительных пакетов, я снова получаю вышеупомянутую ошибку, и снова было достаточно свободного места, поэтому я провожу исследование.
Поиск в Интернете привел меня к нескольким темам на форумах убунту-это, но ответ некоторых людей всегда один и тот же: у вас недостаточно места, удалите файлы или расширьте корневой раздел, но я заметил что-то общее в разных потоках, которые я нашел, всегда в корневом разделе, в котором было свободное место, но Он был похож на мой (~ 600-900 Мб), и размер раздела никогда не превышал 10 Гб, поэтому я закончил убеждать себя, что проблема должна быть другой, и именно так я попал в заголовок поста благодаря это страницы проблема в том, что в корневом разделе было использовано 100% индексных дескрипторов.
Использование inodes можно увидеть с помощью команды дф -я:
А теперь объяснение.
Inodes - это слова Денниса Ричи:
Индекс из-за несколько необычной структуры файловой системы, которая хранила информацию о доступе к файлам в виде плоского списка на диске, оставляя в стороне всю иерархическую информацию каталогов.
и поэтому может случиться так, что для данной файловой системы все еще есть свободное место для хранения файлов, но нет доступных индексов для их индексации, потому что в системе много файлов и, следовательно, новые не могут быть созданы.
Дело в том, что количество inodes в разделе EXT4 не может быть изменен (существуют другие типы систем, такие как JFX o XFS где это не ограничение, потому что оно динамическое) это фиксированное число, которое вычисляется при создании раздела с помощью mkfs.ext4 в соответствии с его размером с соотношением байтов на индексный узел в соответствии с предпочтениями, расположенными в /etc/mke2fs.conf.
При установке системы обычно используются настройки по умолчанию, которые включают отношение inode = 16384, которое для небольших разделов может быть слишком большим и не создавать достаточно (как в моем случае). Единственный способ изменить его - создать / отформатировать раздел и указать его с помощью параметра -i.
Однако это был не вариант для меня, поскольку я уже упоминал, что inodes связаны с количеством существующих файлов, поэтому используйте следующий сценарий bash, найденный в StackOverflow и это ссылка на страницу, которую вы упомянули ранее, чтобы найти каталоги в корневом разделе с большим количеством файлов:
#!/bin/bash
# count_em - count files in all subdirectories under current directory.
echo 'echo $(ls -a "$1" | wc -l) $1' >/tmp/count_em_$$
chmod 700 /tmp/count_em_$$
find . -mount -type d -print0 | xargs -0 -n1 /tmp/count_em_$$ | sort -n
rm -f /tmp/count_em_$$
Что дает следующий результат:
Число, которое появляется слева, указывает количество присутствующих файлов, а путь указывает связанный каталог, в одной строке ниже отображается каталог / var / lib / dpkg / info, но, как всегда, я очищаю свои пакеты здесь, нечего делать .
Однако, если я распознаю две проблемы, первую, и хотя в catpura она не поднимается оттуда, еще несколько записей включают значки Пробудившийся, поэтому мне нужно переместить их «да» или «да», кроме того, это объясняет, почему, когда я это сделал, я мог обновить пакеты, поскольку я освободил многие inode из корневого раздела при их перемещении, но проблема вернулась, когда я их переместил.
И во-вторых, следующее большее количество записей связано с заголовками нескольких старых ядер, и я понимаю, что процедура, которую я всегда использую для удаления старых ядер, не удаляет заголовки, я обычно использую следующее, в терминале я пишу :
dpkg --get-selections | grep linux-образ
который показывает мне установленные ядра, а затем я использую:
пакет sudo apt-get purge
Где package - это имя рассматриваемого ядра, но при этом не удаляются связанные заголовки, поэтому я делаю:
dpkg --get-selections | грип линукс
Затем я приступаю к удалению старых заголовков с помощью:
sudo apt-get purge linux-заголовки-3.2.0-41 linux-headers-3.2.0-44 linux-headers-3.2.0-45 linux-headers-3.2.0-48
И вуаля, но, конечно же, была проблема с иконками Пробудившийся поэтому я решил переместить их в ~ / .icons и сделать их доступными для всей системы. Я просто создаю символическую ссылку в / usr / share / icons, что является первым результатом дф -я Это с удалением заголовков и второй после перемещения значков.
С этим проблема решена, и я могу без проблем устанавливать / обновлять пакеты, я надеюсь, что этот пост будет кому-то полезен или послужит для справок в будущем при установке в небольших разделах и демистифицирует тему, распространенную на форумах об отсутствии Пространства.
Привет, используйте твик ubuntu ( http://ubuntu-tweak.com ) похожа на настройку для Windows, она помогает удалить много мусора и в процессе безопасно удаляет старые ядра, однако оставляет предыдущее ядро для загрузки, в некоторых случаях последнее ядро не работало для меня, и мне удалось войти в систему, спасибо чтобы не удалять их все.
Я знаю его долгое время, но я всегда предпочитал делать это по-своему и понимать, как все работает, в любом случае, даже без пары старых заголовков, в которых была проблема, он бы представил то же самое через более или менее время, поэтому Темы значков, и это, в конце концов, как я уже сказал, проблема НЕ из-за нехватки места, а из-за используемых inode.
Спасибо за то, что поделился этим. До сих пор у меня не было этой проблемы, так как все диски, которые я использую, имеют формат Linux, без окон, так как у меня нет этой системы на моем компьютере.
Так что я буду иметь это в виду, если однажды я столкнусь с этой проблемой.
Проблема возникает не из-за наличия разделов с Windows (это просто особенность моего случая), а из-за наличия небольших корневых разделов, меньше 10 ГБ, где установщик использует параметры по умолчанию mke2fs (который форматирует разделы), а вы он выходит с небольшим количеством inodes для своего размера, и, как это обычно почти норма, все наши разделы находятся в EXT4, который устанавливает это число при создании, и его невозможно изменить позже.
Как видите, это то, что удерживает людей от Linux, и они в конечном итоге возвращаются к Windows. Как вы думаете, обычный пользователь в этой ситуации может решить проблему?
вам не нужно тратить свое время на исправление и настройку подобных вещей и тратить продуктивное время.
Мигель де Икаса был прав в том, что он сказал, и именно поэтому он решил перейти на Mac, потому что там ВСЕ РАБОТАЕТ, точка.
Вот и все. В OS X все работает красиво .. В данный момент бесполезно объяснять, почему произошло то, что написал автор сообщения, поэтому, пожалуйста, не скармливайте этот комментарий. Это закончится пламенем.
В моем случае Debian все работает на моем компьютере, и оказалось, что я использовал DVD в качестве дополнительного репо для обновления с Squeeze до Wheezy. Так что кто угодно может обновиться.
Что ж, у вас разум пользователя Windows.
GNU / Linux важен для вас.
привет
это интересно.
Эта ошибка очень часто встречается при установке gentoo на небольшие диски, поэтому во многих небольших исходных файлах и в разделе заканчиваются inodes, даже если осталось 60% свободного места. По крайней мере, справочник решает эту проблему, набрав mke2fs -j -T small / dev / sdaX, вероятно, он работает на ubuntu. Прежде чем я поиграю в странные настройки 😛
Точно, как я упоминал ранее, вы можете указать соотношение байтов inode с помощью опции -i, но есть также упомянутая вами опция -T использует один из режимов по умолчанию в файле конфигурации с именем /etc/mke2fs.conf в в этом случае small будет применять размер блока = 1024, размер inode = 128 и отношение байтов к inods = 4096.
Отлично!
Это типичная проблема, которая долго ест вашу голову, пока вы не поймете, откуда она взялась.
+10 за объяснение 😀
Как вы говорите, вы хорошо провели время, убив мою голову! Большое спасибо за комментарий, исходящий от человека, который знает столько, сколько вы, это большая честь!
Отлично !! Я узнал кое-что еще, и это помогло мне восстановить около 19 МБ, удалив старый заголовок, а также восстановив некоторые inodes. Теперь у меня больше места для установки. Поскольку я новичок в Linux, если вы считаете, что это нормально, я рекомендую вам написать сообщение о том, как отформатировать, чтобы получить наибольшее количество inodes, и можно ли это сделать, сохраняя информацию о диске или нет.
Приветствия и благодарности
Как я упоминал в указании в начале записи, это очень редкая проблема, связанная с небольшими корневыми разделами (<10 ГБ), как в моем случае, с другими размерами это маловероятно. Теперь, что касается изменения количества inodes, как я также упомянул в записи, это невозможно сделать без форматирования в разделах типа EXT4, поэтому вы не можете сохранить информацию на диске, не сделав предыдущую резервную копию, чтобы изменить соотношение байтов inodes используют параметр -i в команде mke2fs или один из параметров, связанных с -T (маленький, большой, огромный и т. д.).
Превосходно! Изложение проблемы, объяснение того, почему это произошло, ее основы и шаги решения! Я называю это отличным вкладом! Спасибо Rayonant!
Спасибо за статью, она мне очень помогла. Я перепробовал все, чтобы преодолеть эту ошибку, и, удалив старые заголовки и их зависимости, я смог переустановить программы и выполнить обновления. Спасибо!
Та же проблема случилась и со мной, ничего не произошло, и это перевернуло меня с ног на голову, хахаха. В моем случае в корневом разделе было довольно много свободной памяти, но он был использован на 100% inode! Дело в том, что если вы используете один и тот же дистрибутив в течение длительного времени и не удаляете старые ядра с течением времени, то отставание будет ужасным. В моем случае я смог решить проблему аналогично тому, как вы это выразили, только sudo apt-get remove или purge не помогли мне, и ключ к удалению этих неиспользуемых файлов ядра заключался в использовании sudo dpkg –remove и –purge, и один за другим я смог выпустить inodes. Все, что ты узнаешь. Мне жаль, что я не нашел эту запись раньше, потому что это решило бы вопрос раньше. Спасибо за небольшой набросок того, что такое inodes, я не имел большого представления.
Отличный блог, привет!
Вы - грос, и хотя это громоздко, это хорошо понимают. Я сделал все по букве, но не могу удалить предыдущие заголовки linux, это не позволяет мне, это ставит меня
E: dpkg был прерван, вы должны вручную запустить «sudo dpkg –configure -a», чтобы исправить проблему.
Я выполняю то, что он мне говорит, и это заставляет меня
Настройка openshot (1.4.0-1ubuntu1) ...
Traceback (последний последний вызов):
Файл "/ usr / sbin / update-python-modules", строка 478, в
package.install (py_installed)
Файл "/ usr / sbin / update-python-modules", строка 112, в установке
os.symlink (имя файла, путь к месту назначения)
OSError: [Errno 2] Нет такого файла или каталога
Ошибка в sys.excepthook:
Traceback (последний последний вызов):
Файл "/usr/lib/python2.7/dist-packages/apport_python_hook.py", строка 128, в apport_excepthook
os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o640), 'w')
OSError: [Errno 28] На устройстве не осталось места: '/var/crash/_usr_sbin_update-python-modules.0.crash'
Исходное исключение:
Traceback (последний последний вызов):
Файл "/ usr / sbin / update-python-modules", строка 478, в
package.install (py_installed)
Файл "/ usr / sbin / update-python-modules", строка 112, в установке
os.symlink (имя файла, путь к месту назначения)
OSError: [Errno 2] Нет такого файла или каталога
dpkg: ошибка обработки openshot (–configure):
поток установил сценарий после установки вернул код выхода ошибки 1
dpkg: ошибка: не удалось открыть `/ var / lib / dpkg / status 'для записи статуса базы данных: на устройстве не осталось места
Вопрос в том, во что я одет?
Большое спасибо! Этот пост мне очень помог.
Оле !!!
Вы не только решаете сложные задачи, но я учусь (и получаю от этого удовольствие) в процессе
Привет. Прежде всего, спасибо за пост ...
Во-вторых, мне это, к сожалению, не помогло. Я пришел к нему из-за проблемы со сломанным пакетом, которую система не позволяет мне решить из-за нехватки места, которая на самом деле, из того, что было объяснено здесь, была узлами i.
Итак, я попытался очистить старые ядра, как было предложено, но система не позволила мне:
juan @ juan-P29G: ~ $ sudo apt-get purge linux-image-3.2.0-29-generic-pae
Чтение списка пакетов ... Готово
Создание дерева зависимостей
Чтение информации о статусе ... Готово
Вы можете запустить "apt-get -f install", чтобы исправить это:
Следующие пакеты имеют неудовлетворенные зависимости:
tzdata-java: Зависит от: tzdata (= 2014i-0ubuntu0.12.04), но будет установлен 2014e-0ubuntu0.12.04
E: Зависимости не соблюдаются. Попробуйте "apt-get -f install" без пакетов (или укажите решение).
И когда я следую советам системы:
juan @ juan-P29G: ~ $ sudo apt-get -f install
Чтение списка пакетов ... Готово
Создание дерева зависимостей
Чтение информации о статусе ... Готово
Исправление зависимостей ... Готово
Будут установлены следующие дополнительные пакеты:
цдата
Следующие пакеты будут обновлены:
цдата
1 обновлен, 0 будет установлен, 0 - удален, 23 - не обновлен.
1 не полностью установлен или удален.
0 B / Необходимо загрузить 461 КБ файлов.
После этой операции будет освобождено 31,7 КБ.
Вы хотите продолжить [Д / Н]? s
Предварительная настройка пакетов ...
(Чтение базы данных… В настоящее время установлено 893468 файл или каталог.)
Подготовка к замене tzdata 2014e-0ubuntu0.12.04 (с использованием… / tzdata_2014i-0ubuntu0.12.04_all.deb)…
Распаковка замены tzdata ...
dpkg: обработка ошибок /var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb (–unpack):
Невозможно создать резервную копию символической ссылки для `./usr/share/zoneinfo/posix/America/Santo_Domingo ': на устройстве не осталось места
Отчет "аппорт" не был написан, потому что сообщение об ошибке указывает, что ошибка заполнена на диске.
При обработке обнаружены ошибки:
/var/cache/apt/архивы/tzdata_2014i-0ubuntu0.12.04_all.deb
E: Sub-процессов / USR / бен / dpkg возвращает код ошибки (1)
Получается замкнутый круг ... В любом случае, я посмотрю, что можно сделать.
Привет.
И снова здравствуйте… Я знаю, как разорвать порочный круг.
Я удалю образ самого старого ядра с помощью этой команды:
sudo dpkg – удалить linux-image-3.2.0-29-generic-pae
С этим я получаю 4389 i-узлов, достаточных для восстановления поврежденного пакета, а затем удаляю старые заголовки ядра, как указано в сообщении.
А теперь я восстановлю больше i-узлов, удалив кучу старых ядер ...
Спасибо и привет, Хуан Карлос.
Он не позволил мне удалить заголовки
Я набрал
судо наутилус
И я зашел в папку / usr / src
Там я увидел файлы "заголовков" и удалил их.
При этом он уже разрешил мне разместить заказ на автоудаление.
Спасибо!! сообщение может быть немного старым, но оно все еще очень полезно, проблема решена с помощью inodes
Rayonant: примерное объяснение.
Хотя в моем случае мне пришлось расширить раздел (с помощью Gparted), ваш пост помог мне разобраться в проблеме. И, следуя вашему методу, я ушел с 90% занятых индексов (после расширения раздела) до 28%.
Большое спасибо. С этого момента я буду использовать его, чтобы удалить старые ядра (и заголовки).
Спасибо также Хуану Карлосу (у меня была такая же проблема).
Объятие.
Интересный пост,
В моем случае я упал со 100% использования до 9%.
root @ pi: / home / pi # apt-очистить
корень @ pi: / home / pi # df -i
S. Файлы i-узлов NUsados NLibres NUso% Собран в
/ dev / root 1915424 1915288 136 100% /
позже я обнаружил, что ураганы коснулись моего носа, я их устранил и ...
корень @ pi: / home / pi # rm -rf / var / tmp / ntopng /
Тачан !!!
корень @ pi: / # df -i
S. Файлы i-узлов NUsados NLibres NUso% Собран в
/ dev / root 1915424 160408 1755016 9% /
Благодарю вас!