ZFS: Mirror vs. RAID-Z

14

Saya berencana membangun server file menggunakan OpenSolaris dan ZFS yang akan menyediakan dua layanan utama - menjadi target iSCSI untuk mesin virtual XenServer & menjadi server file rumah umum. Perangkat keras yang saya cari meliputi pengontrol SATA 2x4-port, 2x drive boot kecil (satu pada setiap kontroler), dan drive besar 4x untuk penyimpanan. Ini memungkinkan satu port gratis per pengontrol untuk meningkatkan larik di jalan.

Di mana saya sedikit bingung adalah cara mengatur drive penyimpanan. Untuk penampilan, mirroring sepertinya adalah raja. Saya mengalami kesulitan melihat manfaat dari menggunakan RAIDZ dibandingkan mirroring. Dengan pengaturan ini saya dapat melihat dua opsi - dua kolam mirrored dalam satu strip, atau RAIDZ2. Keduanya harus melindungi dari 2 kegagalan drive, dan / atau satu kegagalan controller ... satu-satunya manfaat RAIDZ2 adalah 2 drive apa pun bisa gagal. Penyimpanan harus 50% dari kapasitas dalam kedua kasus, tetapi yang pertama harus memiliki kinerja yang jauh lebih baik, bukan?

Hal lain yang saya coba untuk pikirkan adalah manfaat array cermin dengan lebih dari dua perangkat. Untuk integritas data, jika ada, apa manfaat RAIDZ dari mirror tiga arah? Karena ZFS mempertahankan integritas file, apa yang dibawa RAIDZ ke tabel ... bukankah pemeriksaan integritas ZFS meniadakan nilai paritas RAIDZ?

John Clayton
sumber

Jawaban:

14

Jawaban sederhananya adalah bahwa untuk mirror sesuatu hampir tidak membutuhkan daya pemrosesan - itu hanya menulis ke disk untuk kedua kalinya. Untuk RAID-Z2, Anda harus menghitung blok paritas yang sama sekali baru, yang walaupun kecil BISA menghambat CPU ketika Anda harus menulis data dalam jumlah besar dengan cepat.

Mirroring selalu solusi yang lebih disukai untuk data kecepatan tinggi, jika itu hanya massal penyimpanan tanpa kecepatan cepat menulis, RAID-Z2 adalah alternatif yang baik yang tidak memungkinkan setiap dua drive untuk mati seperti yang Anda menyinggung.

Keuntungan lainnya adalah bahwa pool mirroring dapat diperluas dengan lebih banyak perangkat mirroring - sementara RAID-Z2 tidak dapat diperluas - meskipun lebih banyak penyimpanan RAID-Z2 dapat ditambahkan ke pool, itu akan menjadi dua pool penyimpanan RAID-Z2 yang digabungkan (dalam efek) daripada membagi sama rata antara semua penyimpanan dan bergaris.

dotwaffle
sumber
Tetapi di ZFS apa yang diberikan paritas blok RAIDZ? Apakah ini memberikan integritas data tambahan di luar apa yang sudah disediakan ZFS? Atau hanya diperlukan agar dua drive mati? Jika itu satu-satunya manfaat daripada dalam skenario tiga arah tidak ada manfaat RAIDZ atas cermin, bukan?
John Clayton
1
RAID-Z memungkinkan satu drive mati - jika Anda memiliki 10 drive, Anda mendapatkan data senilai 9 drive. Dengan RAID-Z2 Anda dapat membuat dua drive mati, dan memiliki data 8 drive. Dengan mirror, Anda dapat membuat setengah drive mati, tetapi hanya satu dari setiap set dua. Saya menduga Anda sudah tahu ini, tapi ini kasus pinggiran dari 4 drive yang memberikan dua solusi dari dua drive-gagal - RAID-Z2 dan mode Mirror. Tidak ada tambahan integritas data yang "berguna" dalam skenario normal.
dotwaffle
Jadi untuk menjadi jelas manfaat RAIDZ over mirror adalah sedikit lebih banyak perlindungan dari kegagalan perangkat keras? RAIDZ1 dan mirror dengan drive X pada dasarnya setara?
John Clayton
5
Paritas RAID-Z adalah superset dari checksumming bawaan ZFS. Semua yang dilakukan checksum adalah memastikan bahwa data yang sedang dibaca dari disk sudah benar. Ini dirancang untuk menjadi pemeriksaan cepat dengan sedikit overhead. Apa yang diberikan paritas RAID-Z adalah kemampuan untuk membangun kembali data yang rusak saat kehilangan drive (atau 2 untuk RAID-Z2). Tetapi perhitungan untuk menghasilkan data paritas ini jauh lebih intensif CPU daripada checksum blok sederhana, dan harus dihitung pada seluruh strip, bahkan jika Anda hanya menulis blok 4KB.
Afrazier
4
@ John Clayton: tingkat redundansi tergantung pada bagaimana Anda mengonfigurasi penyimpanan Anda. Anda bisa membuat mirror N-way, artinya kapasitas data Anda adalah ukuran satu drive, tetapi Anda bisa kehilangan N-1 drive tanpa kehilangan data apa pun. Misalnya, jika Anda memiliki mirror 3-arah, ketiga drive berisi data yang sama, dan Anda dapat kehilangan 2 drive tanpa kehilangan data apa pun. Perbedaannya adalah bahwa menambahkan drive ke mirror N-way meningkatkan redundansi (tetapi kapasitas Anda selalu sebesar 1 drive), sementara menambahkan drive ke raidz2 meningkatkan kapasitas (tetapi redundansi Anda selalu 2 drive).
merampok
18

RAID-Z menghilangkan sebagian besar penalti tulis dan masalah integritas data yang diderita oleh volume RAID 5/6, dengan mengorbankan beberapa waktu CPU. Biasanya, sistem memiliki siklus CPU untuk cadangan, sehingga menghabiskan waktu CPU untuk meningkatkan kinerja IO dan integritas data adalah kompromi yang baik vs mirroring.

Berikut adalah penjelasan rinci tentang RAID-Z yang dapat menjawab pertanyaan lain.

Juga, ingatlah bahwa RAID adalah solusi toleransi kesalahan . Anda tidak menerapkan RAID-Z2 untuk melindungi terhadap kehilangan data - Anda melakukan pencadangan atau replikasi untuk melakukannya. Anda memilih untuk mengimplementasikan RAID-Z2 vs RAID-Z atau RAID-10 vs RAID-6 vs RAID-5 untuk menjaga sistem Anda operasional jika terjadi kegagalan perangkat keras.

duffbeer703
sumber
1
Saya harus memberikan jawaban untuk dotwaffle karena dia membantu saya memahami perbedaan teknis. Saran bagus tentang penggunaan yang dimaksudkan ... yang benar-benar membuat saya berhenti dan berpikir.
John Clayton
1
Satu hal penting yang perlu diperhatikan adalah bahwa sementara RAIDZ mengeliminasi masalah penalti tulis , ia memperkenalkan masalah penalti baca karena peningkatan konkurensi untuk setiap operasi baca
the wabbit