cara menambahkan tumpukan drive ke serangan 0 meningkatkan kinerja?

10

cara menambahkan tumpukan drive ke serangan 0 meningkatkan kinerja? saya tahu bahwa dua drive dalam raid bergaris biasanya akan lebih cepat dari satu drive tetapi apakah saya akan melihat perbedaan kinerja antara mengatakan, 2 drive dalam raid bergaris dan 8? apakah ada batasan umum untuk jumlah drive dalam serangan sebelum Anda benar-benar tidak mendapatkan manfaat lagi?

pertanyaan serupa telah diajukan di sini

Apakah menambahkan lebih banyak drive ke RAID 10 Array meningkatkan kinerja?

tapi saya benar-benar bertanya apakah menambahkan banyak drive ke serangan 0 memiliki perbaikan lebih dari sekadar menambahkan katakan 2 atau 4. apakah kinerjanya terus meningkat?

Peter Cullen
sumber

Jawaban:

11

Secara teori ya, lebih banyak drive dalam raid0 akan menghasilkan kinerja yang lebih tinggi karena beban dibagi lebih banyak drive. Namun dalam praktiknya Anda akan dibatasi oleh bandwidth pengontrol serangan, kinerja CPU dan memori dan sejenisnya. Peningkatan kinerja tidak akan linier, yaitu 4 disk tidak persis dua kali lebih cepat dari 2 disk.

Dalam sistem modern mana pun dengan pengontrol raid, atau bahkan menggunakan raid software dengan linux 'mdadm, menggunakan 8 drive akan lebih cepat daripada menggunakan 2 dan Anda tidak boleh ditahan oleh sisa kinerja sistem. CPU, raid dan / atau disk controller, memori, semuanya harus bisa menanganinya. Anda mungkin melihat peningkatan penggunaan sumber daya sistem semakin banyak drive yang Anda tambahkan. Terutama jika Anda menggunakan pengontrol SATA onboard dalam kombinasi softraid. Tapi tidak ada yang benar-benar akan menghalangi kegunaan keseluruhan. Jika menggunakan linux, Anda mungkin ingin menggunakan kernel yang telah dikonfigurasikan tanpa "preempt" agar tugas yang berorientasi server mendapatkan preferensi daripada respons pengguna.

https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO

Tentu saja semakin banyak drive yang Anda tambahkan, semakin tinggi kemungkinan salah satu dari mereka gagal dan seluruh serangan Anda hancur. Saya harapkan serangan 8 drive tidak akan bertahan lebih dari satu atau dua tahun, jika Anda beruntung. Sebuah raid0 dari 16 drive akan meminta masalah dan kemudian saya akan mempertimbangkan raid10, itu masih akan cukup cepat dan Anda tidak perlu terlalu khawatir.

Adapun berapa banyak drive yang akan memaksimalkan sumber daya sistem saya tidak akan tahu kecuali saya memiliki spesifikasi sistem yang terperinci. Saya pikir Anda akan lebih dibatasi oleh tingkat kegagalan, jika Anda memeriksa sekitar 16 disk (saya lebih suka tidak memikirkannya).

Biasanya Anda hanya akan menggunakan raid0 untuk data yang dapat hilang kapan saja tanpa masalah. Ini akan bekerja sangat baik untuk hal-hal seperti membangun server, atau ruang awal untuk perhitungan ilmiah besar. Sebenarnya skenario itu adalah apa yang sering saya gunakan untuk raid0 dan ini adalah cara yang bagus untuk memeras sedikit lebih banyak kehidupan dari sekelompok disk yang lebih tua, kapasitas yang lebih rendah dan murah yang seharusnya mengumpulkan debu. Anda bahkan dapat mencampur ukuran, setidaknya dengan mdadm.

Jika menggunakan mdadm mungkin perlu dipertimbangkan untuk hanya menggunakan raid10 karena dalam konfigurasi tertentu ia bisa mendekati kinerja raid0, yaitu membaca kinerja raid0 dan sudah meningkatkan kinerja penulisan di atas level raid lain (kecuali raid0). Anda akan mendapatkan redundansi yang lebih baik daripada level serangan lainnya, dengan hanya penalti kecepatan sedikit dibandingkan dengan serangan0. Itu akan menjadi yang terbaik dari kedua dunia, Anda tidak sering menemukannya.

https://en.wikipedia.org/wiki/RAID#Non-standard_levels

