"Nenhum espaço deixado no dispositivo" erro no OpenWRT quando realmente existe espaço

4

Eu tive um problema com meu aplicativo em execução no OpenWRT, onde escrevo arquivos para / tmp que estão na RAM. Apesar de df informar que cerca de 0% é usado:

root@OpenWrt:/tmp# df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                     576       212       364  37% /
/dev/root                 2560      2560         0 100% /rom
tmpfs                    14680        48     14632   0% /tmp
tmpfs                      512         0       512   0% /dev
/dev/mtdblock3             576       212       364  37% /overlay
overlayfs:/overlay         576       212       364  37% /

depois de ter escrito 3.640 arquivos de 0 bytes, recebo o erro "Não há mais espaço no dispositivo".

Alguém pode explicar por que isso está acontecendo? No caso do mundo real, eu não teria normalmente uma condição como essa, já que eu estaria excluindo esses arquivos, mas preciso cuidar dessa condição de qualquer maneira.

    
por Dave 19.05.2013 / 16:52

1 resposta

5

Arquivos de 0 byte ainda usam espaço; Cada arquivo usa pelo menos um inode. Na documentação do tmpfs, o número padrão de inodes para tmpfs (nr_inodes) é metade do número de páginas RAM físicas (que são tipicamente 4K). Eu suspeito que você tenha cerca de 8MB de memória no seu dispositivo?

Pode ser possível aumentar o número de inodes disponíveis, se é isso que você deseja, emitindo como root:

mount -o remount -o nr_inodes=7200 /tmp

Normalmente, o número de inodes usados em um sistema de arquivos é insignificante o suficiente para não ser considerado "df".

    
por 19.05.2013 / 17:04