Kinerja perangkat lunak vs. perangkat keras RAID dan penggunaan cache


73

Saya telah membaca banyak tentang pengontrol / pengaturan RAID dan satu hal yang banyak muncul adalah bagaimana pengontrol perangkat keras tanpa cache menawarkan kinerja yang sama dengan perangkat lunak RAID. Benarkah ini masalahnya?

Saya selalu berpikir bahwa kartu RAID perangkat keras akan menawarkan kinerja yang lebih baik bahkan tanpa cache. Maksud saya, Anda telah mendedikasikan perangkat keras untuk melakukan tugas. Jika itu masalahnya, apa manfaatnya mendapatkan kartu RAID yang tidak memiliki cache, sesuatu seperti LSI 9341-4i yang tidak bisa dibilang murah.

Juga jika peningkatan kinerja hanya dimungkinkan dengan cache, apakah ada konfigurasi cache yang menulis ke disk segera tetapi menyimpan data dalam cache untuk operasi membaca membuat BBU bukan prioritas?


Sesuatu yang saya perhatikan mendukung serangan HW: Dalam pengalaman saya, jika Anda menjalankan serangan SW dan sistem melakukan apa pun selain shutdown bersih, Anda akan menyalahkan array dan harus membangun kembali. Serangan HW tidak salah jika tidak menulis ketika sistem mati.
Loren Pechtel

Jawaban:


146

Singkatnya: jika menggunakan kartu RAID low-end (tanpa cache), bantulah diri Anda sendiri dan beralihlah ke RAID perangkat lunak. Jika menggunakan kartu menengah ke atas (dengan BBU atau NVRAM), maka perangkat keras seringkali (tetapi tidak selalu! Lihat di bawah) pilihan yang baik.

Jawaban panjang: ketika daya komputasi terbatas, kartu RAID perangkat keras memiliki keuntungan signifikan untuk menghitung perhitungan paritas / sindrom untuk skema RAID yang melibatkannya (RAID 3/4/5, RAID6, ecc).

Namun, dengan kinerja CPU yang semakin meningkat, keunggulan ini pada dasarnya menghilang: bahkan CPU kuno laptop saya (Core i5 M 520, generasi Westmere) memiliki kinerja XOR lebih dari 4 GB / s dan kinerja sindrom RAID-6 lebih dari 3 GB / s lebih dari inti eksekusi tunggal .

Keuntungan yang dipertahankan oleh perangkat keras RAID saat ini adalah adanya cache DRAM yang terputus daya, dalam bentuk BBU atau NVRAM. Cache yang dilindungi ini memberikan latensi yang sangat rendah untuk akses tulis acak (dan membaca yang mengenai) dan pada dasarnya mengubah penulisan acak menjadi penulisan berurutan. Kontroler RAID tanpa cache seperti itu hampir tidak berguna . Selain itu, beberapa pengontrol RAID tingkat rendah tidak hanya datang tanpa cache, tetapi juga secara paksa menonaktifkan cache DRAM pribadi disk, yang menyebabkan kinerja lebih lambat daripada tanpa kartu RAID sama sekali. Contohnya adalah kartu DELL PERC H200 dan H300: jika firmware yang lebih baru tidak mengubahnya, mereka benar-benar menonaktifkan cache pribadi disk (dan itu tidak dapat diaktifkan kembali saat disk terhubung ke pengontrol RAID). Bantulah dirimu dan lakukanlahtidak, tidak pernah membeli pengontrol seperti itu. Sementara pengontrol yang lebih tinggi sering menonaktifkan cache pribadi disk, setidaknya mereka memiliki cache yang dilindungi sendiri - membuat cache pribadi HDD (tapi bukan SSD!) Agak berlebihan.