Linux MD RAID 10 menyediakan driver RAID umum yang dalam "hampir" layoutnya default ke RAID 1 standar dengan dua drive, dan RAID 1 + 0 standar dengan empat drive; meskipun, itu dapat mencakup sejumlah drive, termasuk nomor ganjil. Dengan tata letak "jauh", MD RAID 10 dapat menjalankan striped dan mirrored, bahkan dengan hanya dua drive dalam tata letak f2; ini menjalankan mirroring dengan pembacaan bergaris, memberikan kinerja pembacaan RAID 0. Regular RAID 1, seperti yang disediakan oleh RAID perangkat lunak Linux, tidak strip membaca, tetapi dapat melakukan pembacaan secara paralel.

Seperti yang disarankan dalam komentar, mencampur ukuran dengan mdadm tidak akan memberikan peningkatan kecepatan jika Anda menggunakan semua ruang disk yang bertentangan dengan membiarkan disk terkecil menentukan ukuran array.

Juga mencari waktu tidak akan membaik dalam raid0 dan bahkan bisa menjadi sedikit lebih lambat. Untuk raid0 berbasis SSD waktu pencarian akan sangat kecil (antara 0,08 dan 0,16 ms https://en.wikipedia.org/wiki/Hard_disk_drive_performance_characteristics#cite_note-HP_SSD-6 ) tidak masalah apa yang saya harapkan.

aseq
sumber
Jika Anda ingin mencampur ukuran, maka Anda tidak dapat menerapkan RAID0, setidaknya untuk menggunakan semua ruang yang dimiliki disk. Anda harus menggunakan JBOD, yang tidak meningkatkan kinerja.
Tero Kilkanen
Anda dapat mencampur ukuran menggunakan mdadm, itu sangat fleksibel, mdadm bahkan memungkinkan Anda untuk mengkonfigurasi 3 disk raid10. Saya tidak berharap Anda dapat mencampur ukuran dalam pengontrol serangan, yang kurang fleksibel, tetapi lebih cepat.
aseq
1
Saya memeriksa ini, dan jika Anda ingin RAID0, maka perangkat terkecil dari array menentukan ukuran array lengkap. Artinya, jika Anda memiliki drive 100GB, 200GB, dan 300 GB, Anda akan mendapatkan array RAID0 300 GB dan ruang kosong 100GB dan 200GB untuk digunakan untuk keperluan lain. Dalam mode Linear, Anda mendapatkan kapasitas lengkap dari semua perangkat, tetapi bukan kinerja paralel.
Tero Kilkanen
1
Kedengarannya benar ya.
aseq
2
Dengan media rotasi, bukankah ada masalah waktu mencari vs waktu transfer? Menambahkan lebih banyak disk menyebar jumlah yang dibaca / ditulis di lebih banyak piring-piring (masing-masing harus melakukan lebih sedikit == lebih cepat) tetapi mereka semua masih harus melakukan operasi pencarian (tidak dikurangi dengan menambahkan lebih banyak drive). Jadi, tergantung pada jenis operasi yang Anda lakukan (mis. Kehilangan pembacaan kecil vs beberapa pembacaan besar), meningkatkan kecepatan transfer (dengan menambahkan lebih banyak drive) dapat membuat perbedaan kecil atau besar.
Molomby
1

Itu tergantung dari beban kerja, tapi IMHO ya menambahkan 2 disk tambahan ke array 2 disk yang ada harus memberikan kinerja keseluruhan yang lebih baik.

Anda perlu menyadari di mana hambatannya:

  • CPU - seberapa banyak aliran data yang dapat ditangani CPU,
  • bus / controller - berapa banyak data yang dapat dibawa,
  • SSD / HDD - berapa banyak data yang dapat diberikan / diambil.

Mari kita asumsikan ada RAID perangkat lunak Linux, kemudian menambahkan dua disk tambahan MUNGKIN menghasilkan:

  • ~ dua kali lebih singkat waktu akses ke blok data yang cukup besar, yang menghasilkan;
  • ~ IOPS ganda,
  • ~ throughput ganda, dengan asumsi bahwa controller memiliki bus yang cukup dan CPU dapat menangani lalu lintas.

* ~ ini tidak pernah dua kali lipat dalam faktor-faktor berikut, selalu kurang 10-20%. Sepertinya kurang lebih linier. Tolong jangan perlakukan itu sebagai jawaban resmi, saya tidak melakukan penelitian tentang hal itu.

Michal Sokolowski
sumber