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?
sumber
Jawaban:
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:
sumber
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.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.
sumber
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.
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.
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.
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.
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.
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.
sumber
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.
sumber
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".
sumber
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.
sumber