Ini bukan akhirnya. Bahkan pengontrol yang mampu (yang memiliki cache BBU atau NVRAM) dapat memberikan hasil yang tidak konsisten ketika digunakan dengan SSD, pada dasarnya karena SSD benar - benar membutuhkan cache pribadi yang cepat untuk pemrograman / penghapusan halaman FLASH yang efisien. Dan sementara beberapa (sebagian besar?) Pengontrol memungkinkan Anda mengaktifkan kembali cache pribadi disk (misalnya: PERC H700 / 710 / 710P membiarkan pengguna mengaktifkannya kembali), jika cache pribadi itu tidak dilindungi tulis Anda berisiko kehilangan data jika-kalau kehilangan daya. Perilaku yang tepat benar-benar tergantung pada kontroler dan firmware (misalnya: pada DELL S6 / i dengan cache WB 256 MB dan cache yang diaktifkan , saya tidak mengalami kerugian selama beberapa pengujian daya yang terencana), memberikan ketidakpastian dan banyak kekhawatiran.

RAID perangkat lunak sumber terbuka, di sisi lain, adalah binatang buas yang jauh lebih terkontrol - perangkat lunak mereka tidak termasuk dalam firmware milik, dan memiliki pola dan perilaku metadata yang jelas. RAID perangkat lunak membuat asumsi (kanan) bahwa cache DRAM disk pribadi tidak dilindungi, tetapi pada saat yang sama sangat penting untuk kinerja yang dapat diterima - jadi mereka biasanya tidak menonaktifkannya, melainkan mereka menggunakan perintah ATA FLUSH / FUA untuk memastikan bahwa kritis data tanah pada penyimpanan stabil. Karena mereka sering berjalan dari port SATA yang terpasang pada chipset SB, bandwidth mereka sangat bagus dan dukungan driver sangat baik.

Namun, jika digunakan dengan HDD mekanis, pola akses tulis acak yang disinkronkan (mis: basis data, mesin virtual) akan sangat menderita dibandingkan dengan pengontrol RAID perangkat keras dengan cache WB. Di sisi lain, ketika digunakan dengan SSD perusahaan (yaitu: dengan cache tulis yang dilindungi oleh powerloss), perangkat lunak RAID sering unggul dan memberikan hasil yang lebih tinggi daripada yang dicapai dengan kartu RAID perangkat keras. Yang mengatakan Anda harus ingat bahwa konsumen SSD (baca: dengan cache balik tidak terlindungi), sementara sangat pandai membaca dan menulis async, memberikan IOPS yang sangat rendah dalam beban kerja menulis yang disinkronkan.

Juga pertimbangkan bahwa RAID perangkat lunak tidak semuanya dibuat sama. RAID perangkat lunak Windows memiliki reputasi yang buruk, kinerja yang bijaksana, dan bahkan Ruang Penyimpanan tampaknya tidak terlalu berbeda. Linux MD Raid sangat cepat dan serbaguna, tetapi Linux I / O stack terdiri dari beberapa bagian independen yang Anda perlu pahami dengan cermat untuk mengekstraksi kinerja maksimum. ZFS parity RAID (ZRAID) sangat canggih tetapi, jika tidak dikonfigurasi dengan benar, dapat memberi Anda IOP yang sangat buruk; mirroring + striping, di sisi lain, berkinerja cukup baik. Bagaimanapun, itu membutuhkan perangkat SLOG cepat untuk penanganan penulisan sinkron (ZIL).

