Gli effetti problematici includono la risoluzione lenta del nome host (a meno che il sistema operativo non converta in qualche modo l'elenco lineare in una struttura più veloce da cercare?) e il potenziale per un'interazione sorprendente con la shell tab completamento molto prima che venga raggiunta una dimensione di file significativa.
Per esempio! Se si inseriscono 500.000 voci host in /etc/hosts
# perl -E 'for (1..500000) { say "127.0.0.10 $_.science" }' >> /etc/hosts
per la scienza, il nome host predefinito tab il completamento in ZSH richiede circa ~25 secondi sul mio sistema per restituire una richiesta di completamento (concesso, questo è su un laptop del 2008 con un disco da 5400 RPM, ma comunque).
Non penso che abbia un limite di dimensione in termini di numero di righe.
Prima del DNS (che è stato utilizzato nel 1985), era questo file che serviva come unico mezzo per eseguire ricerche di nomi host, quindi presumo che ciò significhi che il file dovrebbe essere in grado di contenere migliaia o almeno centinaia di voci per essere in grado di supportare i nodi Internet pre-1985 meglio connessi.
Ecco un esempio del 1985 (il formato è leggermente cambiato):http://jim.rees.org/apollo-archive/hosts.txt Questo file ha 1680 righe di cui 1325 sono righe host. Le restanti 355 righe sono vuote, commenti, reti o gateway.
L'unico vero limite che ho potuto trovare era quello su alcuni sistemi, le singole linee sono limitati a meno di BUFSIZ
caratteri (1024 sulla mia macchina OpenBSD).
Se hai più di un paio di manciate di voci in /etc/hosts
, dovresti invece considerare di configurare un server dei nomi locale, ma questa è la mia opinione personale.
Grazie a Jeff Schaller per aver scoperto questo.
Come posso determinare il limite di dimensione di /etc/hosts?
È un file normale, quindi il limite corrisponderebbe ai limiti del filesystem sottostante (che sarebbe esso stesso limitato dal numero di dischi dietro di esso), meno lo spazio utilizzato da qualsiasi altro file nello stesso (probabilmente root (/
)) filesystem:
- ext2/3:2 TiB
- ext4:16 TiB (con la dimensione predefinita del blocco di 4 KiB)
- xfs:500 TiB
Come posso impostare il limite di dimensione di /etc/hosts?
Poiché si tratta di un file modificato manualmente, solo manualmente:
sed -i '100,$d' /etc/hosts
(per rimuovere le righe 100 e oltre).