1. Have a dhcpd.leases.n filename. 2. Each of these lease files has next file dhcpd.leases.(n+1) at the bottom. 3. dhcp server reads these like a linked list. Another process aggregates these: Starts like this: dhcpd.leases ------> dhcpd.leases.2 -----> ... -----> dhcpd.leases.n then starts writing dhcpd.leases.tmp, aggregating all leases from all the leases files except the most current one, then adds at the end: next file dhcpd.leases.n where n is the most current one at the time the process began running. It then renames dhcpd.leases.tmp to dhcpd.leases, and all the intermediate files that were aggregated can be deleted. Note that instead of ordering the suffix, can make the suffix the time. The pointer at the end of the file determines the next file in the "linked list".