Intinya:

  1. jika beban kerja Anda tidak tersinkronisasi sensitif tulis acak, Anda tidak perlu kartu RAID
  2. jika Anda memerlukan kartu RAID, jangan tidak membeli controller RAID tanpa Cache WB
  3. jika Anda berencana untuk menggunakan perangkat lunak SSD RAID lebih disukai tetapi perlu diingat bahwa untuk penulisan acak tersinkronisasi tinggi Anda memerlukan SSD yang dilindungi oleh powerloss (yaitu: Intel S4600, Samsung PM / SM863, dll.). Untuk kinerja murni, pilihan terbaik mungkin adalah Linux MD Raid, tetapi saat ini saya umumnya menggunakan mirror ZFS bergaris. Jika Anda tidak mampu kehilangan setengah ruang karena mirror dan Anda membutuhkan fitur-fitur canggih ZFS, gunakan ZRAID tetapi pikirkan dengan hati-hati tentang pengaturan VDEV Anda.
  4. jika Anda, bahkan menggunakan SSD, benar-benar membutuhkan kartu RAID perangkat keras, gunakan SSD dengan cache yang dilindungi tulis (Micron M500 / 550/600 memiliki perlindungan parsial - tidak benar-benar cukup tetapi lebih baik daripada tidak sama sekali - sementara Intel DC dan seri S mengalami kehilangan daya penuh perlindungan, dan hal yang sama dapat dikatakan untuk SSD Samsung perusahaan)
  5. jika Anda membutuhkan RAID6 dan Anda akan menggunakan HDD mekanis normal, pertimbangkan untuk membeli kartu RAID cepat dengan 512 MB (atau lebih) cache WB. RAID6 memiliki penalti kinerja menulis yang tinggi, dan cache WB berukuran tepat setidaknya dapat menyediakan penyimpanan perantara cepat untuk penulisan sinkron kecil (misalnya: jurnal filesystem).
  6. jika Anda membutuhkan RAID6 dengan HDD tetapi Anda tidak dapat / tidak ingin membeli kartu RAID perangkat keras, pikirkan dengan hati-hati tentang pengaturan RAID perangkat lunak Anda. Sebagai contoh, solusi yang memungkinkan dengan Linux MD Raid adalah dengan menggunakan dua array: array RAID10 kecil untuk penulisan jurnal / log DB, dan array RAID6 untuk penyimpanan mentah (sebagai fileserver). Di sisi lain, perangkat lunak RAID5 / 6 dengan SSD sangat cepat, jadi Anda mungkin tidak memerlukan kartu RAID untuk pengaturan semua SSD.

Terima kasih banyak atas penjelasannya, saya tidak tahu kartu RAID menonaktifkan cache pada HDD. Ini bukan jenis server yang memperingatkan investasi $ 800 + dekat jadi saya akan membaca tentang setup Software RAID sedikit lebih dan mungkin pergi dengan itu.
ItsJustMe

2
OP berbicara tentang hypervisor. RAID5 harus keluar dari pertanyaan, dan menulis cache akan menjadi suatu keharusan.
ewwhite

1
Pada kenyataannya, bahkan pada tahun 2016, perangkat lunak 6-drive RAID 5/6 menulis pada <25 MB / s sementara kartu RAID perangkat keras yang tepat dari tahun 2010 menulis pada> 500 MB / s. Ini ada di Intel RSTe dan Windows Storage Spaces. Saya hanya tidak mengerti apa yang menjadi hambatan pada CPU modern.
Monstieur

1
Masalah dengan perangkat lunak RAID 5/6 adalah bahwa menulis sering memicu baca-modifikasi-tulis, yang pada gilirannya sangat memperlambat disk. Pengontrol RAID perangkat keras yang diaktifkan BBU dapat menyatukan banyak penulisan dalam satu akses disk / transaksi, sangat meningkatkan kinerja.
shodanshok

1
"[dibaca acak] saat digunakan dengan SSD, mereka sering unggul" - Jika SSD bukan SSD perusahaan (biasanya itu berarti ia tidak memiliki kapasitor untuk perlindungan kehilangan daya) dan tidak berbohong, maka bahkan SSD dapat memiliki IOPS yang sangat rendah untuk operasi seperti berurutan fsync(). Lihat artikel ini , yang menunjukkan Samsung NVMe SSD tanpa kapasitor hanya melakukan ~ 250 fsyncs per detik (saya juga telah mengukur ini). SSD dengan kapasitor memberikan ~ 30x lebih banyak fsyncs / s, pengontrol RAID perangkat keras dengan baterai 100x lebih banyak.
nh2

7

Anda akan menginginkan solusi cache baterai atau flash yang didukung untuk setiap pengontrol perangkat keras yang Anda beli. Kebanyakan penyesalan tidak melakukannya .

