Озадачен жалобой "нет места" от apt

Предыстория: Мой / раздел был на 93%, но у меня было некоторое нераспределенное пространство, поэтому я создал новый дом для / usr. После переезда использование пространства выглядит следующим образом:

>df -k
Filesystem     1K-blocks     Used Available Use% Mounted on
//dev/sda1       15747484  6822736   8124800  46% /
udev             1954244        4   1954240   1% /dev
tmpfs             786052     1040    785012   1% /run
none                5120        0      5120   0% /run/lock
none             1965124      512   1964612   1% /run/shm
cgroup           1965124        0   1965124   0% /sys/fs/cgroup
/dev/sda5       62993332 30014168  29779216  51% /home
/dev/sda7       26540640       32  26540608   1% /windows
/dev/sda8       10320184  7156516   2639432  74% /usr

Теперь система работает, но когда я разрешил нормальное обновление программного обеспечения, часть заголовков ядра выдала ошибку:

dpkg: error processing /var/cache/apt/archives/linux-headers-3.2.0-55_3.2.0-55.85_all.deb (--unpack):
 unable to create `/usr/src/linux-headers-3.2.0-55/arch/arm/mach-pxa/include/mach/eseries-irq.h.dpkg-new' (while processing `./usr/src/linux-headers-3.2.0-55/arch/arm/mach-pxa/include/mach/eseries-irq.h'): No space left on device

Эта "космическая" жалоба и приведенный выше вывод df, похоже, противоречат друг другу.

Я получаю ту же ошибку при попытке исправить хранилище (sudo apt-get -f install). Думая, что у меня слишком много старых версий ядра, я попытался удалить некоторые (sudo apt-get remove linux-headers-3.2.0-38 linux-headers-3.2.0-38-generic linux-image-3.2.0-36-generic ...) но это выдает ошибку и предложение попробовать apt-get -f install.

Некоторая системная информация:

> uname -a
Linux <hostname> 3.2.0-55-generic-pae #85-Ubuntu SMP Wed Oct 2 14:03:15 UTC 2013 i686 i686 i386 GNU/Linux
> cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.3 LTS"

Боюсь, я не смогу обновить программное обеспечение, пока не решу проблему с заголовками. Я надеюсь, что кто-то там может помочь.

2 ответа

У инодов это есть. Еще раз спасибо, gertvdijk.

В моем комментарии вы можете видеть, что файловая система, хотя и не почти полная, почти не содержит inode. Посмотрев на man mkfs.ext4, я решил сократить его соотношение байт / иноды вдвое. Это соотношение задается параметром -i. Быстрый расчет, основанный на выводах df -k и df -i, показал, что у меня около 2^14, поэтому я бы выбрал 2^13. (Ниже я использовал {} для обозначения объектов-заполнителей, детали которых могут отвлекать.) Затем я

  1. решил использовать временное хранилище {tempmountpoint}, смонтированное на {tempdev}. Это достаточно большой файл для хранения моего дерева / usr.

  2. скопировал содержимое / usr в {tempmountpoint} с помощью

    rsync -avu /usr/ {tempmountpoint}
    
  3. размонтировали оба из них

  4. смонтировал / usr в {tempdev} (чтобы я мог продолжать работать над другими вещами через все это)

  5. переформатированный / оригинальный (и возможный целевой) раздел usr с

    mkfs.ext4 -i 8192  /dev/sda8
    
  6. подключен /dev/sda8 к {tempmountpoint}.

  7. скопировал содержимое временного / usr обратно в целевой раздел с помощью

    rsync -avu /usr/ {tempmountpoint} .
    
  8. Наконец, я посмотрел (новый) UUID с

    ls -l /dev/disk/by-uuid
    
  9. использовал этот UUID для редактирования записи / usr в /etc/fstab, и

  10. перезагружена.

Обновления теперь работают нормально. И файловая система выглядит в разумной форме, как в:

> df -k /usr
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda8       10156344 7349228   2282880  77% /usr
> df -i /usr
Filesystem      Inodes  IUsed  IFree IUse% Mounted on
/dev/sda8      1310720 679355 631365   52% /usr

Некоторые заметки:

(i) / home уже имел свой собственный раздел. Если бы это было в / usr, я бы подошел к этому немного по-другому.

(ii) Выбор инструментов: мне нравится ls / dev / disk / by-uuid, потому что ls очень, очень хорошо известен. Я частично использовал rsync, потому что, когда мне пришлось какое-то время заняться чем-то другим, прежде чем вернуться к этому, я мог снова запустить ту же команду rsync, чтобы "обновить" копию. Кроме того, мне это нравится, и это может сделать это. Другие могут иметь различные утилиты, которые удовлетворяют этим критериям. Например, пока несколько лет назад я не использовал cpio. Все, что проходит через байт.

(iii) Заполнители относятся к файловой системе fat32 (vfat) в /dev/sda7, смонтированной в / windows. Я переформатировал это хладнокровно перед вышеупомянутой процедурой. Я никогда не задумывался об изменении имени точки монтирования, что может сбить с толку бывших в употреблении.

Спасибо всем, кто помог или помог.

Это говорит о том, что у вас нет свободного места в разделе / ​​usr, вы можете попытаться удалить что-то там.

Вы пробовали установить apt-get -f?

Другие вопросы по тегам