it-swarm-id.com

Apa konfigurasi RAID yang disarankan untuk database Oracle?

RAID (Redundant Array of Inexpensive Disk) hadir dengan konfigurasi yang berbeda (RAID-0, RAID-1 ...). Apa konfigurasi RAID yang disarankan yang harus saya atur dan gunakan ketika menginstal database Oracle. Basis data terutama akan digunakan sebagai gudang data.

16
Eddie Awad

Tergantung. Saat melihat gudang data, jika Anda tidak memiliki desain khusus, manajemen penyimpanan otomatis mungkin merupakan rute yang sangat baik.

Pertimbangkan diskusi di AskTom , Forum OTN , Forum OTN 2 , dan Forum OTN .

Tidak ada satu cara yang tepat untuk menangani berbagai hal, dan jawabannya berubah berdasarkan sejumlah faktor perangkat keras dan jaringan. Untuk menemukan sendiri, preload gudang data sampel (hanya satu atau dua pertunjukan, cukup untuk dimainkan) pada mesin berbasis ASM, pada SAN dengan Raid divirtualisasi oleh linux dan pada mesin raid berbasis hardware.

Dengan menentukan waktu hasil kueri pada ketiga lingkungan, Anda akan dapat menemukan metodologi mana yang paling cocok untuk Anda yang berdasarkan kinerja. Saya telah menggunakan basis data menggunakan ASN dan penggerebekan virtual berbasis linux, dan serangan virtual berperilaku sedikit lebih baik (beberapa tahun yang lalu.) Namun, saya menduga itu sebagian cara drive diatur.

Tidak ada jawaban benar tunggal. Jika Anda dapat memberikan kami detail lebih lanjut tentang ukuran dan persyaratan kinerja, dimungkinkan untuk menjelajahi berbagai test case.

--Edit--

Setiap " grup disk " dapat terdiri dari satu atau lebih disk, direktori, atau file pada subsistem yang sesuai. Oracle merekomendasikan "Untuk kinerja dan keandalan terbaik, pilih perangkat RAID atau volume logis pada lebih dari satu perangkat fisik dan terapkan metodologi stripe-mirror-everything (SAMA)." saat menempatkan file pada sistem file. Itu berbunyi seolah-olah Oracle merekomendasikan RAID 1 + 0.

Namun, grup disk yang dikelola ASM, "Grup disk redundansi normal memerlukan minimal dua grup kegagalan (atau dua perangkat disk) jika Anda menggunakan mirroring dua arah. Ruang disk yang efektif dalam grup disk redundansi normal adalah setengah dari jumlah ruang disk di semua perangkatnya "tampaknya secara otomatis menyediakan mirroring.

Perangkat ini sendiri dapat terdiri dari perangkat RAID, dan sebagainya. Dalam tes praktis ketika saya menyiapkan gudang data RAID, virtual RAID 5 sederhana pada sistem file memberikan kinerja yang dapat diterima, dan ASM tambahan menambahkan tidak ada manfaat kinerja. Dalam tugas optimasi semacam ini, pertama-tama identifikasi sumber daya Anda, dan kemudian uji setiap konfigurasi yang mungkin, karena kadang-kadang hasilnya bisa sangat berlawanan dengan intuisi.

13

Jika Anda memiliki dua drive fisik:

RAID0: Cepat tapi tidak ada redundansi. Kesalahan drive apa pun akan mematikan seluruh array. Beberapa orang menaruh penyimpanan sementara pada RAID0 (mis. Tempdb di bawah MSSQL) tetapi saya masih akan menganggap ini berbahaya karena sementara Anda tidak akan kehilangan data yang berarti jika array jatuh Anda akan memiliki pemadaman server sampai situasi itu diperbaiki.

RAID1: Lakukan ini jika Anda memiliki dua drive. Tidak ada manfaat kinerja menulis meskipun Anda mungkin melihat peningkatan kinerja baca dengan controller yang baik. Fitur utama RAID1 adalah bertahan dari salah satu drive yang sekarat.

Jika Anda memiliki tiga drive fisik:

Pilihan Anda adalah RAID5, RAID10 3-drive non-standar (atau RAID1E sebagai pengendali IBM menyebutnya) jika didukung. Anda tentu saja dapat menggunakan RAID1 dan menyimpan drive ekstra sebagai cadangan ketika salah satu dari yang lain gagal, tetapi Anda harus tetap menyimpannya di lingkungan kritis misi sehingga hal ini tidak perlu dikatakan lagi.