Tetapi untuk menjawab pertanyaan Anda, sebagian besar pengontrol memiliki rasio cache yang dapat dikonfigurasi ... jadi 100% read cache dan 0% write cache meniadakan kebutuhan akan perlindungan BBU. Kinerja menulis Anda hanya akan payah.

Saya tidak dapat menjawab pertanyaan RAID perangkat lunak Anda karena itu tergantung. Linux MD RAID berbeda dari RAID Software Windows, yang berbeda dari sesuatu seperti ZFS . Solusi seperti ZFS dapat bekerja lebih baik daripada perangkat keras karena mereka memanfaatkan RAM server dan sumber daya CPU.


Dengan "kinerja menulis hanya akan menyedot" yang Anda maksud akan hampir sama dengan Software RAID atau Hardware RAID tanpa cache? Atau adakah penalti untuk menulis kinerja lebih dari itu jika kartu mendedikasikan cache untuk membaca?
ItsJustMe

Itu tergantung pada apa yang Anda lakukan. Jika Anda tidak memiliki aplikasi intensif menulis, maka hit kinerja mungkin tidak menjadi masalah.
ewwhite

Ini adalah Proxmox HOST dengan Windows VM yang digunakan untuk hosting surat dan web. Tidak ada banyak penggunaan basis data tetapi layanan email mungkin memiliki banyak aktivitas penulisan. Saat ini saya hanya berdebat jika memiliki kartu cache hanya Baca sepadan dengan RAID Perangkat Lunak.
ItsJustMe

Gunakan pengontrol RAID yang didukung Flash untuk virtualisasi.
ewwhite

1
Kami menjalankan server surat cyrus dengan sekitar 4000 akun di atasnya menggunakan perangkat lunak RAID. Akun aktif yang menghantamnya setiap hari lebih seperti 300 hingga 600. Kinerja terasa lebih buruk daripada server surat cyrus utama kami dengan perangkat keras RAID dan BBU. Cache pengontrol BBU dan RAID memberikan jaminan data, tetapi juga memberikan kinerja. Ini karena begitu data sampai di controller, ia dapat memberi tahu OS bahwa penulisan telah selesai. Kalau tidak, ia harus menunggu hard drive untuk memberi sinyal penulisan selesai. Ini menghemat siklus jam yang signifikan. Pindah ke perangkat keras RAID dan dipecahkan.
labradort

7

RAID-controller yang Anda miliki adalah yang murah dan pada dasarnya adalah fakeraid. Bahkan tergantung pada mainboard Anda untuk menyediakan beberapa fungsi seperti memori dan tidak banyak mainboards yang mendukungnya sehingga Anda tidak dapat memuat driver.

Tentang HW vs SW-RAID itu sendiri. Saya tidak menggunakan HW-RAID lagi kecuali itu adalah kotak dengan logo EMC di atasnya misalnya. Untuk yang lainnya saya baru saja kembali ke SW-RAID beberapa bulan lagi karena beberapa alasan yang sangat sederhana.

  1. Anda memerlukan perangkat keras tambahan dan harus mencocokkannya. Anda juga harus mencocokkan firmware dan tetap menyinkronkannya. Banyak disk tidak akan berfungsi dengan benar dan Anda akan lonjakan IO-latency Anda tanpa alasan yang jelas.

  2. Perangkat keras tambahan mahal sehingga Anda dapat menggunakan tambahan $ 1000 (pengontrol yang layak dengan dua / tiga disk) untuk solusi kecil yang lebih baik. Investasikan pada lebih banyak disk dan pengontrol standar, memori ECC, CPU yang lebih cepat. Dan disk cadangan di tempat mungkin jika Anda berencana untuk menjalankannya lebih lama dari masa garansi atau tidak ingin membayar biaya ekspres untuk pengiriman semalam.

  3. Memutakhirkan adalah hal yang menyakitkan karena Anda perlu melacak OS-patch dan firmware untuk disk dan pengontrol. Ini dapat menyebabkan situasi di mana peningkatan / pembaruan tidak dimungkinkan lagi.

  4. Pada format disk. Vendor yang cukup menggunakan beberapa tata letak internal untuk menyimpan data yang terkait dengan revisi kombinasi perangkat keras dan firmware Anda. Ini dapat mengakibatkan situasi di mana bagian pengganti membuat Anda tidak mungkin mengakses data Anda.

  5. Ini adalah SPOF dan bottleneck. Memiliki hanya satu pengontrol di belakang hanya satu PCI-bridge tidak memberi Anda kinerja dan redundansi yang benar-benar Anda butuhkan. Dengan ini juga tidak ada jalur migrasi yang ada untuk memigrasi data ke disket lain di luar jangkauan pengontrol.

Sebagian besar dari titik-titik ini telah diatasi dengan perangkat lunak atau solusi SW-RAID generasi terbaru seperti ZFS dan BtrFS. Perlu diingat bahwa pada akhirnya Anda ingin melindungi data Anda dan tidak dapat diakses dengan cepat, tetapi sampah yang berlebihan.


3
Saya tidak setuju. Banyak orang senang dengan Dell, HP, IBM dan pengendali LSI RAID kelas atas. Tapi jujur, sebagian besar server kualitas modern sudah memiliki solusi RAID onboard, jadi ide berbelanja untuk pengontrol individual agak ketinggalan jaman. Solusi RAID perangkat lunak juga perlu memperhitungkan beban kerja tulis latensi rendah. ZFS memiliki ZIL, tetapi banyak implementasi RAID perangkat lunak lain yang kurang di bagian depan itu.
ewwhite

2
Saya juga akan berbeda dengan paragraf terakhir Anda, RAID adalah ketersediaan bukan perlindungan. Perlindungan membutuhkan cadangan, bukan RAID.
Rowan Hawkins

4

Saya telah menghabiskan tahun lalu (selama dan selama 2014-2015) menguji beberapa paralel CentOS 6.6 RAID 1 (mirrored) konfigurasi menggunakan 2 LSI 9300 HBA ayat 2 LSI 9361-8i pengontrol RAID dengan sistem yang dibangun sebagai berikut: 2U Supermicro CSE- Sasis 826BAC4-R920LPB, motherboard ASUS Z9PE-D16, 2 Intel Xeon E5-2687W v2 Prosesor Delapan 3,4 GHz, dicerminkan Seagate ST6000NM0014 6TB SAS 12Gb, RAM 512 GB. Catatan ini adalah konfigurasi yang sepenuhnya sesuai SAS3 (12Gbps).

Saya telah menjelajahi artikel yang ditulis tentang perangkat lunak tuning dan saya telah menggunakan perangkat lunak RAID Linux selama lebih dari 10 tahun. Saat menjalankan tes I / O dasar (dd-oflag = mengarahkan 5k ke file 100G, hdparam -t, dll.), Perangkat lunak RAID tampaknya cocok untuk serangan perangkat keras. RAID perangkat lunak dicerminkan melalui HBA terpisah. Saya telah melakukan pengujian dengan kernel CentOS 6 standar, konfigurasi kernel-lt dan kernel-ml. Saya juga telah mencoba berbagai mdadm, sistem file, subsistem disk, dan tuning o / s yang disarankan oleh berbagai artikel online yang ditulis tentang RAID perangkat lunak Linux. Meskipun melakukan penyetelan, pengujian, penyetelan, dan pengujian, ketika berjalan di dunia baca, sistem pemrosesan transaksi (memiliki database MySQL atau Oracle), saya telah menemukan bahwa menjalankan pengontrol RAID perangkat keras menghasilkan peningkatan kinerja 50 kali lipat.

Selama berbulan-bulan, saya tidak yakin bahwa perangkat keras RAID bisa jauh lebih baik, namun, setelah penelitian mendalam tentang perangkat lunak RAID Linux, pengujian dan penyetelan, itu adalah hasil saya.


2

