Озадачен жалобой "нет места" от 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. (Ниже я использовал {} для обозначения объектов-заполнителей, детали которых могут отвлекать.) Затем я
решил использовать временное хранилище {tempmountpoint}, смонтированное на {tempdev}. Это достаточно большой файл для хранения моего дерева / usr.
скопировал содержимое / usr в {tempmountpoint} с помощью
rsync -avu /usr/ {tempmountpoint}
размонтировали оба из них
смонтировал / usr в {tempdev} (чтобы я мог продолжать работать над другими вещами через все это)
переформатированный / оригинальный (и возможный целевой) раздел usr с
mkfs.ext4 -i 8192 /dev/sda8
подключен /dev/sda8 к {tempmountpoint}.
скопировал содержимое временного / usr обратно в целевой раздел с помощью
rsync -avu /usr/ {tempmountpoint} .
Наконец, я посмотрел (новый) UUID с
ls -l /dev/disk/by-uuid
использовал этот UUID для редактирования записи / usr в /etc/fstab, и
перезагружена.
Обновления теперь работают нормально. И файловая система выглядит в разумной форме, как в:
> 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?