RAID5 menawarkan lebih banyak ruang daripada RAID10 (dua drive bernilai bukannya satu-dan-setengah) tetapi memiliki potensi masalah kinerja penulisan karena untuk setiap blok ditulis pengontrol perlu membaca blok paritas, memperbaruinya, dan menuliskannya kembali. Masalah kinerja penulisan ini dapat digandakan untuk penulisan basis data karena setidaknya ada dua penulisan untuk setiap pembaruan: satu ke log transaksi dan satu ke area data aktual. Karena ruang yang murah hari ini saya akan merekomendasikan 3-drive RAID10 jika didukung untuk kinerja penulisan yang lebih baik. RAID perangkat lunak Linux menawarkan ini, seperti halnya banyak pengontrol IBM (mereka menyebutnya RAID1E). Anda mungkin menemukannya di bawah nama lain juga karena itu tidak dianggap sebagai pengaturan standar sehingga tidak memiliki nama standar.

Baik R5 dan R10-over-three memberikan redundansi yang sama (salah satu drive dapat gagal pada suatu waktu dan array akan bertahan) dan metrik kinerja baca yang serupa (mirip dengan array RAID0 dua drive).

Jika Anda memiliki empat drive fisik:

Jika membuat hanya satu array maka ada dua opsi (mengabaikan variasi "dengan cadangan panas"): RAID6 dan RAID10 "tradisional" (sebuah RAID0 dari RAID1s).

