我在 Ubuntu 14.04 系统上运行 DHCPD (isc-dhcp-4.2.4)。var/lib/dhcp/dhcpd.leases 文件变得非常大 (350MB)。查看它,可以发现有几个月前早已过期的租约的历史数据。我该如何清除旧信息?停止 dhcpd 并删除该文件可能不是一个好主意,因为这样它会忘记可能仍然相关的最近租约?
[编辑] 显然,dhcpd 应该每小时自动清除一次租约文件,但这并没有发生在我身上。显然这是权限问题 - /var/lib/dhcp 目录和内容由 root:root 拥有,但服务器以 dhcpd:dhcpd 的身份运行。我尝试更改所有权,如下所示:-
sudo service isc-dhcp-server stop
sudo chown -R dhcpd:dhcpd /var/lib/dhcp/
sudo service isc-dhcp-server start
但此后目录 dhcpd.leases 和 dhcpd.leases~ 的所有权又恢复为 root:root。
那么,我该如何理清目录所有权与运行 dhcpd 进程的用户:组,以使自动清除功能正常工作?
答案1
来自手册man dhcpd.leases
:
为了防止租约数据库无限制增长,该文件会不时重写。首先,创建一个临时租约数据库,并将所有已知租约转储到其中。然后,将旧租约数据库重命名
/var/lib/dhcpd/dhcpd.leases~
。最后,将新写入的租约数据库移至原位。
据我所知,当目录上的文件系统权限/var/lib/dhcpd
阻止非特权用户 dhcpd 在那里创建临时数据库时,这可能会失败,然后租约文件将继续增长。
将所有权更改/var/lib/dhcpd
为 dhcpd 用户。
答案2
您不需要删除它,只需删除不需要的部分。
- 停止 DHCPD 服务器。
- 编辑 dhcpd.leases 文件并删除不再需要的条目
- 保存文件并启动 DHCPD 服务器。
您可以通过编辑文件(在准备好之前不保存)来优化这一点,然后在几秒钟甚至更快的时间内执行 DHCPD 停止/文件保存/DHCPD 启动。对我来说,它甚至在 1 秒内就完成了;那是如果你不想停机的话。