RSS

Menggunakan Fasilitas Software RAID di Linux

10 Jun

Implementasi Software RAID di Linux

Mungkin Anda sering mendengar istilah RAID saat membeli motherboard atau saat melakukan setting PC server.  Apa sebenarnya RAID itu? Ini adalah singkatan dari Redundant Array of Inexpensive Disk atau kalau di-Indonesiakan kira-kira maknanya ‘kumpulan disk berharga terjangkau yang saling menunjang”. Terjemahan ini memang tidak benar-benar pas, tetapi sudah menggambarkan dua sifat utama RAID:
1. Terdiri atas kumpulan hard disk biasa, bukan dibentuk dari disk khusus atau berharga sangat mahal.
2. RAID dibuat untuk meningkatkan per­forma baca-tulis dan tingkat keamanan data.
Poin 2 inilah yang paling menarik untuk dibahas karena inilah alasan utama mengapa seseorang ingin menggunakan konfigurasi RAID. Untuk memahaminya, kita harus terlebih dahulu mempelajari macam-macam jenis RAID:
a) RAID 0, sering disebut striping without parity. Data akan ditulis merata pada semua partisi disk yang menjadi anggota RAID . Konfigurasi ini bisa diandaikan seperti seseorang yang memiliki bola biliar dengan nomor 1 sampai dengan 10. Nomor ganjil masuk ke keranjang berwarna biru dan nomor genap masuk ke keranjang warna merah.
Dengan susunan ini, jika dua orang di­tugaskan mengambil bola nomor 1 sampai dengan 6, masing-masingnya dapat segera mengambil tiga bola dari masing-masing keranjang. Tiap orang hanya boleh memakai tangan kanan (dikondisikan mirip seperti head hard disk yang cuma satu) yang bergerak secara acak membaca data. Bisa Anda bayangkan bahwa pekerjaan ini menjadi dua kali lebih cepat dibanding dikerjakan hanya oleh satu orang.
b) RAID 1, dikenal dengan nama mirroring. Data akan ditulis sama persis ke semua anggota RAID.   Keuntungan dari pola ini adalah jika terjadi kerusakan pada salah satu partisi anggota RAID, maka Anda bisa langsung menggunakan data cadangan di partisi lainnya. Hal ini berbeda dengan RAID 0 karena kerusakan salah satu partisi anggota akan menyebabkan kegagalan baca-tulis secara keseluruhan.
Kembali ke analogi sebelumnya, RAID 1 bertindak menduplikasi 10 bola yang ada sehingga ada 20 bola. Ada 10 bola yang masuk ke satu keranjang dan sisanya ke keranjang lainnya. Apabila 10 bola di keranjang biru rusak, maka 10 bola di keranjang merah bisa langsung digunakan untuk bermain biliar.
c) RAID 5, biasa disebut striping with parity. Pada dasarnya, konfigurasi ini  mirip seperti RAID 0, hanya saja sekarang ada tambahan suatu data pengaman yang disebut parity. Parity ini memungkinkan struktur RAID dipulihkan seperti semula jika salah satu partisi rusak.
Apabila diringkas, tingkat keamanan data yang paling maksimal ditawarkan oleh RAID 1. Pengguna yang menginginkan peningkatan performa baca-tulis sebaiknya memilih RAID 5. Secara implisit, keuntungan penggunaan RAID baru terasa jika Anda menggunakan lebih dari satu disk (bisa bertipe Parallel ATA atau Serial ATA). Alasannya cukup sederhana, jika hanya satu disk yang terlibat, head akan bergerak maju-mundur (saat menulis atau membaca) dalam interval waktu yang singkat sehingga malah menurunkan kinerja. Dengan banyaknya disk, data akan bisa diakses secara paralel dan independen.

Sekarang Anda dapat mulai praktik penggunaan RAID. Anda disarankan menggunakan distro Linux terbaru, misalnya Fedora 6 atau 7, Ubuntu 7.04 atau 7.10, OpenSuSE 10.3, dan seterusnya. Apabila tidak bisa menggunakan distro baru, setidaknya gunakan kernel versi terbaru (2.6.23.13 saat tulisan ini dibuat). Ini dimaksudkan agar dukungan RAID benar-benar maksimal dan sesedikit mungkin mengandung kesalahan program.
Hal ini patut dimaklumi karena fasilitas RAID masih aktif dikembangkan.  Pada penulisan ini, pengujian mengikuti prosedur berbasis distro Fedora 7 yang mengguna­kan kernel 2.6.21-1.3194. Seperti biasa, prompt $ berarti perintah dikerjakan sebagai user nonroot dan prompt # berarti sebagai root.
Persiapan Instan