Keduanya memberikan ruang yang sama (dua drive dari empat Anda). RAID6 memberikan redundansi yang lebih baik karena dua drive dapat gagal pada saat di mana RAID10 hanya dapat bertahan empat dari enam kemungkinan situasi dua drive yang hilang. Keduanya memberikan kinerja baca simialr tetapi RAID6 memiliki masalah kinerja penulisan yang mirip dengan RAID5 (sama pada controller yang baik, meskipun bisa lebih lambat dari pada RAID5 pada controller yang buruk atau dengan perangkat lunak RAID tergantung pada OS dan kemampuan kontrol I/O. RAID10 adalah biasanya lebih disukai untuk database karena alasan kinerja - jika Anda memerlukan redundansi tambahan, Anda dapat menggunakan enam drive dan memiliki RAID0 atau 2 3-drive RAID1s.

Setelah Anda memiliki empat drive atau lebih meskipun hal-hal menjadi lebih menarik karena Anda bisa memiliki sepasang array RAID1 terpisah. Ini dapat menawarkan manfaat kinerja yang signifikan dengan disk pemintalan dengan menyimpan data Anda pada satu larik dan log transaksi pada yang lain - ini dapat mengurangi pergerakan head secara signifikan dalam beberapa kasus dan mencari waktu karena akses "acak" adalah pembunuh kinerja nyata. Untuk data warehouse, dengan asumsi ini berarti akan melihat sangat sedikit menulis relatif berbicara, memisahkan log transaksi dari file data mungkin manfaat yang lebih terbatas tetapi Anda mungkin masih ingin mempertimbangkan beberapa array dan bukannya mempartisi data Anda di atasnya untuk berpotensi membaca kinerja yang lebih baik .

Jika Anda memiliki lebih dari empat drive:

Pilihan Anda menjadi terbuka lebar di sini dan itu benar-benar tergantung pada apa data Anda dan apa pembaruan/baca beban/pola yang Anda harapkan. Misalnya, sekali layanan kami berjalan pada drive 12 ~ 70Gb:

  • 4x sebagai RAID10 untuk area sistem (OS, SQL Server (MSSQL dalam kasus kami), swap, tempdb).
  • 4x sebagai RAID10 untuk file data
  • 4x sebagai RAID10 untuk log transaksi

Tempdb disimpan di sistem array. Kita dapat memindahkannya ke dua array lain dan menjalankan array sistem sebagai 2 drive di RAID1 karena kecepatan ekstra tidak terlalu diperlukan untuk potongan sistem (karena itu hanya sangat signifikan selama boot atau ketika bertukar dan kami memastikan ada cukup RAM untuk itu tidak perlu ditukar), tetapi dengan cara kami membayar penyedia hosting untuk set mesin itu, kami tidak perlu mengeluarkan biaya lebih sedikit untuk menjatuhkan dua drive. Cadangan juga buka array sistem, sebelum disalin ke lokasi cadangan di luar server, di luar situs, dan di luar jaringan.

Tentu saja ini sangat berat untuk beberapa database (tidak akan ada gunanya menjalankan server blog kecil dengan cara ini!) Tetapi aplikasi utama kami berkinerja sangat baik dengan pengaturan ini.

Jika Anda memiliki enam drive, Anda dapat mempertimbangkan tiga array RAID1, atau dua array RAID10 tiga drive.

mumnya

Sayangnya tidak ada "praktik terbaik" yang sangat sederhana karena sangat tergantung pada ukuran dan pola penggunaan sistem Anda. Satu-satunya aturan umum yang dapat saya pikirkan atau adalah:

  • hindari RAID5 dan 6 kecuali jika Anda tahu masalah kinerja penulisan tidak akan mempengaruhi Anda secara signifikan
  • dengan empat atau lebih drive berbasis disk berputar mempertimbangkan pemisahan beberapa array lebih untuk mengurangi pergerakan head (manfaat penuh dari beberapa array tidak akan berlaku untuk SSD yang baik karena tidak ada pergerakan head fisik yang perlu dipertimbangkan, meskipun Anda mungkin melihat beberapa perbedaan tergantung pada strategi kombinasi tulis pengontrol SSD dan sebagainya)
  • uji, uji dan uji lagi: selalu baik untuk mencoba mencari waktu untuk memverifikasi bahwa pengaturan yang Anda pilih memang optimal

RAID Hardware atau Software?

Dulu kinerja perangkat lunak RAID berada di bawah RAID perangkat keras untuk RAID 5 karena perhitungan paritas dan untuk semua pengaturan karena antarmuka yang lambat antara drive dan CPU. Dengan CPU modern, masalah paritas calc tidak benar-benar menjadi masalah, tetapi jika Anda memiliki hard disk drive yang sangat cepat, RAID masih bisa menang jika kecepatan total drive dapat datang di mana saja dekat (dalam urutan besarnya, pada perkiraan) untuk seberapa cepat mesin dapat berbicara dengan pengontrol disk. Jika Anda memiliki empat drive RAID1 array (yaitu empat salinan data yang sama untuk banyak redundansi) dengan perangkat lunak RAID setiap operasi penulisan akan menghasilkan OS mengirimkan empat banyak data ke I/O controller, mungkin secara berurutan - dengan perangkat keras controller OS hanya mengirimkan satu permintaan tulis dan controller mengirimkannya ke empat drive, mungkin secara paralel.

RAID perangkat keras yang baik juga dapat menawarkan keuntungan lain: beberapa pengendali dengan spesifikasi tinggi memiliki cache tulis dengan cadangan baterai sehingga penulisan yang tertunda tidak hilang dalam pemadaman listrik walaupun UPS Anda gagal, misalnya.

RAID perangkat lunak jelas lebih murah, dan lebih portabel sehingga Anda tidak terikat dengan pengontrol tertentu jika Anda harus memindahkan array karena kegagalan pengontrol/mesin.

RAID perangkat keras yang murah biasanya menggabungkan negatif dari perangkat lunak dan perangkat keras RAID dengan sedikit (atau tidak ada) manfaat dari keduanya sehingga sebaiknya dihindari.

Saya cenderung menggunakan RAID perangkat lunak pada server dev, test dan UAT kami dan RAID perangkat keras yang baik untuk server yang menjalankan layanan langsung yang berhubungan dengan pelanggan/publik.

10
David Spillett

" Panduan Penyesuaian Kinerja Basis Data Oracle" memiliki bab yang didedikasikan untuk Konfigurasi I/O . Pendeknya:

  • Gunakan striping (RAID perangkat keras, perangkat lunak RAID, ASM)
  • Jangan gunakan RAID5 untuk Pengarsipan dan ulangi log
  • Sejajarkan ukuran blok Sistem File dan ukuran blok DB
5
Benoit

Dalam beberapa kasus, JBOD adalah jawaban yang benar (yaitu, tidak RAID).

Masalahnya adalah, jika Anda memiliki terlalu banyak grup RAID, Anda tidak memiliki fleksibilitas untuk menentukan bagaimana penyimpanan fisik diletakkan dalam database, seperti memastikan bahwa indeks dan catatan untuk tabel disimpan pada spindle yang terpisah, dan memastikan bahwa Anda menyeimbangkan menulis di semua disk Anda.

Anda dapat menggunakan striping (RAID0) untuk menyeimbangkan penulisan, tetapi jika itu semua satu kelompok besar, Anda tidak dapat memisahkan indeks vs catatan.

Mirroring (RAID1) toleran terhadap kesalahan, dan lebih cepat untuk dibaca (karena Anda dapat membaca dari mana gelendong tidak sibuk), tetapi bisa lebih lambat untuk menulis karena Anda harus menunggu kedua salinan telah ditulis.

Saya tidak akan pernah menggunakan RAID5 atau RAID6 pada database. Jika datanya penting, beli lebih banyak disk dan gunakan RAID1; RAID5/6 lambat (terutama dalam perangkat lunak), dan dengan ukuran hard drive saat ini mungkin butuh hari untuk membangun kembali setelah mengganti disk yang gagal untuk grup disk besar. .. belum lagi bahwa cara sebagian besar sistem RAID5/6 berurusan dengan kesalahan paritas adalah dengan hanya menghitung ulang paritas ... tetapi kemungkinannya adalah, kesalahan dalam data, bukan paritas tetapi Anda tidak tahu di mana kesalahan itu. (sayangnya, saya tidak berpikir ada sesuatu seperti LOCKSS untuk database)

...

Layout paling menarik yang pernah saya lihat di database sebenarnya melibatkan memiliki dua partisi per spindle - bagian terdalam dari disk digunakan untuk database produksi, bagian-bagian lebih dari disk digunakan untuk cadangan. (dan mereka memastikan partisi tidak didukung ke spindle yang sama; Saya pikir ada beberapa database, jadi masing-masing didukung ke disk dari yang berbeda). Ini memberi mereka keuntungan menyebarkan hal-hal di lebih banyak spindel selama hari kerja, dan kemudian pada malam hari, mereka menjalankan backup.

Saya menduga akan ada pemulihan yang lebih lambat jika terjadi kesalahan dan Anda perlu memulihkan, karena Anda akan memiliki beberapa bacaan dari disk luar yang terjadi saat database digunakan sepanjang hari, tetapi selalu ada pengorbanan dalam segala hal.

...

Jadi, pokoknya, poin yang saya coba sampaikan - tidak ada satu jawaban yang cocok untuk setiap situasi. Jika ada, DBA akan keluar dari pekerjaan, dan perusahaan akan membeli peralatan database yang sudah dibangun sebelumnya.

Basis data yang saya tangani adalah yang oleh bos saya disebut sebagai 'WORN': Write Once, Read Never; dia bercanda, tetapi "data warehouse" dapat berarti semua tingkat aktivitas ... Saya telah melihat beberapa yang dimuat dari tape setiap malam/minggu (dan hanya salinan dari instance OLTP, dan membantu kami memverifikasi rekaman itu baik) dan pekerjaan analisis besar-besaran dijalankan pada mereka, dan yang lainnya di mana ada aliran input dan bacaan sesekali, tetapi tidak ada persaingan nyata untuk sumber daya.

4
Joe

Rekomendasi saya untuk server selalu RAID 5 . Waktu dan upaya yang dihabiskan untuk memulihkan hard drive pertama Anda yang gagal akan selalu diingat. Jika Anda mengatur RAID array, saya sangat menyarankan Anda standarisasi pada ukuran drive tunggal dan menyimpan 2 hard drive cadangan di ruang server. Satu drive rusak? Masukkan salah satu pengganti (dan biarkan array membangun kembali). Saya telah melihat array RAID turun keras karena drive kedua memburuk saat mereka menunggu yang pertama tiba (pengiriman hari berikutnya masih terlambat ).

3
Tangurena

Berapa banyak data yang Anda rencanakan untuk digunakan dan seberapa sering Anda akan membaca vs menulis dari sistem? Ada banyak perencanaan yang membahas hal ini, cukup sehingga beberapa orang mencurahkan seluruh karir akademik untuk subjek tersebut.

Biasanya saya akan memberitahu Anda untuk membaca Wikipedia dan membaca artikel sebelum melanjutkan, karena ada beberapa jenis RAID dan masing-masing paling baik digunakan di tempat yang berbeda.

Dasar-dasarnya seperti ini:

RAID0

Bagus untuk gamer video. Buruk untuk orang lain. Ini tidak buruk untuk menggunakan server caching yang tidak perlu menyimpan data untuk waktu yang lama. Setelah disk gagal sistem mati. Permainan telah berakhir.

RAID1

Bagus untuk keandalan. Tidak banyak ekspansi. Cukup bagus dalam hal kecepatan.

RAID5

Campuran yang disukai antara RAID0 dan RAID1 (semacam).

Sekarang, setelah ini, itu benar-benar menjadi hampir sesuatu yang harus ditanyakan pada ServerFault karena fakta bahwa itu konfigurasi server lebih dari desain database. Selalu bahas kinerja server dengan Admin Server Anda. Untuk itulah mereka ada di sana. Jika ini bukan beta pribadi, saya akan memilih untuk menutup migrasi Anda di sana.

2
jcolebrand