intrigado pela queixa de “sem espaço” do apt

2

Histórico: Minha / partição estava em 93%, mas eu tinha algum espaço não alocado, então criei uma nova casa para / usr. Após a mudança, o uso do espaço se parece com:

>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

Agora o sistema é executado, mas quando permiti uma atualização de software normal, a parte dos cabeçalhos do kernel gerou um erro:

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

Esta queixa "espacial" e a saída df parecem contradizer-se mutuamente.

Eu recebo o mesmo erro quando tento consertar o repositório (sudo apt-get -f install). Pensando que eu tinha muitas versões antigas do kernel, tentei remover algumas delas (sudo apt-get remover linux-headers-3.2.0-38 linux-headers-3.2.0-38-generic linux-image-3.2.0-36-generic. ..) mas isso produz um erro e uma sugestão que eu tento o apt-get -f install.

Algumas informações do sistema:

> 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"

Infelizmente, não poderei atualizar nenhum software até que este problema de cabeçalhos seja resolvido. Espero que alguém possa ajudar.

    
por Bill 24.10.2013 / 21:52

2 respostas

1

Os inodes têm isso. Obrigado novamente, gertvdijk.

No meu comentário, você pode ver que o sistema de arquivos, embora não esteja quase cheio, estava quase fora de inodes. Depois de olhar para o homem mkfs.ext4 eu decidi cortar sua razão bytes / inodes pela metade. Essa proporção é definida pela opção -i. Um cálculo rápido baseado nas saídas de df -k e df -i mostrou que o meu era de cerca de 2 ^ 14, então eu iria com 2 ^ 13. (Abaixo, eu usei {} para indicar objetos de espaço reservado cujos detalhes podem ser uma distração.) Eu, então,

  1. decidiu usar o armazenamento temporário {tempmountpoint} montado em {tempdev}. Isso é grande o suficiente para manter o conteúdo da minha árvore / usr.

  2. copiou o conteúdo de / usr para {tempmountpoint} com

    rsync -avu /usr/ {tempmountpoint}
    
  3. desmontou ambos

  4. montou / usr em {tempdev} (assim eu poderia continuar trabalhando em outras coisas com tudo isso)

  5. partição original (e eventual destino) reformatada / usr com

    mkfs.ext4 -i 8192  /dev/sda8
    
  6. monte / dev / sda8 em {tempmountpoint}.

  7. copiou o conteúdo do temporário / usr de volta para sua partição de destino com

    rsync -avu /usr/ {tempmountpoint} .
    
  8. Finalmente, procurei o (novo) UUID com

    ls -l /dev/disk/by-uuid
    
  9. usou este UUID para editar a entrada / usr em / etc / fstab e

  10. reiniciado.

As atualizações estão funcionando normalmente agora. E o sistema de arquivos parece estar em formato razoável, como em:

> 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

Algumas notas:

(i) / home já tinha sua própria partição. Se tivesse sido em / usr eu abordaria isso de forma um pouco diferente.

(ii) Escolha de ferramentas: Eu gosto de ls / dev / disk / by-uuid porque ls é muito, muito bem conhecido. Eu usei rsync em parte porque quando eu tinha que fazer outra coisa por um tempo antes de voltar a isso, eu poderia executar o mesmo comando rsync novamente para "atualizar" a cópia. Além disso, eu gosto e posso fazer isso. Outros podem ter utilidades diferentes que satisfaçam esses critérios. Por exemplo, até alguns anos atrás, eu usaria o cpio. O que quer que te faça passar pelo byte.

(iii) Os marcadores referem-se ao que havia sido o sistema de arquivos fat32 (vfat) em / dev / sda7, montado em / windows. Eu reformatei-a a sangue frio antes do procedimento acima. Eu nunca me incomodei em mudar o nome do ponto de montagem, o que poderia ser confuso de segunda mão.

Obrigado a todos que ajudaram ou contribuíram.

    
por Bill 25.10.2013 / 06:44
0

Diz que você não tem mais espaço na partição / usr, você pode tentar remover alguma coisa lá.

Você tentou o apt-get -f install?

    
por Gustavo Berman 24.10.2013 / 22:06