Mengecek ukuran dan memilah-milah repositori

Bagi para penyedia mirror, salah satu hal yang mungkin dilakukan sebelum memirror sebuah repositori adalah mencari tahu ukuran repositori. Daripada kehabisan ruang harddisk di tengah2 proses mirroring, lebih baik dicari tahu sebelumnya bukan?

Cara yang biasa saya lakukan adalah dengan menggunakan rsync. Gunakan opsi -avH maka Anda akan mendapatkan daftar berkas beserta ukurannya. Sebagai contoh, mari kita cek ukuran repositori Fedora. Saya akan menggunakan mirror fr2.rpmfind.net karena cukup cepat diakses dari tempat saya.

$ rsync -av fr2.rpmfind.net::linux/fedora/ > lengkap.txt
$ tail -n1 lengkap.txt
total size is 1051301220677  speedup is 35944.42

Dapat dilihat bahwa ukuran repositori Fedora adalah 1051301220677 Byte alias sekitar 1 TeraByte.

Ingin memirror semuanya? ya silakan jika mau. Namun tidak seluruh penyelenggara mirror memiliki harddisk besar dan koneksi cepat untuk mengunduh data sebanyak ikut. Selain itu, jika hanya sebagian kecil dari repositori yang digunakan oleh orang, sebagian besar lainnya hanya akan menyita tempat dan tidak berguna karena jarang atau bahkan tidak pernah digunakan oleh orang.

Untuk itu, isi repositori yang ingin dimirror perlu dipilah-pilah. Buat sebuah berkas yang berisi daftar pola berkas yang tidak akan dimirror (excluded). Silakan baca manual rsync untuk mencari tau cara penulisannya. Sebagai contoh, saya akan menggunakan daftar yang tertulis pada http://pastie.org/350853, yang saya simpan dalam berkas exclude.txt.

$ rsync -av --exclude-from exclude.txt fr2.rpmfind.net::linux/fedora/ > saring.txt
$ tail -n1 saring.txt
total size is 93447289613  speedup is 26148.68

Ukuran repositori Fedora hasil saringan ini telah menyusut cukup banyak. Dari total lengkap sebesar 1TB sekarang hanya berukurang sekitar 100GB. Hemat 90% ruang harddisk untuk data-data yang saya rasa tidak banyak diperlukan orang lagi.

Sekian saja tips dari saya 🙂

Oya, sekalian nanya. Ada berapa banyak orang yang perlu repositori Fedora untuk arsitektur x86_64 (alias amd64)? Kalau filter x86_64 dibuang, inilah yang saya dapatkan.

total size is 199176293997  speedup is 25021.69

Berbeda sekitar 100GB dari saringan sebelumnya yang bertujuan agar paket untuk i386 saja yang lolos saringan. Berapa lama ya donlod 100GB?

Susunan repository, hardlink, dan mirroring

Pada repositori Ubuntu, ada direktori pool/ yang berisi seluruh berkas yang ada, mulai dari berkas paket deb, kode sumber orig.tar.gz, modifikasi tuk membuat paket diff.gz, dan lain-lain. Berkas-berkas ini ditujuk dari daftar isi yang ada pada berkas Packages dan Sources yang ada di bawah direktori dists/. Sebuah berkas, tentu saja bisa ditunjuk oleh lebih dari satu daftar isi, yang melambangkan versi dan arsitektur berbeda. Kalau ada berkas yang dipakai bersama, bisa lebih hemat tempat bukan?

Lain distro, lain pula teknik yang dipakai tuk menyusun repositori. Coba lihat repositori Fedora. Berkas-berkas paket, selain dapat ditemukan di bawah direktori Everything/, dapat juga ditemukan di bawah direktori Fedora/. Kalau dilihat sekilas, banyak duplikasi berkas di sana yang tentu saja kalau tidak diatur dengan baik, hanya membuang kapasitas harddisk. Dengan kata lain, tidak efisien!

Susunan repositori Fedora yang dibuat seperti itu belum tentu tidak memiliki maksud tertentu. Berhubung saya tidak familiar dengan Fedora termasuk repositorinya, saya hanya dapat menduga-duga saja. Total ukuran berkas paket di bawah direktori Fedora/ untuk i386 adalah sekitar 2.9 GB. Sedangkan total ukuran berkas di bawah direktori Everything/ adalah sekitar 12.6 GB. Sungguh perbedaan ukuran yang sangat besar bukan? Saya duga, paket yang ada di bawah direktori Fedora/ adalah paket-paket “pilihan” sedangkan yang ada di bawah direktori Everything/, sesuai namanya, adalah seluruh paket yang ada.

Penyusunan direktori seperti ini sebenarnya mempermudah urusan mirroring. Aplikasi rsync yang dapat digunakan untuk menyalin berkas “mentah-mentah” sudah bisa digunakan untuk membuat mirror sebuah repositori Fedora secara selektif, yaitu hanya repositori untuk versi dan arsitektur tertentu saja. Berbeda dengan menyalin repositori Ubuntu yang harus menggunakan aplikasi tambahan seperti debmirror jika ingin menyalin secara selektif.

Lalu bagaimana caranya agar tetap bisa mengatur susunan repositori seperti Fedora dan tetap bisa menjaga efisiensi penggunaan harddisk seperti Ubuntu? Pembuatan hardlink bisa menjadi jawaban! Dengan menggunakan hardlink, sebuah berkas dapat dibuat “salinannya” di tempat lain tanpa harus mengorbankan kapasitas harddisk karena berkas-berkas tersebut sebenarnya adalah berkas yang sama. Yaaa.. mirip pointer pada bahasa C yang menunjuk ke alamat memori yang sama. Dan, … repositori Fedora menggunakan cara ini! Berkas yang ada di bawah direktori Fedora/ merupakan hardlink ke berkas yang ada di bawah direktori Everything/ (atau sebaliknya? ah sama saja 🙂

Nah.. bagi para pemelihara mirror yang menggunakan rsync, untungnya rsync cukup cerdas untuk membaca informasi link ini. Berkas berbeda yang sebenarnya sama karena penggunaan hardlink ini dapat dideteksi sehingga sang mirror tidak perlu menyalin berkas yang sama lebih dari satu kali dan rsync akan membuatkan hardlink-nya secara otomatis. Hemat bandwidth, hemat waktu, dan tentu saja hemat tempat!

Caranya cukup dengan menambahkan opsi -H pada saat menjalankan rsync.

$ rsync -avH server::modul/ /tujuan/

Sekian dulu, nanti terlalu panjang =P