Storage Blog..

a peaceful place to turn knowledge into power. All about storage technology, best practices, ideas.. you name it.

RAID 1, RAID 1+0 & RAID 5.. Which one is better?..

Ditulis oleh Iwan Sulistyawan di/pada Juni 19, 2009

Kalau sudah bicara performance, sebenernya saya prefer untuk share offline aja.. lebih enak jelasinnya. Tapi gpp lah.. ini sedikit share aja ttg raid system di disk. Meskipun bahasannya ini sebenernya enakan dibikin teknis, mudah2an artikel ini cukup gamblang supaya lebih mudah dipahami :) RAID (Redundant Array of Independent Disks) adalah suatu metode untuk menggabungkan beberapa harddisk menjadi satu kesatuan device. Raid diterapkan untuk meningkatkan keamanan data (melalui redudancy atau parity) maupun untuk meningkatkan performance (di striping, data ditulis/dibaca ke lebih dari satu disk).

berikut ini type-type RAID yang umum digunakan:
Raid 0 :data disebar (striped) ke beberapa disk, tanpa redudancy tanpa parity. Type ini paling cepat tapi paling nggak aman.

RAID_0

koq paling cepet?? iya, karena… waktu menulis atau membaca data ke/dari disk ini datanya disebar ke banyak disk. Jadi satu spindle disk hanya menulis beberapa data saja. Misal kita gunakan 2 disk saja yang di RAID 0 dengan stripe width 64KB, maka 64KB pertama (A1) ditulis ke disk 0, kemudian 64KB kedua (A2) ditulis ke disk 1, kemudian 64KB ketiga (A3) kembali ditulis ke disk 0, begitu seterusnya.. sehingga data 512KB (A1-A8) dibagi 256KB di disk 0 dan 256 KB di disk 1.  Kalau jumlah disknya dalam 1 raidgroup ini ada 4 disk maka setiap disk hanya menulis/membaca 64KB saja.. begitu seterusnya..  sudah kebayang kan kenapa type ini bisa lebih cepat baca/tulisnya.

tapi RAID 0 ini paling nggak aman karena datanya tersebar tanpa proteksi. Kalau salah satu disknya problem maka datanya menjadi inconsistent.  lihat saja pada gambar di atas.. kalau Disk 1 failed maka data yang tersedia hanya A1,A3,A5,A7 saja..

Raid 1 : data mirroring. Paling boros space karena untuk redudancy. Space yang bisa digunakan menjadi 50% saja. Read performance secara teori bisa 2 x lebih cepat, write performance turun sedikit saja.

RAID_1

pada saat menulis seluruh data ditulis ke seluruh disk dalam raid group ini. sehingga perlu menulis dua kali. tetapi karena penulisan data dapat dilakukan bersamaan maka lama penulisan bukan dua kali lebih lambat.

sementara itu untuk proses bacanya, karena datanya ada pada kedua disk, maka raid controller dapat membaca A1 dari disk0 dan A2 dari disk1 secara bersamaan. Sehingga, secara teori, proses pembacaannya bisa lebih cepat dua kali karena datanya tersebar pada dua disk.

Raid 5 : data disebar (striped) ke beberapa disk, kemudian dibuat parity-nya. Dengan menggunakan perhitungan XOR parity yang dibuat tidak perlu sebesar data yang disimpan. Biasanya perbandingannya adalah 4D+1P (4 data + 1 parity) atau 7D+1P. Parity disebar ke semua disk dalam raid group ini. (untuk RAID 2 dan RAID 3, paritynya ditaruh di 1 dedicated disk). Read performance secara teori bisa 3x atau 7x lebih cepat. Tapi write performance turun karena setiap menulis data harus menghitung paritynya.

RAID_5

Raid 6 : sama seperti seperti raid 5 tetapi menggunakan dual parity. Biasanya digunakan pada disk sata yang reabilitynya lebih rendah dibanding FC/SAS disk padahal performance & kapasitasnya besar besar. Karena pada disk sata perlu waktu lebih lama untuk recovery jika terjadi disk failure maka best practicenya menggunakan dual parity seperty raid 6 ini.

RAID_6

Untuk mengejar performance dan protection bisa juga menggunakan kombinasi raid 1 dan raid 0 (RAID 1+0 atau RAID 0+1). Data ditulis tersebar ke banyak disk dan di replicate tetapi tidak perlu menghitung parity.

Seperti apa RAID 1+0 dan RAID 0+1 itu? Dengan diagram di bawah ini bisa lebih mudah dijelaskan dan dilihat perbedaannya.

Raid 1+0 : data di stripe (raid 0) ke beberapa mirrored disk (raid 1)

RAID_1+0

Raid 1+0

Raid 0+1 : nah kalau yang ini kebalikannya raid 1+0. Data di mirror (raid 1) dari multiple striped set disk  (raid 0)

RAID_0+1

Raid 0+1

Raid 0+1 ini jarang digunakan karena kalau striped set pertama failed maka striped set kedua menjadi single point of failure. salain itu, setelah replacement disk yang failure pada striped set pertama maka mekanisme RAID 1 akan mengcopy data dari striped set kedua.. yang dibaca dari striped set kedua yaa seluruh striped set tsb. dengan RAID type ini lebih banyak disk yang diakses pada saat recoverynya.

yang paling umum yaa RAID 1+0.. ini yang biasa di sebut RAID10. kalau satu disk failed maka hanya di mirrornya saja yang menjadi single point of failure. Setelah replacement disk yang failure, maka mekanisme RAID 1 nya akan mengcopy data dari mirror disknya. yang dibaca hanya satu disk mirrornya saja untuk recovernya. jadi RAID 1+0 ini tingkat availabilitynya lebih tinggi dan proses recovery lebih cepat dari pada RAID 0+1.

