Efek bermasalah termasuk resolusi nama host yang lambat (kecuali OS entah bagaimana mengubah daftar linier menjadi struktur pencarian yang lebih cepat?) dan potensi interaksi yang mengejutkan dengan tab shell penyelesaian jauh sebelum ukuran file yang berarti tercapai.
Sebagai contoh! Jika seseorang menempatkan 500.000 entri host di /etc/hosts
# perl -E 'for (1..500000) { say "127.0.0.10 $_.science" }' >> /etc/hosts
untuk sains, nama host default tab penyelesaian di ZSH membutuhkan waktu sekitar ~25 detik pada sistem saya untuk mengembalikan perintah penyelesaian (memang, ini ada di laptop dari tahun 2008 dengan disk 5400 RPM, tapi tetap saja).
Saya tidak berpikir itu memiliki batas ukuran dalam hal jumlah baris.
Sebelum DNS (yang mulai digunakan pada tahun 1985), file inilah yang berfungsi sebagai satu-satunya cara untuk melakukan pencarian nama host, jadi saya berasumsi bahwa ini berarti file tersebut harus dapat memiliki ribuan atau setidaknya ratusan entri untuk dapat mendukung simpul Internet sebelum tahun 1985 yang paling terhubung dengan baik.
Berikut adalah contoh dari tahun 1985 (formatnya agak berubah):http://jim.rees.org/apollo-archive/hosts.txt File ini memiliki 1680 baris dimana 1325 adalah baris host. 355 baris sisanya kosong, komentar, jaringan, atau gateway.
Satu-satunya batasan nyata yang dapat saya temukan adalah pada beberapa sistem, garis individu terbatas kurang dari BUFSIZ
karakter (1024 pada mesin OpenBSD saya).
Jika Anda memiliki lebih dari beberapa entri di /etc/hosts
, Anda sebaiknya mempertimbangkan untuk menyiapkan server nama lokal, tetapi itu pendapat pribadi saya.
Terima kasih kepada Jeff Schaller karena telah menggali ini.
Bagaimana cara menentukan batas ukuran /etc/hosts?
Ini adalah file biasa, jadi batasnya akan sesuai dengan batas sistem file yang mendasarinya (yang akan dibatasi oleh jumlah disk di belakangnya), dikurangi ruang yang digunakan oleh file lain yang sama (mungkin root (/
)) sistem file:
- ext2/3:2 TiB
- ext4:16 TiB (dengan ukuran blok default 4KiB)
- xfs:500 TiB
Bagaimana cara mengatur batas ukuran /etc/hosts?
Karena ini adalah file yang diedit secara manual, hanya secara manual:
sed -i '100,$d' /etc/hosts
(untuk menghapus baris 100 dan seterusnya).