Sedikit cerita dibalik kegiatan mirroring

Sekedar mempublish tulisan di milis id-ubuntu :D sayang rasanya kalau ngga ditulis di blog :P

***

On 10/3/07, Someone wrote:

> Biar tambah OOT

> Waktu saya update dari FF ke GG, pertama kali nyoba pake mirror ID, ada

> errornya tuh, kalo gak salah wktu ngedownload linux-header yang 2.6.22 ,

> trus coba ganti pake main server, lancar2 aja.

> Emang kalo mirror ubuntu itu ga otomatis ngikut main servernya ? thx

biar gak oot, ganti topik sekalian ya..

Main server pastilah yg paling akurat. Dari namanya juga udah server
utama. Server yang jadi master. Tugas mirror lah yang menyalin isi
server utama tersebut.

Kalau gw ngeliat2 dokumentasi ttg mirroring debian, mirror itu ada 2
jenis, yaitu push mirror dan pull mirror.

  • Push mirror itu di-trigger dari server pusat. Jadi kalau server
    pusat mengalami perubahan, maka dia akan memberitahu seluruh push
    mirror agar mengupdate contentnya. Artinya server pusat yang aktif
    untuk urusan update content.

  • Sedangkan jenis yang kedua, yaitu pull mirror, server mirror yang
    aktif untuk mengupdate content. Biasanya proses update dilakukan
    secara periodik, misalnya dalam 1 hari melakukan 2 kali sinkronisasi
    yaitu pada jam 12 malam dan 12 siang.

Nah, kalau kambing.ui.edu itu menjadi pull mirror saja supaya waktu
download bisa diatur sendiri karena proses download hanya dilakukan di
malam hari ketika koneksi internet tidak dipakai untuk kerja. Jika UI
punya dedicated bandwith untuk mirroring, mungkin saja download bisa
dilakukan kapan saja sehingga layak menjadi push mirror.

Proses download ini sering menjadi masalah bagi kita di indonesia yang
koneksi ke luar negerinya cenderung kurang baik. Jika ada update besar
di server utama (misalnya tiba2 repository Hardy Heron muncul), maka
server mirror harus mendownload content yang sangat besar tersebut
(untuk Ubuntu bisa sampai 60 GB!). Proses download sampai komplit ini
bisa dilakukan sampai berhari-hari mengingat besarnya data yang harus
di download. Pada masa-masa ini, ketelatan mirror thd server utama
bisa besar. Namun setelah proses ini komplit, maka proses sinkronisasi
berikutnya bisa dilakukan dengan cepat karena tidak banyak data yang
harus di download.

Khusus untuk mirror debian dan ubuntu, ada satu direktori yang berisi
timestamp kapan proses mirror terakhir dilakukan. Sepertinya direktori
ini hanya konvensi saja sehingga tidak semua mirror memilikinya.
Direktori yang dimaksud ada di /project/trace/

Coba lihat isi direktori berikut.

Di situ bisa kelihatan server-server mana saja yang “dilalui” selama
proses mirror. Seharusnya, setiap server mirror meletakkan satu buah
file di sana yang bernama nama server ybs.

Kalau dilihat di 3 URL di atas, bisa dikira2 kalau kambing.ui.edu dan
dl2.foss-id.web.id terakhir kali melakukan sinkronisasi pada tanggal 3
Oktober 2007 yang artinya cukup up to date. Sedangkan
id.archive.ubuntu.com terakhir kali melakukan sinkronisasi pada
tanggal 24 September 2007 yang artinya sudah telat 1 minggu lebih.

Tidak semua mirror ubuntu/debian menyimpan data ini, contohnya adalah
http://buaya.klas.or.id/ubuntu/project/trace/ yang hanya menyimpan
timestamp dia sendiri. Namun ini sudah cukup untuk memberi tahu user
kapan terakhir kali mirror tersebut diupdate.

Lalu, spesifik untuk repository ubuntu/debian, isi direktori
repository secara umum dapat dibagi dua, yaitu /dists/ dan /pool/. Isi
direktori /dists/ adalah index atau daftar isi dari seluruh paket yang
ada. Sedangkan isi dari direktori /pool/ adalah paket-paket *.deb.
Dari segi ukuran, tentu saja isi /pool/ yang lebih besar, jauh lebih
besar.

Kalau membaca script mirror yang diberikan oleh Debian, teknik
mirroring yang disarankan adalah melakukan sinkronisasi direktori
/pool/ terlebih dahulu baru tanpa melakukan penghapusan file apapun
setelah itu dilakukan sinkronisasi keseluruhan (termasuk isi direktori
/dists/ dan menghapus file yang sudah tidak ada di server utama). Hal
ini dimaksudkan agar index tetap terjaga walaupun file deb sudah
berubah. Sehingga isi index tetap sinkron dengan file-file *.deb yang
dimiliki. Andai seluruh file *.deb yang terbaru sudah dimiliki, maka
index diubah dan file-file *.deb yang sudah tidak ada di server utama
dapat dihapus dari mirror.

Satu hal yang sering terjadi jika strategi di atas tidak dilakukan
adalah ketika file index sudah berubah, file-file *.deb yang ada belum
sinkron. Sehingga bisa saja ada file yang ditunjuk oleh file index
yang baru belum selesai di download. Sehingga user akhirnya berhadapan
dengan pesan error: file not found.

Nah.. apakah sudah terbayang hal-hal dibalik proses mirroring?

Sekian aja kalo gtu.. mudah2an berguna :)

Bookmark the permalink.

3 Responses to Sedikit cerita dibalik kegiatan mirroring

  1. milisdad says:

    Trims gambarannya, lumayan terbayang :D

  2. budiw says:

    Trims pak fajran atas ceritanya..

    –budiw

  3. kunderemp says:

    Akhirnya mengerti juga bedanya dist/ dengan pool/ :p
    (baru belajar instal2 neh :p )

Comments are closed.