Не удалось обновить / установить пакеты - Проблемы с пространством - Освободить inodes

Прежде всего, прокомментируйте, что это особая ошибка из-за характеристик моего корневого раздела и что она обычно не происходит в типичных установках. 

Для начала я расскажу историю возникновения проблемы и способы ее решения.

Моя команда - это Нетбук 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:

df -h

Но у меня все еще есть место в /!

Так что я не ошибаюсь, и этого более чем достаточно для выполнения обновления (я делал это много раз за долгий год с тех пор, как работал с Xubuntu), в любом случае я делаю sudo apt-get clean чтобы очистить загруженные мной пакеты и повторить попытку, но с теми же результатами.

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

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

Поиск в Интернете привел меня к нескольким темам на форумах убунту-это, но ответ некоторых людей всегда один и тот же: у вас недостаточно места, удалите файлы или расширьте корневой раздел, но я заметил что-то общее в разных потоках, которые я нашел, всегда в корневом разделе, в котором было свободное место, но Он был похож на мой (~ 600-900 Мб), и размер раздела никогда не превышал 10 Гб, поэтому я закончил убеждать себя, что проблема должна быть другой, и именно так я попал в заголовок поста благодаря это страницы проблема в том, что в корневом разделе было использовано 100% индексных дескрипторов.

Использование inodes можно увидеть с помощью команды дф -я:

100% используемые inodes

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-образ

ядра-rec

который показывает мне установленные ядра, а затем я использую:

пакет 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, что является первым результатом дф -я Это с удалением заголовков и второй после перемещения значков.

Иноды выпущены до кучи!

Иноды выпущены до кучи!