Langkal awal dimulai dengan membuat konfigurasi mirroring. Di sini, diasumsikan ada dua hard disk, masing-masing sebagai primary master dan primary slave. Pada distro terkini, mereka dikenali de­ngan nama /dev/sda dan /dev/sdb. Di samping itu, periksa apakah paket mdadm sudah ter-install:
# rpm -qa | grep mdadm
mdadm-2.6.1-4.fc7
Karena mirroring membutuhkan minimal dua partisi yang sama besar, perlu disiapkan dulu dua partisi kosong. Kenapa harus kosong? Karena jika partisi ini sudah berisi data (dalam arti sudah diformat dan ada file di dalamnya), informasi tersebut akan ditimpa oleh informasi RAID.

Dengan kata lain, data Anda sebelumnya menjadi tidak dapat diakses lagi! Catatan penting lainnya adalah semua partisi yang terlibat harus berukuran sama persis. Apabila tidak sama, driver RAID akan mengambil patokan ukuran partisi terkecil. Hal ini akan lebih jelas setelah kita jalani percobaan pertama.
Pada disk pertama, buat partisi berukuran 500 MB:
# parted /dev/sda mkpart logical 20000
20500
Hal yang sama untuk disk kedua:
# parted /dev/sdb mkpart logical 15000
15500
Informasikan adanya perubahan partisi agar segera dikenali:

# partprobe
Sesuaikan perintah di atas menurut kondisi struktur partisi sebenarnya. Partisi bisa berupa partisi primary maupun logical. Proses format tidak dilakukan pada tahap ini, melainkan setelah device RAID terbentuk. Perintah berikut akan menjadikan dua partisi ini (dinamakan sda3 dan sdb3) sebagai anggota RAID:
# mdadm -C /dev/md0 -l 1 -n 2 /dev/sda5
/dev/sdb5 t
Arti dari perintah di atas adalah:
-C untuk membuat device RAID sesuai dengan parameter yang diberikan. Dalam hal ini digunakan /dev/md0. Nama “md” adalah konvensi untuk perangkat RAID.
-l menentukan tipe RAID yang dipakai. Angka 1 berarti konfigurasi mirroring yang dipakai.
-n menunjukkan jumlah partisi yang dimasukkan dalam struktur RAID. Logikanya, angka ini harus lebih besar dari 1 karena jelas tidak mungkin hanya dengan satu partisi bisa dilakukan mirroring/striping.
Berikutnya adalah nama-nama partisi yang dilibatkan. Isikan sesuai nama-nama partisi yang telah disiapkan. Setelah pe­rintah di atas diberikan, file device RAID akan terbentuk dan siap digunakan. Untuk memastikannya, periksa output dari file /proc/mdstat:
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda5[1] sdb5[0]
409472 blocks [2/2] [UU]
[==================>..]  resync
= 93.2% (382848/409472) finish=0.0min
speed=9475K/sec
unused devices: <none>
Output di atas menandakan sistem RAID sedang melakukan inisialisasi untuk memastikan kedua partisi berada pada kondisi yang 100% sama. Tidak lama kemudian, output akan berganti menjadi seperti ini:
$ cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda5[1] sdb5[0]
XXXXXX blocks [2/2] [UU]
unused devices: <none>

Aktif saat Booting: Pada bagian ini dapat diketahui bahwa bahwa device RAID telah terdeteksi dan disetup saat booting.
Selanjutnya, format device baru ini de­ngan perintah:
# mkfs.ext3 -v /dev/md0mkf#s.e#xt3 -v /dev/md0
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
XXXXXX inodes, XXXXXX blocks
XXXXX blocks (5.00%) reserved for the
super user
….
Writing inode tables:  0/50
….
done
Creating journal (8192 blocks): done
Writing superblocks and filesystem
accounting information: done
Seperti Anda perhatikan, proses formatnya tidak berbeda dengan proses format device biasa. Sekarang Anda cukup melakukan proses mount ke suatu direktori dan siap membaca-tulis ke perangkat RAID 1 tersebut.
# mkdir /mnt/raid# mount /dev/md0 /mnt/raid
# ls -al /mnt/raid/
drwxr-xr-x 3 root root  1024 2008-01-17
15:21 .
drwxr-xr-x 3 root root  4096 2008-01-14
03:47 ..
drwx—— 2 root root 12288 2008-01-17
15:21 lost+found
# df -h /mnt/raid
Filesystem            Size  Used Avail Use%
Mounted on
/dev/md0              500M   11M  489M   2%
/mnt/raid

