
Minha empresa produz dispositivos IoT conectados via USB, que contêm um módulo de modem celular, que contém um servidor DHCP. Temos um servidor de testes de produção rodando Ubuntu 14.04 e outro servidor rodando Ubuntu 16.04. Quando o modem celular do dispositivo IoT é ligado, o dhclient do servidor obtém um endereço IP do servidor DHCP incorporado no módulo do modem celular.
Ontem o servidor 14.04 ficou sem inodes porque havia6,6 milhões dhclient-<uuid>-usbXX.lease
arquivos em /var/lib/NetworkManager/
.
Não consegui examinar completamente o sistema devido à necessidade de colocá-lo em execução para fins de produção, mas parecia que esses arquivos de locação datavam do comissionamento do servidor, cerca de 14 meses atrás. Ou seja, parece que o NetworkManager e/ou dhclient (do pacote isc-dhcp-client) nunca removeram nenhum dos arquivos de concessão do cliente.
Para agravar o problema, parece que há um novo arquivo de concessão criado sempre que o dispositivo modem celular é ligado. (O dispositivo IoT mantém o modem celular desligado para economizar bateria, ligando-o somente quando necessário. O teste inclui ligar e desligar o modem várias vezes.)
Eu sudo apt-get source isc-dhcp-client
verifiquei a fonte e nunca parece haver código para remover arquivos de locação. Na verdade, meu laptop (Ubuntu 14.04) possui arquivos alugados desde o seu comissionamento. (Tive alguns de nossos dispositivos IoT conectados, bem como vários outros adaptadores Ethernet-USB.)
Os arquivos de locação têm uma expiração bastante razoável de 24 horas.
Estou investigando como desconfigurar o dhclient em nossos dispositivos IoT, mas prefiro não fazer isso caso decidamos fazer testes na conexão de dados da célula.
Existe uma maneira de fazer com que o dhclient e/ou NetworkManager remova arquivos antigos de concessão de clientes?
Eu poderia configurar um cron job para lidar com isso, mas parece o tipo de coisa que deveria fazer parte do sistema. Eu simplesmente não consigo encontrar. Pesquisei no Google, pesquisei aqui/StackOverflow e li a documentação do dhclient e do NetworkManager.
NOTA: Não tenho reputação suficiente para criar a tag dhclient, então substituí o dhcp.