masih ada beberapa type RAID yang lain siih.. tapi type-type RAID yang saya tulis ini adalah type-type yang paling umum digunakan.

RAID mana yang paling aman dan cepat?

Berdasarkan theory of concatenate yang saya baca, komparasi performance Raid 1+0 vs Raid 5 dengan jumlah disk yang sama per raid group (2D+2D vs 3D+1P atau 4D+4D vs 7D+1P) disebutkan bahwa RAID 1+0 mengungguli raid 5 dalam proses random writing.  Tetapi Raid 5 lebih cepat pada proses sequential writing dibanding RAID 1+0. Untuk proses sequential/random reading performancenya similar alias sama saja.

raid-performance-comparison

Kalau sudah yakin akan prilaku aplikasinya & yang dikejar adalah random write performance maka gunakanlah RAID 1+0. Tetapi kalau aplikasinya read intensive atau write intensive yang sequential write, gunakan RAID 5 saja karena performancenya bisa lebih cepat dari pada RAID 1+0 & lebih ekonomis pula. Untuk RAID 5 ini saya prefer untuk di configure dengan mengaktifkan write cache yang cukup di storage controller ( cache write pending dibawah 30% ) & menggunakan konfigurasi multiple 7D+1P untuk mendapatkan spindle yang lebih banyak dalam satu raid group as many as possible.  Penggunaan disk spindle yang lebih banyak dalam 1 raid group akan membuat performance yang lebih baik. 14D+2p atau 28D+4p secara IOPS bisa 2x dan 4x lebih cepat dibanding 7D+1P.

btw, log file di oracle itu adalah type data yang write intensive. Oleh oracle log writer ditulis secara sequential write. Jadi menurut saya penggunaan RAID 5 masih lebih tepat daripada raid 1+0 untuk archive log maupun redo log. Teori ini memang agak berbalikan dengan suggestion SAME (Stripe and Mirror Everything) dari oracle. Buat saya pendekatan SAME yang di release tahun 2000 lalu ini lebih tepat untuk tradisional RAID yang menggunakan software base namun tidak untuk SAN based storage yang sudah menggunakan hardware untuk perhitungan RAID dan cache yang cukup besar. Pendapat ini juga diperkuat oleh test yang dilakukan oleh IBM tentang perbandingan Raid 5 dan raid 10 untuk oracle di sini. Salah satu point yang disimpulkan dari hasil test tersebut adalah “The performance of RAID 10 may be better for very high random write workloads. The amount of improvement will vary”. Jadi??.. Yaa RAID 5 lebih tepat dan lebih cepat untuk log file oracle yang sequential. Karena workloadnya sangat tinggi, penempatan log filenya bisa diatur dengan mengggunakan beberapa LUN dari raid group terpisah. Kalau masih kurang juga??.. bisa juga menggunakan solusi SSD doong. :)

Peningkatan performance menggunakan pendekatan hardware memang bisa dan biasa dilakukan. Tetapi berdasarkan pengalaman selama ini sih pendekatan performance dari sisi aplikasi memberikan efek lebih dahsyat daripada performance tuning di sisi hardware lho. Bukan berarti hardware tidak perlu jadi concern yaa.. Banyak sekali yang bisa dilakukan dari sisi hardware selain RAID ini.

Hmm.. sudah malam nih. Karena tulisannya juga sudah cukup banyak, untuk sementara ini dulu yaa.. kalau mau lagi bisa dijelaskan secara offline aja.. Semoga bermanfaat.

2 Tanggapan ke “RAID 1, RAID 1+0 & RAID 5.. Which one is better?..”

  1. BW berkata

    Pak Iwan, itu data IBM jaman dulu (2003), waktu IBM baru punya ESS, dan saat itu ESS-nya hanya bisa RAID-0 or RAID-5, ngga bisa RAID-1 dan RAID-10.
    Utk oracle log, memang sequential tapi tdk streaming seperti I/O nya tape, sehingga kaya kayanya tetap lebih bagus kalau pakai RAID-10. Or kalau mau cepet & mau ngoprek2x (juga kalau storagenya punya fungsi dan bisa di oprek, or punya akses engineer password utk masuk ke kontroller command) bisa dicoba raid-1 or raid-10 dan dipilih track2x tertentu saja yang posisi fisiknya dekat dgn posisi default dari head.

  2. deuh yang pernah jualan ESS.. :)
    di test ini ESS 800nya sudah bisa raid 10 dan raid 5 koq..
    paradigm penggunaan cylinder yang dekat untuk mengurangi delay dari pergerakan headnya sepertinya masih berlaku untuk internal disks. dulu jaman masih pegang solaris pernah juga implement cara ini. dengan metoda ini kita harus bisa define data2 yg IOnya tinggi untuk diletakkan di partisi pada cylinder tertentu saja di tengah2. data yg lain bisa diletakkan pada cylinder awal dan akhir.
    Tapi itu dulu..
    Kalau sekarang dengan storage array dengan jumlah disks yang buanyak dan memiliki cache rasanya sudah nggak dipakai lagi tuh.. hmm.. bentar, jadi berfikir nih… bisa nggak yaa metode diatas di terapkan di storage array seperti skg nih. seandainya pun bisa kayaknya ribet banget deh.. (lha wong dulu aja ribet.. hehehehe)

    Sekarang sudah jamannya memanfaatkan teknologi memory yang jauh lebih cepat sebagai cache ataupun disk (ssd). Bisa juga dengan memisahkan data2 yg random write intensive di disk2 RAID 10.. sisanya RAID 5..

Tinggalkan Balasan

XHTML: Anda dapat gunakan tag ini: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>