Mount point /mnt/raid/ dapat Anda ganti dengan direktori lain yang Anda kehendaki.  Kini, Anda telah sukses menyiap­kan RAID! secara instam. Sedikit “quiz” untuk Anda, mengapa ukuran partisi /dev/md0 hanya 500 MB dan bukan 1000MB? (jawaban pada akhir tulisan).
Mengaktifkan RAID Otomatis Setiap Booting
Sebenarnya masih ada satu tahapan konfigurasi lagi yang perlu dilakukan sebelumnya me-restart PC. Apabila sistem Linux di-reboot tanpa melakukan tahapan ini, konfigurasi RAID-nya seperti hilang. File /proc/mdstat juga tidak menunjukkan adanya device RAID aktif:
$ cat /proc/mdstat
Personalities : [raid1]
unused devices: <none>
Apa yang sebenarnya terjadi? Di saat fase inisialisasi, salah satu yang dilakukan sistem Linux adalah melakukan pengecek­an apakah ada file yang berisi daftar device RAID beserta partisi penyusunnya. File yang perlu Anda buat adalah /etc/mdadm.conf. Apabila device RAID yang telah dibuat didaftarkan, maka isi file menjadi:
# cat /etc/mdadm.conf
ARRAY /dev/md0 devices=/dev/sda5,/dev/
sdb5
Penjelasan format di atas cukup sederhana, device RAID md0 terdiri atas partisi sda5 dan sdb5.  Sekarang coba reboot Linux dan periksa sekali lagi isi file /proc/mdstat. Otomatis terkonfigurasi bukan? Anda cukup meng-update isi /etc/fstab dengan baris seperti ini agar device RAID tersebut juga langsung di-mount:
/dev/md0    /mnt/raid    ext3
defaults    1 2.
Mengganti Anggota RAID yang Rusak
Siapa pun tidak menghendaki kerusakan hard disk, tetapi inilah inti mengapa RAID digunakan. Kita anggap saja partisi sdb5 mengalami kerusakan akibat bad sector. Untuk memastikan kerusakan semacam ini tidaklah mudah, tetapi program badblocks bisa membantu Anda.
Diulang : Penggantian partisi yang rusak akan memaksa terjadinya proses sinkronisasi ulang.
Pertama, unmount device RAID. Sebelumnya, simpan dulu semua file yang sedang diedit dan hentikan program yang membaca-tulis ke RAID:
# umount /dev/md0
Berikutnya cek adanya bad sector:
# badblocks -s -v /dev/md0
Apabila terlihat ada pesan yang mengindikasikan adanya kesalahan baca, pengecekan per­lu dilakukan untuk mengetahui partisi ma­na yang sebenarnya perlu diperbaiki. Namun sebelumnya, hentikan dulu aktivitas RAID:
# mdadm –stop /dev/md0
Barulah ulangi operasi pengecekan bad sector ke setiap partisi:
# badblocks -s -v /dev/sda5
# badblocks -s -v /dev/sdb5
Diasumsikan setelah pengecekan, diketahui sdb5 rusak parah. Anda punya beberapa pilihan, mengganti hard disk atau membuat partisi baru di disk yang sama tetapi dengan ukuran yang kurang lebih sama. Karena kemungkinan besar Anda menggunakan sistem PC desktop yang biasanya tidak dilengkapi fasilitas hot swap, maka Anda cenderung memilih membuat partisi baru pada disk yang sama.
Catatan: menghentikan RAID boleh diabaikan jika Anda harus tetap melayani operasi baca-tulis, namun cara ini bukan pilihan terbaik.
Misalnya partisi baru yang dibuat bernama sdb6 dengan ukuran 500 MB dan Anda harus cepat kembali mengaktifkan RAID agar bisa kembali bekerja. Untuk itu, aktifkan kembali RAID:
# mdadm -A –run /dev/md0 /dev/sda5
Option –run harus digunakan me­ngingat Anda memerintahkan RAID 1 aktif, tetapi hanya dengan satu partisi anggota array (normalnya harus ada dua).
# mount /dev/md0 /mnt/raid
Saat ini Anda dapat kembali bekerja membaca-tulis data yang tersimpan.  Berikutnya tambahkan partisi sdb6 secara on-the-fly (sambil terus berjalan):
# mdadm –add /dev/md0 /dev/sdb6
Dapat dilihat adanya progress bar yang menunjukkan proses perbaikan. Pada fase ini, data di partisi sda5 dan sdb6 disinkronisasikan sehingga kembali identik. Relatif terhadap ukuran partisi, tidak lama kemudian sinkronisasi selesai dan RAID bisa kembali bekerja 100% normal.
“Ah, saya perlu yang lebih cepat. Mematikan RAID tidak bisa saya toleransi!” Tuntutan seperti ini memang memusingkan, tetapi lagi-lagi RAID memang dibuat untuk memenuhi kebutuhan kritis seperti ini. Jika memang demikian, langkahnya menjadi sedikit berbeda.
Berangkat dari asumsi yang mirip bah­wa partisi sdb5 rusak dan Anda sudah membuat partisi sdb6 yang sama besarnya. RAID tidak perlu dihentikan, dan hanya perlu melakukan:
# mdadm –fail /dev/md0 /dev/sdb5
Pada titik ini, partisi sdb5 secara efektif tidak lagi terpakai dan dapat Anda singkirkan dari array:
# mdadm –remove /dev/md0 /dev/sdb5
Mungkin Anda bertanya, “Apa saya aman melakukan hal seperti ini saat saya menulis sesuatu ke RAID?” Secara umum dapat dikatakan, 99,99% persen langkah ini aman asalkan dalam saat yang hampir bersamaan, sda5 juga sedang tidak mengalami kerusakan (apapun sebabnya).
Sekarang anda tinggal memasukkan partisi sdb6:
# mdadm –add /dev/md0 /dev/sdb6
Proses recovery akan dimulai. Sambil menunggu, Anda tetap bisa membaca-tulis tanpa terhenti sama sekali. Sangat membantu bukan?
Terakhir yang perlu dilakukan adalah meng-update /etc/mdadm.conf agar merefleksikan kondisi terkini:
ARRAY /dev/md0 devices=/dev/sda5,/dev/
sdb6
Cara ini mungkin tidak efektif karena bisa saja Anda salah ketik dan tanpa sengaja memasukkan nama partisi yang salah. Cara yang lain yang lebih cepat dan akurat adalah memerintahkan program mdadm untuk melakukan scanning dan memasukkan hasilnya sebagai entry di /etc/mdadm.conf:
# mdadm -Ebsc partitions > /etc/mdadm.
conf
Isi file konfigurasi akan menjadi sedikit lain:
# cat /etc/mdadm.conf
ARRAY /dev/md0 level=raid1 num-
devices=2 UUID=e22dec1a:88e263a1:
c88e430b:65d86d06
Parameter terakhir memang terlihat aneh. Pada dasarnya, ini adalah semacam tanda pengenal yang dituliskan pada setiap partisi hard disk yang terpasang di komputer Anda. Saat array RAID dibentuk setiap kali Linux diinisialisasi, tanda ini akan dicari untuk mencari tahu partisi mana saja yang menjadi anggota RAID (dalam hal ini /dev/md0). Dengan demikian, Anda tidak perlu mendaftar sendiri anggota partisi yang terlibat dalam suatu device RAID. Menjawab pertanyaan (quiz) yang disampaikan sebelumnya, karena bersifat mirroring, maka ukuran partisi efektif adalah sesuai besaran salah satu partisi yang terkecil.
 
1 Komentar

Ditulis oleh pada 10 Juni 2011 in Aplikasi

 

Tag:

One response to “Menggunakan Fasilitas Software RAID di Linux

  1. chikidelkyo

    10 April 2012 at 2:55 PM

    misi gan… ane mau nanya tentang raid…
    menurut agan raid bisa ga gan di implementasikan buat optimalisasi performansi buat cloud computing ga gan?

     

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

 
%d blogger menyukai ini: