2009/01/29

Membuat sistem sekunder sebagai rescue-system

Lebih dari setahun yang lalu saya buat artikel ini lalu saya kirimkan ke InfoLinux, tentu dengan harapan akan dimuat dan saya dapet honor, hehe. Tapi sampai saat ini tidak ada berita apakah artikel ini akan dimuat atau tidak.

Yah, berhubung saya punya media publikasi sendiri (tapi ga ada duitnya), disertai dengan niat baik berbagi pengalaman dan ilmu, dan kekosongan ide dalam menulis blog, maka saya post aja artikel ini di sini. Ada sedikit kalimat yg diubah (dikiiit banget) supaya tulisan ini tidak terlalu terkesan formal.

Tulisan ini murni dari kepala saya sendiri. Jadi kalau ada tulisan yg mirip, saya yakin itu karena kebetulan.


===


Membuat sistem sekunder sebagai rescue-system
Dudi Indrasetiadi

Memiliki server yang disimpan di datacenter milik sendiri --di dalam negeri-- atau setidaknya dekat dan mudah dijangkau, memang lebih nyaman jika kita melihat dari sisi kemudahan pengelolaan. Tidak ada masalah jika suatu saat harus melakukan instalasi ulang atau boot ke single-user mode untuk membetulkan beberapa parameter di file konfigurasi jika server gagal boot secara normal. Tapi kendala bandwidth di dalam negeri yang sangat mahal dan terbatas membuat banyak pengelola server lebih memilih menyimpan (menyewa) server di datacenter yang berada di luar negeri.

Keuntungan bandwidth yang relatif murah di luar negeri harus dibayar dengan kesulitan pengelolaan server karena kita tidak bisa melakukan kontak langsung secara fisik dengan server. Yang berarti kita hanya bisa melakukan perbaikan jika kemampuan networking server tersebut aktif. Jadi bagaimana kalau mau instal ulang?

Beberapa datacenter terkenal bersikap kurang ramah dengan membebankan biaya yang tidak murah jika kita meminta mereka untuk melakukan instalasi ulang OS. Bila pada awalnya kita mengutamakan kesederhanaan dengan hanya membuat satu partisi untuk keseluruhan sistem, kemungkinan besar akan ada biaya tambahan lagi untuk menyelamatkan data sebelum instalasi OS dilakukan.

Tulisan ini menceritakan pengalaman sehari2 saya dalam pembuatan rescue-system di server yang menggunakan Debian GNU/Linux 4.0 (etch). Rescue-system yang dimaksud di sini adalah sebuah sistem baru yang sangat minimal, yang terpisah dari sistem utama. Kita hanya butuh supaya sistem ini bekerja dan bisa dikendalikan dari jauh (SSH) untuk bisa melakukan maintenance lebih lanjut. Akan lebih baik jika sistem baru ini dibuat pada awal-awal pengaturan server, pada saat sumberdaya penyimpan data belum terlalu banyak terpakai.

Sebetulnya ada banyak cara lain untuk menginstal sebuah sistem yang berada di partisi yang tidak sama dengan sistem yang sebelumnya telah bekerja, tapi untuk satu tulisan satu cara aja, ya. Diharapkan dengan adanya rescue-system ini, biaya yang dikenakan oleh pihak datacenter untuk instalasi ulang sistem operasi bisa ditekan.

1 Siapkan partisi untuk rescue-system

Sebagian besar langkah yang dilakukan adalah memanfaatkan utilitas managemen paket program dari Debian yaitu apt-get. Oleh sebab itu, sebelum memulai semua proses yang dituliskan di bawah ini, pastikan anda telah mengeset konfigurasi source apt ke mirror yang bisa diandalkan, baik dari segi kecepatan maupun kekinian versi program yang disediakan. Biasanya yang diperlukan oleh sebagian besar sistem Debian adalah repositori untuk sebuah versi archive dan versi update dari archive tersebut. Contoh isi file /etc/apt/sources.list adalah seperti ini:

deb http://dtp.archive.or.id/debian etch main contrib non-free
deb http://dtp.archive.or.id/debian-security etch/updates main contrib non-free


Jangan lupa untuk mengupdate index file disesuaikan dengan index yang ada di file di atas dengan perintah “apt-get update”.

1.1 Buat partisi
Karena kita akan menginstal sistem baru di partisi yang beda (terpisah) dari sistem utama, maka kita perlu sebuah partisi independen untuk diisi oleh sistem ini. Disarankan partisi untuk sistem ini berada pada harddrive yang berbeda dengan host-system. Misal host-system ada di drive pertama (sda), maka disarankan untuk menyimpan partisi rescue-system di drive ke-dua (sdb).

Siapkanlah sebuah partisi dengan ukuran sekitar 1-2GB untuk keperluan rescue-system ini. Utilitas fdisk, cfdisk, atau pemartisi yang lain akan sangat membantu. Misalnya dengan cfdisk:

# cfdisk /dev/sdb

Dan ikuti menu-menu yang ada di dalam program tersebut.