Sebagian besar penulis di sini tidak tahu apa-apa tentang " lubang tulis ". Ini adalah dasar yang memungkinkan untuk memanggil unit cadangan RAID perangkat keras vs tidak adanya perangkat lunak RAID seperti itu. Nah, untuk contohnya, implementasi RAID perangkat lunak Linux baik mendukung bitmap operasi penulisan atau melakukan perhitungan ulang "paritas" penuh jika terjadi shutdown yang tidak bersih. ZFS selalu berusaha untuk menulis full-stripes untuk menghindari ketidakkonsistenan ini atau menunda memeriksa ulang. Jadi, sebagai rangkuman, RAID perangkat lunak yang cukup pintar saat ini sering kali cukup baik untuk digunakan alih-alih "siapa yang tahu apa yang ada di dalam" yang disebut "hardware RAID".

Adapun bagian cache pertanyaan, itu benar-benar tidak masalah, karena OS itu sendiri menulis cache bisa jauh lebih besar daripada adaptor "perangkat keras".


1
Ini adalah alasan lain untuk menghindari kartu RAID perangkat keras tanpa cache WB yang dilindungi dengan benar. Catatan tentang Linux MD Raid: tidak sepenuhnya kebal dari lubang tulis. Karena tidak memiliki proteksi kehilangan daya, jika terjadi kehilangan daya secara tiba-tiba, data pada akhirnya akan hilang (pikirkan data dalam perjalanan dan / atau penulisan sebagian). Tentu ini akan terjadi bahkan dalam skenario disk tunggal, tetapi sifat paritas atau RAID5 / 6 memperkuat ini. Dalam skenario terburuk, metadata filesystem crical dapat rusak, namun filesystem modern cukup tangguh untuk pulih dengan cukup baik. Namun, beberapa data bisa hilang.
shodanshok

@shodanshok, Anda benar-benar salah. Pikirkan
poige

1
Banyak baterai, jika dipertahankan dalam kondisi baik, dapat menyalakan cache WB selama 24-96 jam, yang merupakan banyak waktu untuk memulihkan daya kecuali situasi yang benar - benar ekstrem. Selain itu, pengendali modern yang beralih ke NVRAM (baca: flash) memori sebagai penyimpanan jangka panjang, sehingga dalam kasus kegagalan daya baterai / supercap kecil akan menyiram isi cache memori NV yang dapat menyimpan data selama berbulan-bulan atau bertahun-tahun dalam lainnya kata, pengontrol RAID BBU akan mencegah RAID5 / 6 lubang di (hampir) semua keadaan.
shodanshok

1
Anda bilang itu kebal untuk menulis lubang. Pengembang mengatakan itu tidak , meskipun mereka mengatakan bahwa itu seharusnya tidak terlalu penting dalam penggunaan dunia nyata.
shodanshok

1
Maaf, tetapi Anda menulis: "Ini adalah dasar yang memungkinkan untuk menyerukan unit cadangan RAID perangkat keras vs. tidak adanya semacam itu untuk perangkat lunak RAID" . Ini SALAH . Kartu RAID perangkat keras yang tepat memberikan perlindungan tambahan , dan saya katakan berkali-kali bahwa ini adalah pendapat dari pengembang LSR yang sama. Sekarang saya mengajukan pertanyaan kepada Anda: pernyataan Anda baik atau salah? Karena salah, harap edit jawaban Anda atau pengguna lain dapat tertipu oleh omong kosong itu.
shodanshok

0

Saya mengerjakan ini sepanjang waktu. Ini sangat tergantung pada apa yang Anda lakukan dan tingkat serangan yang Anda dukung. Kontroler SW menjalankan Raid 0 atau 1 untuk untuk OS dan tidak ada yang istimewa baik-baik saja. Menjalankan pengendali SW dengan Raid 5 pada database meminta masalah! BEBERAPA pengontrol perangkat keras memang memberi Anda kinerja yang lebih baik, tetapi itu tergantung apakah itu dapat melakukan cache dan chipset prosesor dari kartu raid. Juga tidak semua pengontrol perangkat lunak didukung oleh semua os. Jadi kadang-kadang Anda mungkin harus membeli HW untuk menjalankan ESXi ... Kecuali jika Anda menggunakan koneksi sata.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.