Apakah RAID1 meningkatkan kinerja dengan Linux mdadm?

26

Saya memiliki NAS 2-bay murah dengan HDD 2TB. Agar kuat terhadap kegagalan disk, saya berpikir untuk membeli HDD 2TB kedua dan memasukkannya ke RAID1 dengan Linux mdadm. Sistem file ext4.

Apakah ini akan meningkatkan atau menurunkan kinerja NAS? Bagaimana dengan sekedar membaca atau menulis kinerja?

Tampaknya ada banyak pendapat tentang ini secara online tetapi tidak ada konsensus.

Terima kasih.

Edit:

Jadi saya sudah mendapat tiga jawaban berbeda: "sedikit lebih cepat", "Anda tidak akan memperhatikan" dan "akan menurunkan kinerja jika ada". (Saya terutama tertarik pada kinerja membaca.) Wikipedia mengatakan "kinerja membaca dapat naik secara kasar sebagai kelipatan linear dari jumlah salinan". Yang mana?

Edit 2:

Saya telah menemukan bukti pemasangan yang mendukung peningkatan kinerja baca RAID1, termasuk halaman manual MD:

Perubahan ditulis ke semua perangkat secara paralel. Data dibaca dari salah satu perangkat. Pengemudi mencoba untuk mendistribusikan permintaan baca di semua perangkat untuk memaksimalkan kinerja.

Saya juga menemukan MD's RAID10 dengan --layout=f2, yang menyediakan redundansi RAID1 dengan kinerja baca RAID0, dan dapat digunakan hanya dengan dua drive. Namun kinerja penulisan berkurang, karena penulisan berurutan melibatkan kedua drive yang mencari bolak-balik antara bagian drive yang jauh. man mduntuk detail.

Jesse
sumber
2
menulis; sedikit lebih lambat. membaca; sedikit lebih cepat adil. Dari apa yang saya pahami, perbedaan penulisan hampir nol, dan membaca cukup terlihat.
Sirex
Seperti yang dikatakan sirex .. Anda tidak akan melihat perbedaan kinerja dengan mata telanjang .. Jangan berharap untuk menggandakan atau bahkan setengahnya.
Piotr Kula
1
Saya kehilangan satu bagian: Seberapa cepat akses ke NAS. Jika satu disk sudah mengisi koneksi jaringan maka kecepatan internal yang lebih banyak tidak akan banyak membantu Anda.
Hennes

Jawaban:

39

Ya, implementasi RAID1 Linux mempercepat operasi pembacaan disk dua kali selama dua operasi pembacaan disk dilakukan secara bersamaan . Itu berarti membaca satu file 10GB tidak akan membuat RAID1 lebih cepat daripada pada disk tunggal, tetapi membaca dua file 10GB yang berbeda * akan lebih cepat.

Untuk menunjukkannya, cukup baca beberapa data dengan dd. Sebelum melakukan apa pun, bersihkan cache dengan disk baca sync && echo 3 > /proc/sys/vm/drop_caches. Kalau tidak, hdparmakan mengklaim pembacaan super cepat.

File tunggal:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 65,9659 s, 159 MB/s

Dua file:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT skip=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 64,9794 s, 161 MB/s
10485760000 bytes (10 GB) copied, 68,6484 s, 153 MB/s

Membaca 10 GB data membutuhkan waktu 65 detik sedangkan membaca 10 GB + 10 GB = 20 GB data membutuhkan total 68,7 detik, yang berarti banyak pembacaan disk mendapat manfaat besar dari RAID1 di Linux. skip=$COUNTbagian itu sangat penting. Proses kedua membaca 10 GB data dari offset 10 GB.

Jawaban Jared dan komentar ssh yang merujuk pada http://www.unicom.com/node/459 salah. Benchmark dari sana membuktikan pembacaan disk tidak mendapat manfaat dari RAID1. Namun, tes ini dilakukan dengan alat benchmarking bonnie ++ yang tidak melakukan dua pembacaan terpisah pada satu waktu. Penulis secara eksplisit menyatakan bonnie ++ tidak dapat digunakan untuk pembandingan array RAID ( lihat readme ).

Pembuat sekarang
sumber
5

Ya, Anda akan mendapatkan peningkatan kinerja membaca + redundansi. Anda dapat dengan mudah membayangkan bahwa ketika Anda dapat membaca bagian-bagian file secara bersamaan dari dua HDD yang berbeda karena file-file tersebut ada di kedua HDD tersebut.

Jadi secara teoritis, jika pengontrol RAID melakukan tugasnya dengan benar, Anda dapat memperoleh peningkatan O (n).

inf
sumber
5
mdadm adalah perangkat lunak RAID sehingga sebenarnya tidak ada "RAID controller" tetapi itu akan memberikan dorongan baca yang baik ketika melakukan multplie membaca secara paralel, tidak begitu banyak dalam hal ini saya kira karena kotak NAS jarang diakses secara bersamaan. Lihat di sini untuk perincian: freebsdwiki.net/index.php/…
Shadok
1
Dalam praktiknya kinerja menurun untuk membaca dari raid MD Software Linux. Lihat unicom.com/node/459 (Dalam tes itu kecepatan baca menurun dari 77 MB / s menjadi 74 MB / s).
ssh
2
@ssh unicom.com/node/459 benar-benar salah. bonnie ++ tidak dapat digunakan untuk menguji mirror RAID, yang secara eksplisit dinyatakan dalam readme. Lihat jawaban saya untuk lebih jelasnya. superuser.com/a/757264/68978
Nowaker
4
  • man 4 mdmenyatakan: "... Perhatikan bahwa pembacaan pembacaan yang dilakukan oleh pengemudi tidak membuat profil kinerja RAID1 sama dengan untuk RAID0 ; aliran input tunggal tidak akan dipercepat (misalnya satu dd), tetapi beberapa aliran berurutan atau acak beban kerja akan menggunakan lebih dari satu spindle. Secara teori , memiliki N-disk RAID1 akan memungkinkan N urutan berurutan untuk membaca dari semua disk. … "

  • Sebagai tambahan - dalam praktiknya , berdasarkan pada iostatkeluaran yang diamati pada 2 pengaturan perangkat lunak RAID khas HDD, tidak ada keseimbangan . Bahkan sepertinya mdadmopsi --write-mostlyitu selalu aktif.

poige
sumber
3

Tidak, Anda tidak akan menerima manfaat apa pun saat membaca dari mdadm RAID1. Saya bertanya pada diri sendiri tentang hal ini beberapa waktu lalu.

dstatmenunjukkan penggunaan disk, juga bwm-ngsangat membantu terutama dalam kasus ini, karena dapat menunjukkan penggunaan baca / tulis pada anggota RAID mdadm yang terpisah. Cukup tekan n(berikutnya) beberapa kali, itu akan beralih dari statistik antarmuka ke statistik disk. Kemudian beralih ke nilai maks dengan tuntuk melihat max baca / tulis dari setiap disk. Anda akan melihat berikut:

Melakukan menulis ke volume RAID1 bwm-ng menunjukkan 2 x menulis, menulis ke 2 disk sekaligus. Melakukan membaca dari volume RAID1 bwm-ng menunjukkan pembacaan dari drive tunggal (anggota array).

Terlalu banyak
sumber