1.2 Format partisi
Selanjutnya, setelah partisi disiapkan, kita akan memformat partisi tersebut dengan filesystem yang didukung oleh linux. Disarankan untuk menggunakan filesystem yang sama dengan yang digunakan oleh host-system. Misal partisi yang telah disiapkan adalah sdb1, dan filesystem yang akan digunakan adalah ext3, maka perintah ini bisa digunakan:

# mkfs.ext3 /dev/sdb1

Jika proses format sudah selesai, mount-lah partisi tersebut ke direktori yang tidak digunakan. Buat saja direktori yang tidak biasa digunakan oleh sistem linux. Perintah berikut akan membantu:

# mkdir /reskyu
# mount /dev/sdb1 /reskyu


Selanjutnya kita akan mulai menginstall rescue-system.

2 Install base-system dengan debootstrap

Alat yang digunakan dalam proses ini bernama debootstrap. Debootstrap biasa digunakan untuk menginstal sistem Debian (atau turunannya, misal Ubuntu) di dalam sebuah sistem tanpa menggunakan CD instalasi. Bisa juga untuk membuat sebuah sistem lain yang nantinya bisa digunakan dengan chroot. Pada langkah-langkah yang ditunjukkan di bawah, akan terlihat bahwa kita menggunakan debootstrap untuk instalasi dan chroot untuk mengedit konfigurasi.

Pastikan paket debootstrap sudah ter-install di host-system. Perintah berikut akan menginstall paket yang dibutuhkan jika memang belum terinstall:

# apt-get -V install debootstrap

Jika sudah terinstal, maka proses bootsrap bisa segera dimulai. Petunjuk debootstrap lebih lengkap bisa dilihat di manual page debootstrap(8). Secara garis besar, perintah dan argumennya adalah seperti ini:

debootsrap $DISTRIBUSI $DIR_TARGET $URL_MIRROR

Jadi dalam kasus ini, perintah instalasi adalah sebagai berikut:

# debootstrap etch /reskyu http://archive.or.id/debian

Mirror yang digunakan bisa diganti dengan alamat mirror yang paling bisa anda andalkan. Tambahkan opsi --verbose jika ingin melihat log proses lebih lengkap. Ikuti terus prosesnya sampai muncul pesan bahwa proses instalasi telah selesai.

---cut---
I: Configuring tasksel-data...
I: Configuring sysklogd...
I: Configuring tasksel...
I: Base system installed successfully.


3 Konfigurasi rescue-system

Sistem baru ini, meskipun dalam banyak hal tidak berbeda dengan host-system, memiliki beberapa spesifikasi yang sangat beda dan harus diubah di file konfigurasi supaya sistem bisa di-boot dengan normal. Begitu pula dengan dengan beberapa paket yang wajib diinstall.

3.1 Konfigurasi wajib
Langkah selanjutnya adalah mengeset konfigurasi untuk sistem baru ini. Karena sistem yang baru diinstal ini diharapkan berjalan di mesin yang sama dengan host-system, dan fungsinya adalah untuk menggantikan host-system secara sementara, maka beberapa file konfigurasi sebaiknya disalin secara utuh.

3.1.1 /etc/network/interfaces
Perintah ini akan menyalin file konfigurasi networking dan resolver ke sistem yang baru diinstal:

# cp -av /etc/network/interfaces /reskyu/etc/network/
# cp -av /etc/resolv.conf /reskyu/etc/


Atau bisa juga dengan membuat file /etc/network/interfaces yang baru di dalam sistem baru. Bisa dengan meniru template berikut ini (boleh copy-paste), ubahlah nilai IP dengan yang sebenarnya. Perhatikan bahwa contoh di bawah ini bisa saja berbeda dengan konfigurasi host-system milik anda.

# awal file /etc/network/interfaces
auto lo eth0
iface lo inet loopback
iface eth0 inet static
address 167.205.4.23
netmask 255.255.0.0
network 167.205.0.0
broadcast 167.205.0.255
gateway 167.205.22.123
dns-nameservers 167.205.0.101
dns-search localdomain
# akhir file /etc/network/interfaces


3.1.2 Sesuaikan konfigurasi apt
Salinlah konfigurasi apt dari host-system ke sistem baru. Ini adalah cara yang paling mudah.

# cp -av /etc/apt /reskyu/etc

3.2 Konfigurasi di dalam chroot
Untuk file konfigurasi lain bisa dilakukan setelah masuk ke dalam sistem baru. Yang pertama harus dilakukan adalah chroot ke dalam direktori yang telah diinstall sistem linux.

# chroot /reskyu

Lanjutkan dengan mounting /proc

% mount -tproc proc /proc

3.2.1 /etc/fstab
Pastikan direktori root untuk sistem ini dinyatakan dengan benar di file /etc/fstab. Dan beberapa entri lain bisa meniru host-system. Contohnya isi /etc/fstab adalah seperti ini:

#awal file /etc/fstab
proc /proc proc defaults 0 0
/dev/sdb1 / ext3 errors=remount-ro 0 1
/dev/hdb /media/cdrom0 auto user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
#akhir file /etc/fstab


Nama device di atas kemungkinan besar berbeda dengan nama device di PC lain, sesuaikan dengan keadaan di PC anda sendiri. Entri lain bisa ditambahkan sesuai dengan kebutuhan.

