
Моя компания производит устройства IoT, подключаемые через USB, которые содержат модуль сотового модема, который содержит сервер DHCP. У нас есть сервер производственного тестирования, работающий под управлением Ubuntu 14.04, и другой сервер, работающий под управлением Ubuntu 16.04. Когда сотовый модем устройства IoT включается, dhclient сервера получает IP-адрес от сервера DHCP, встроенного в модуль сотового модема.
Вчера на сервере 14.04 закончились иноды, потому что были6,6 миллионов dhclient-<uuid>-usbXX.lease
файлы в формате /var/lib/NetworkManager/
.
Я не смог полностью изучить систему, так как мне нужно было запустить ее для производственных целей, но, похоже, эти файлы аренды датируются всем временем ввода сервера в эксплуатацию около 14 месяцев назад. То есть, похоже, что NetworkManager и/или dhclient (из пакета isc-dhcp-client) никогда не удаляли ни один из файлов аренды клиента.
Проблема усугубляется тем, что, по-видимому, создается новый файл аренды каждый раз при включении сотового модема. (Устройство IoT держит сотовый модем выключенным для экономии заряда батареи, включая его только при необходимости. Тестирование включает в себя включение и выключение модема несколько раз.)
Я sudo apt-get source isc-dhcp-client
проверил исходный код, и, похоже, там нет кода для удаления файлов аренды, вообще. Действительно, на моем ноутбуке (Ubuntu 14.04) есть файлы аренды, относящиеся к моменту его ввода в эксплуатацию. (Я подключил некоторые из наших устройств IoT, а также различные другие адаптеры Ethernet-USB.)
Срок действия документов по аренде составляет вполне разумные 24 часа.
Я изучаю, как деконфигурировать dhclient для наших устройств IoT, но я бы предпочел этого не делать на тот случай, если мы решим провести тестирование соединения для передачи данных по сотовой сети.
Есть ли способ заставить dhclient и/или NetworkManager удалить старые файлы аренды клиентов?
Я мог бы настроить cron-задание для решения этой проблемы, но, похоже, это то, что должно быть частью системы. Я просто не могу его найти. Я гуглил, искал здесь/StackOverflow и читал документацию по dhclient и NetworkManager.
ПРИМЕЧАНИЕ: У меня недостаточно репутации, чтобы создать тег dhclient, поэтому я заменил его на dhcp.