С этим проблема решена, и я могу без проблем устанавливать / обновлять пакеты, я надеюсь, что этот пост будет кому-то полезен или послужит для справок в будущем при установке в небольших разделах и демистифицирует тему, распространенную на форумах об отсутствии Пространства.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Фернандо Баутиста сказал

    Привет, используйте твик ubuntu ( http://ubuntu-tweak.com ) похожа на настройку для Windows, она помогает удалить много мусора и в процессе безопасно удаляет старые ядра, однако оставляет предыдущее ядро ​​для загрузки, в некоторых случаях последнее ядро ​​не работало для меня, и мне удалось войти в систему, спасибо чтобы не удалять их все.

    1.    Вискоза сказал

      Я знаю его долгое время, но я всегда предпочитал делать это по-своему и понимать, как все работает, в любом случае, даже без пары старых заголовков, в которых была проблема, он бы представил то же самое через более или менее время, поэтому Темы значков, и это, в конце концов, как я уже сказал, проблема НЕ из-за нехватки места, а из-за используемых inode.

  2.   Маврикий сказал

    Спасибо за то, что поделился этим. До сих пор у меня не было этой проблемы, так как все диски, которые я использую, имеют формат Linux, без окон, так как у меня нет этой системы на моем компьютере.

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

    1.    Вискоза сказал

      Проблема возникает не из-за наличия разделов с Windows (это просто особенность моего случая), а из-за наличия небольших корневых разделов, меньше 10 ГБ, где установщик использует параметры по умолчанию mke2fs (который форматирует разделы), а вы он выходит с небольшим количеством inodes для своего размера, и, как это обычно почти норма, все наши разделы находятся в EXT4, который устанавливает это число при создании, и его невозможно изменить позже.

  3.   Gerardo H сказал

    Как видите, это то, что удерживает людей от Linux, и они в конечном итоге возвращаются к Windows. Как вы думаете, обычный пользователь в этой ситуации может решить проблему?
    вам не нужно тратить свое время на исправление и настройку подобных вещей и тратить продуктивное время.
    Мигель де Икаса был прав в том, что он сказал, и именно поэтому он решил перейти на Mac, потому что там ВСЕ РАБОТАЕТ, точка.

    1.    Elav сказал

      Вот и все. В OS X все работает красиво .. В данный момент бесполезно объяснять, почему произошло то, что написал автор сообщения, поэтому, пожалуйста, не скармливайте этот комментарий. Это закончится пламенем.

      1.    элиотайм3000 сказал

        В моем случае Debian все работает на моем компьютере, и оказалось, что я использовал DVD в качестве дополнительного репо для обновления с Squeeze до Wheezy. Так что кто угодно может обновиться.

    2.    Фабиан сказал

      Что ж, у вас разум пользователя Windows.
      GNU / Linux важен для вас.
      привет

  4.   Зиг84 сказал

    это интересно.

  5.   Хорхе сказал

    Эта ошибка очень часто встречается при установке gentoo на небольшие диски, поэтому во многих небольших исходных файлах и в разделе заканчиваются inodes, даже если осталось 60% свободного места. По крайней мере, справочник решает эту проблему, набрав mke2fs -j -T small / dev / sdaX, вероятно, он работает на ubuntu. Прежде чем я поиграю в странные настройки 😛

    1.    Вискоза сказал

      Точно, как я упоминал ранее, вы можете указать соотношение байтов inode с помощью опции -i, но есть также упомянутая вами опция -T использует один из режимов по умолчанию в файле конфигурации с именем /etc/mke2fs.conf в в этом случае small будет применять размер блока = 1024, размер inode = 128 и отношение байтов к inods = 4096.

  6.   MSX сказал

    Отлично!
    Это типичная проблема, которая долго ест вашу голову, пока вы не поймете, откуда она взялась.
    +10 за объяснение 😀

    1.    Вискоза сказал

      Как вы говорите, вы хорошо провели время, убив мою голову! Большое спасибо за комментарий, исходящий от человека, который знает столько, сколько вы, это большая честь!

  7.   Антонио сказал

    Отлично !! Я узнал кое-что еще, и это помогло мне восстановить около 19 МБ, удалив старый заголовок, а также восстановив некоторые inodes. Теперь у меня больше места для установки. Поскольку я новичок в Linux, если вы считаете, что это нормально, я рекомендую вам написать сообщение о том, как отформатировать, чтобы получить наибольшее количество inodes, и можно ли это сделать, сохраняя информацию о диске или нет.
    Приветствия и благодарности

    1.    Вискоза сказал

      Как я упоминал в указании в начале записи, это очень редкая проблема, связанная с небольшими корневыми разделами (<10 ГБ), как в моем случае, с другими размерами это маловероятно. Теперь, что касается изменения количества inodes, как я также упомянул в записи, это невозможно сделать без форматирования в разделах типа EXT4, поэтому вы не можете сохранить информацию на диске, не сделав предыдущую резервную копию, чтобы изменить соотношение байтов inodes используют параметр -i в команде mke2fs или один из параметров, связанных с -T (маленький, большой, огромный и т. д.).

  8.   Марио сказал

    Превосходно! Изложение проблемы, объяснение того, почему это произошло, ее основы и шаги решения! Я называю это отличным вкладом! Спасибо Rayonant!

  9.   Диана Бедоя сказал

    Спасибо за статью, она мне очень помогла. Я перепробовал все, чтобы преодолеть эту ошибку, и, удалив старые заголовки и их зависимости, я смог переустановить программы и выполнить обновления. Спасибо!

  10.   Приборостроительная сказал

    Та же проблема случилась и со мной, ничего не произошло, и это перевернуло меня с ног на голову, хахаха. В моем случае в корневом разделе было довольно много свободной памяти, но он был использован на 100% inode! Дело в том, что если вы используете один и тот же дистрибутив в течение длительного времени и не удаляете старые ядра с течением времени, то отставание будет ужасным. В моем случае я смог решить проблему аналогично тому, как вы это выразили, только sudo apt-get remove или purge не помогли мне, и ключ к удалению этих неиспользуемых файлов ядра заключался в использовании sudo dpkg –remove и –purge, и один за другим я смог выпустить inodes. Все, что ты узнаешь. Мне жаль, что я не нашел эту запись раньше, потому что это решило бы вопрос раньше. Спасибо за небольшой набросок того, что такое inodes, я не имел большого представления.
    Отличный блог, привет!

  11.   Лев сказал

    Вы - грос, и хотя это громоздко, это хорошо понимают. Я сделал все по букве, но не могу удалить предыдущие заголовки 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 'для записи статуса базы данных: на устройстве не осталось места
    Вопрос в том, во что я одет?

  12.   Пабло сказал

    Большое спасибо! Этот пост мне очень помог.

  13.   острая боль сказал

    Оле !!!

    Вы не только решаете сложные задачи, но я учусь (и получаю от этого удовольствие) в процессе

  14.   Хуан Карлос сказал

    Привет. Прежде всего, спасибо за пост ...

    Во-вторых, мне это, к сожалению, не помогло. Я пришел к нему из-за проблемы со сломанным пакетом, которую система не позволяет мне решить из-за нехватки места, которая на самом деле, из того, что было объяснено здесь, была узлами 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)

    Получается замкнутый круг ... В любом случае, я посмотрю, что можно сделать.

    Привет.

  15.   Хуан Карлос сказал

    И снова здравствуйте… Я знаю, как разорвать порочный круг.

    Я удалю образ самого старого ядра с помощью этой команды:
    sudo dpkg – удалить linux-image-3.2.0-29-generic-pae

    С этим я получаю 4389 i-узлов, достаточных для восстановления поврежденного пакета, а затем удаляю старые заголовки ядра, как указано в сообщении.

    А теперь я восстановлю больше i-узлов, удалив кучу старых ядер ...

    Спасибо и привет, Хуан Карлос.

  16.   анонимный сказал

    Он не позволил мне удалить заголовки

    Я набрал
    судо наутилус

    И я зашел в папку / usr / src
    Там я увидел файлы "заголовков" и удалил их.
    При этом он уже разрешил мне разместить заказ на автоудаление.

  17.   анонимный сказал

    Спасибо!! сообщение может быть немного старым, но оно все еще очень полезно, проблема решена с помощью inodes

  18.   Луис сказал

    Rayonant: примерное объяснение.
    Хотя в моем случае мне пришлось расширить раздел (с помощью Gparted), ваш пост помог мне разобраться в проблеме. И, следуя вашему методу, я ушел с 90% занятых индексов (после расширения раздела) до 28%.
    Большое спасибо. С этого момента я буду использовать его, чтобы удалить старые ядра (и заголовки).
    Спасибо также Хуану Карлосу (у меня была такая же проблема).
    Объятие.

  19.   Илариус сказал

    Интересный пост,
    В моем случае я упал со 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% /

    Благодарю вас!