3.2.2 Update repositori apt
Setelah itu, lakukan perintah berikut untuk meng-update cache repositori.

% apt-get update

3.2.3 Instal kernel linux
Sistem baru ini juga membutuhkan kernel lengkap dengan modul yang semuanya harus ada di dalam struktur file sistem ini. Instalasi kernel bisa dilakukan dengan apt-get. Jangan lupa utnuk menggunakan versi kernel terbaru dan yang sesuai dengan arsitektur mesin server.

% apt-get -V install linux-image-2.6.18-4-k7

Mungkin akan ada banyak dialog yang menanyakan apakah kita yakin akan melakukan proses instalasi, pilih saja jawaban yang menunjukkan bahwa proses instalasi harus dilakukan. Selain itu juga mungkin akan ditemukan beberapa pesan warning mengenai locales. Silahkan merujuk ke bagian konfigurasi optional.

3.2.4 Instal server SSH
Sistem ini akan kita kendalikan dari jauh sehingga perlu ada servis yang mengizinkan kita log in ke dalam server. Instalasi ssh bisa dilakukan dengan perintah:

% apt-get -V install openssh-server

Pastikan supaya kita bisa log in sebagai root. Gantilah password root dengan perintah:

% passwd

Pastikan untuk memberi password yang mudah diingat tapi tidak mudah ditebak. Jika ingin lebih aman, lebih baik menggunakan otentikasi menggunakan ssh key.

3.3 Konfigurasi optional
Konfigurasi berikut akan berguna menghilangkan warning dan beberapa kemampuan lain. Namun tidak terlalu penting sehingga bisa dilewat. Ini juga dilakukan di dalam environement chroot.

3.3.1 Konfigurasi locales
Instalasi dan konfigurasi locales bisa dilakukan dengan perintah berikut:

% apt-get -V install locales
% dpkg-reconfigure locales


Pada kotak dialog, berhubung ini adalah sistem minimal, berikan saja jawaban bahwa yg ingin di-generate hanya locales en_US.*.

3.3.2 Instal GRUB
GRUB sebetulnya tidak dibutuhkan, karena yang akan digunakan adalah GRUB milik host-system. Tapi jika diperlukan, GRUB boleh diinstall untuk backup.

% apt-get -V install grub

3.3.3 Ganti nama host
Editlah file /etc/hostname dan /etc/hosts. Sesuaikan IP dan nama host dengan yang diinginkan.

% echo "rescue-system" > /etc/hostname
% echo "127.0.0.1 localhost.localdomain localhost" > /etc/hosts
% echo "167.205.4.23 rescue-system.masterwebnet.com rescue-system" >> /etc/hosts


3.4 Konfigurasi bootloader keseluruhan
Instalasi dan konfigurasi rescue-system sudah selesai. Yang terakhir yang harus dilakukan adalah mengedit konfigurasi bootloader (GRUB) di host-system, berhubung bootloader inilah yang digunakan pada saat booting.

Keluarlah dari chroot:

% umount /proc
% exit

GRUB yang terinstal pada MBR server adalah GRUB dari host-system karena itu file konfigurasi yang diedit di bagian ini adalah file yang ada di host-system. Editlah file /boot/grub/menu.lst menjadi seperti berikut (perhatikan baris setelah kalimat "### END DEBIAN AUTOMAGIC KERNELS LIST"):

---cut---
initrd /boot/initrd.img-2.6.18-4-686
savedefault

### END DEBIAN AUTOMAGIC KERNELS LIST

title Rescue
root (hd1,0)
kernel /boot/vmlinuz-2.6.18-4-k7 root=/dev/sdb1 ro
initrd /boot/initrd.img-2.6.18-4-k7


Pastikan device untuk root serta kernel command line sesuai dengan kondisi sistem baru anda. Contoh di atas, “root (hd1,0)”, artinya sistem baru ada di HD ke-dua partisi pertama.

4 Selesai

Jika semua telah selesai, dan yakin tidak ada konfigurasi yang terlewat, umount-lah partisi /reskyu. Atau lebih baik lagi, setelah di-unmount, hapus saja direktori /reskyu karena sudah tidak diperlukan.

Dengan ini selesailah sudah proses instalasi dan konfigurasi rescue-system. Jika suatu saat kita perlu memboot server dengan sistem rescue ini, kita tinggal mengirim tiket ke datacenter dan menyampaikan bahwa yang ingin kita boot adalah entri "Rescue". Setelah itu, proses maintenance bisa dilakukan sendiri tanpa campur tangan datacenter.

5 Rujukan

[1] Manual debootstrap

3 comments:

aurellinluv said...

duh, ampyun om ampyuuuun....beraaaats topiknyah

idud said...

Wah si Ica. Kalau dikerjakan mah mudah aja ternyata.

feto said...

artikelnya menarik nih apalagi under linux truz pake sintax consol nya keren walaupun saya masih awam dalam linux...^_^

terima kasih infonya, silakan mampir yaa ke sini dan jika mau tahu tentang paper pasca silakan berkunjung ke sini yaaa...