ZFS stripe di atas perangkat keras RAID 6. Apa yang mungkin salah?

9

Saya memiliki 36 * 4TB HDD SAN Rack. Pengontrol RAID tidak mendukung RAID60 dan tidak lebih dari 16 HDD dalam satu grup RAID. Jadi saya memutuskan untuk membuat 2 kelompok RAID6 16HDD atau 4 dari 8 HDD. Saya ingin mendapatkan semua penyimpanan sebagai satu partisi.

Jadi, apa yang mungkin salah jika saya akan menggunakan zfs pool di atas perangkat keras RAID6? Ya, saya tahu bahwa sangat disarankan untuk menggunakan HDD asli atau mode pass-through. Tapi saya tidak punya opsi ini.

Atau haruskah saya menjauh dari ZFS dan serangan perangkat lunak dalam situasi ini? (Saya sebagian besar tertarik pada kompresi dan snapshot)

Severgun
sumber
2
Jika Anda akan menggunakan ZFS maka mengapa tidak hanya mengekspos semua disk secara individual (kadang-kadang disebut mode HBA) dan biarkan ZFS menanganinya - itu yang terbaik. Kami memiliki sejumlah pakar sejati di sini (ewwhite for a start) yang akan membantu Anda dengan ini - pengontrol disk apa yang Anda gunakan?
Chopper3
1
Anda akan menumbangkan banyak fitur ZFS menggunakan metode ini, tetapi secara keseluruhan tidak ada salahnya untuk melakukannya dengan cara ini. Checksumming sedikit lebih tidak berguna dalam konfigurasi ini, karena pengontrol RAID akan mengabstraksi semua detail disk. Saya lebih tertarik pada mengapa Anda mengatakan Anda tidak dapat menggunakan JBOD. terjaminsan 3530 adalah unit yang mampu JBOD.
Spooler
2
Saya akan menunggu ewwhite - dia di AS tengah sehingga sedang tidur tetapi dia tahu ZFS lebih baik daripada siapa pun yang saya kenal
Chopper3
1
@Severgun Juga 4 HDD tetap tidak berguna karena tidak perlu dalam hotspare Apakah Anda benar-benar berpikir lebih baik untuk array RAID dengan drive yang gagal untuk pincang dalam mode terdegradasi daripada secara otomatis mengambil cadangan panas, membangun kembali, dan kembali ke sepenuhnya- status fungsional?
Andrew Henle
1
@ Chopper3 saya akan menjawab ... dengan enggan.
ewwhite

Jawaban:

5

Jadi saya memutuskan untuk membuat 2 kelompok RAID6 16HDD atau 4 dari 8 HDD.

Itu bukan cara terbaik untuk melakukan sesuatu. Ini mungkin bekerja cukup baik, tetapi tergantung pada persyaratan kinerja Anda, mungkin tidak.

Ukuran ideal untuk array RAID5 / 6 akan sedemikian rupa sehingga kelipatan tepat dari jumlah data yang "merentang" array cocok dengan ukuran blok sistem file yang dibangun di atasnya.

RAID5 / 6 array berfungsi sebagai perangkat blok - satu blok data merentang disk dalam array, dan blok itu juga berisi data paritas. Sebagian besar pengontrol RAID akan menulis sejumlah besar data berukuran dua untuk setiap disk dalam array - nilai persisnya dapat dikonfigurasi dalam sistem RAID yang lebih baik - dan unit Dot Hill Anda adalah salah satu dari "sistem RAID yang lebih baik". Itu penting.

Jadi dibutuhkan N x (jumlah data yang disimpan per keping disk) untuk menjangkau array, di mana N adalah jumlah disk data. Array RAID5 5-disk memiliki 4 "data" disk, dan array RAID6 10-drive memiliki 8 disk data.

Karena ketika data ditulis ke array RAID5 / 6, jika blok data sedemikian rupa sehingga cukup besar untuk menjangkau seluruh array, paritas dihitung untuk data itu - biasanya dalam memori pengontrol - maka seluruh strip ditulis untuk disk. Sederhana, dan cepat.

Tetapi jika potongan data yang ditulis tidak cukup besar untuk menjangkau seluruh array, apa yang harus dilakukan oleh pengontrol RAID untuk menghitung data paritas yang baru? Pikirkan tentang hal ini - perlu semua data di seluruh strip untuk menghitung ulang data paritas baru .

Jadi jika Anda membuat 16-drive RAID6 array dengan default per-disk chunk 512kb, itu berarti dibutuhkan 7 MB untuk "span" array.

ZFS bekerja dalam blok 128kb, umumnya.

Jadi ZFS menulis blok 128kB - ke array RAID6 16-drive. Dalam konfigurasi yang Anda usulkan, itu berarti pengontrol RAID perlu membaca hampir 7 MB dari array dan menghitung ulang paritas di 7 MB tersebut. Kemudian tulis ulang seluruh 7 MB itu kembali ke disk.

Jika Anda beruntung, semuanya ada dalam cache dan Anda tidak mendapatkan kinerja yang luar biasa. (Ini adalah salah satu alasan utama mengapa posisi "jangan gunakan RAID5 / 6" memiliki pengikut seperti ini - RAID1 [0] tidak menderita karena hal ini.)

Jika Anda kurang beruntung dan Anda tidak benar-benar menyelaraskan partisi sistem file Anda, blok 128kB itu mencakup dua garis RAID yang tidak ada dalam cache, dan pengontrol perlu membaca 14 MB, menghitung paritas, kemudian menulis 14 MB. Semua untuk menulis satu blok 128kB.

Nah, itu yang perlu terjadi secara logis . Ada banyak optimisasi yang dapat dilakukan oleh pengontrol RAID yang baik untuk mengurangi IO dan beban komputasi dari pola IO tersebut, sehingga mungkin tidak terlalu buruk.

Tetapi di bawah beban berat penulisan blok 128kB ke lokasi acak, ada peluang yang sangat bagus bahwa kinerja array RAID6 16-drive dengan ukuran 7 MB akan sangat mengerikan.

Untuk ZFS, "ideal" yang mendasari RAID5 / 6 LUN untuk sistem file tujuan umum di mana sebagian besar akses secara acak acak akan memiliki ukuran garis yang bahkan pembagi 128kB, seperti 32kB, 64kB, atau 128kB. Dalam hal ini, yang membatasi jumlah disk data dalam array RAID5 / 6 menjadi 1 (yang tidak masuk akal - bahkan jika mungkin untuk mengkonfigurasi, lebih baik menggunakan RAID1 [0]), 2, 4, atau 8. Kinerja terbaik dalam skenario kasus terbaik adalah dengan menggunakan ukuran garis 128kB untuk array RAID5 / 6, tetapi kasus terbaik tidak sering terjadi dalam sistem file tujuan umum - seringkali karena sistem file tidak menyimpan metadata sama seperti mereka menyimpan data file.

Saya akan merekomendasikan pengaturan array RAID5 5-disk atau array RAID6 10-disk, dengan ukuran potongan per-disk yang cukup kecil sehingga jumlah data untuk menjangkau seluruh strip array adalah 64kB (ya, saya sudah melakukan ini sebelum untuk ZFS - berkali-kali). Itu berarti untuk array RAID dengan 4 disk data, ukuran chunk per-disk harus 16kB, sedangkan untuk array RAID 8-data-disk, ukuran chunk per-disk harus 8kB.

Kemudian memungkinkan ZFS untuk menggunakan seluruh array yang - jangan tidak partisi itu. ZFS akan menyelaraskan dirinya dengan benar ke seluruh drive, apakah drive tersebut adalah disk tunggal sederhana atau array RAID yang disajikan oleh pengontrol RAID.

Dalam hal ini, dan tanpa mengetahui ruang yang tepat dan persyaratan kinerja Anda, saya sarankan menyiapkan tiga array RAID6 10-drive atau enam array RAID5 5-drive dengan ukuran garis 64kB, mengkonfigurasi beberapa suku cadang panas, dan menyimpan empat dari Anda disk untuk apa pun yang muncul di masa depan. Karena sesuatu akan terjadi.

Saya pasti tidak akan menggunakan sistem disk dalam mode JBOD - ini adalah perangkat yang sepenuhnya memenuhi standar NEBS Level 3 yang menyediakan keandalan signifikan dan perlindungan ketersediaan yang terpasang langsung ke perangkat keras. Jangan buang itu hanya karena "ZFS !!!!". Jika itu adalah perangkat keras komoditas murah yang Anda kumpulkan dari komponen? Ya, mode JBOD dengan ZFS menangani RAID adalah yang terbaik - tapi itu BUKAN perangkat keras yang Anda miliki. GUNAKAN fitur yang disediakan perangkat keras.

Andrew Henle
sumber
Itu berarti untuk array RAID dengan 4 disk data, ukuran chunk per-disk harus 16kB, sedangkan untuk array RAID 8-data-disk, ukuran chunk per-disk harus 32kB. Saya agak bingung dengan matematika ini. Mengapa 8 disk - 32kB chunk? Koreksi saya jika saya salah: 128kB (blok ZFS) / 3 (array RAID) = 43 kB per-RAID array. RAID6 dari 10 disk 43kB / 8 = 5kB (tidak tersedia chunksize) 8kB chunksize terdekat juga tidak tersedia oleh perangkat keras. Jadi, kinerja terbaik tidak dapat diakses?
Severgun
@ Anygun saya meletakkan ukuran chunk mundur. Masalah dengan membidik kinerja terbaik mutlak pada RAID5 / 6 adalah bahwa hal itu hanya akan terjadi ketika hampir semua operasi IO cocok dengan ukuran strip array RAID. Jumlah signifikan operasi IO yang lebih kecil dari ukuran garis dapat secara serius menurunkan kinerja. Pergi dengan ukuran blok yang lebih kecil membantu membatasi dampak penulisan blok kecil acak. Dalam pengalaman saya, lebih baik memberikan 1-2% dari kinerja maksimum yang mungkin sebagai imbalan untuk membatasi penurunan terburuk. Sistem file untuk keperluan umum cenderung memiliki jumlah tulisan kecil yang baik.
Andrew Henle
(lanjutan) 8 disk data dalam array RAID5 / 6 dengan ukuran chunk 16kB per disk menghasilkan ukuran garis 128kB di seluruh array. Begitu juga potongan 32kB untuk array 4-data-disk. ZFS menulis blok data file 128kB ke satu perangkat - itu tidak dibagi di semua zdevs. Sekali lagi, meskipun, untuk sistem file keperluan umum, akan ada banyak sub-128kB menulis, sehingga ukuran garis yang lebih kecil (64kB) akan menghindari penurunan kinerja yang lebih baik di bawah beban tulis yang berat, tetapi dengan biaya yang kecil di terbaik- kinerja kasus.
Andrew Henle
4

Oke, saya akan gigit ...

Ini adalah perangkat keras yang salah untuk aplikasi tersebut. Pengaturan DotHill memiliki batasan yang sama dengan HP StorageWorks MSA2000 / P2000 karena hanya 16 drive yang dapat digunakan dalam pengelompokan array tunggal.

ZFS di atas perangkat keras RAID atau SAN LUN yang diekspor tidak selalu menjadi masalah.

Namun, melepaskan ZFS LUN pada interkoneksi yang tidak diketahui, lintas sasis ekspansi dapat menimbulkan risiko.

  • Misalnya, apakah Anda menjalankan multipath SAS dalam topologi dering dengan pengontrol ganda?
  • Apakah Anda memiliki kabel redundan kembali ke server?
  • Sudahkah Anda mendistribusikan drive secara vertikal di selungkup dengan cara yang akan mengurangi kegagalan sasis / kabel / pengontrol tunggal dan mencegahnya menghancurkan bagian dari garis RAID0 Anda?

Serius, mungkin ada baiknya mengevaluasi apakah Anda memerlukan semua penyimpanan ini dalam ruang nama tunggal ...

Jika Anda DO membutuhkan jenis kapasitas itu dalam satu pemasangan, Anda harus menggunakan penutup JBOD yang terpasang khusus HBA dan mungkin beberapa unit kepala dengan kabel tangguh dan tata letak yang lebih cerdas.

putih
sumber
1

Anda harus langsung memasang semua drive ke kotak yang menjalankan ZFS. Dapatkan SAS HBA dan sambungkan drive ke kotak berkemampuan ZFS (misalnya menjalankan OmniOS atau SmartOS). Anda kemudian dapat berbagi ruang melalui NFS, SMB, iScsi ...

Tobi Oetiker
sumber
Anda harus langsung memasang semua drive ke kotak yang menjalankan ZFS. Tidak harus - mengganti drive yang gagal dalam array perangkat keras pada beberapa pengontrol mudah : cabut hard drive dengan lampu yang gagal menyala kemudian masukkan yang baru. Tidak perlu administrator sistem untuk menjalankan perintah ZFS untuk mengganti drive. Dalam pengaturan perusahaan dengan ratusan atau ribuan server dan mungkin puluhan ribu hard drive yang tersebar di beberapa pusat data, itu menjadi perhatian. Drive gagal jauh lebih banyak daripada bit busuk terjadi.
Andrew Henle
@Tobi Oetiker ceritakan bagaimana cara menempatkan 36 3,5 "hdds ke dalam case 2U
Severgun
kami hanya meletakkannya di kotak tambahan ... gunakan sas extender ... seperti untuk penyebaran besar, mungkin tanyakan bagaimana kegembiraan menanganinya.
Tobi Oetiker
@AndrewHenle Agar adil, dimungkinkan untuk mencapai prosedur penggantian yang mudah dan LED status dengan ZFS dan HBA yang tepat (mungkin melibatkan beberapa skrip kecil jika tidak menggunakan solusi yang dipaketkan).
user121391
0

Alasan ZFS di atas volume logis HW RAID adalah ide SANGAT BURUK , adalah karena ZFS memerlukan akses tingkat blok untuk benar-benar berfungsi dengan baik. Ya, ini akan dapat digunakan, tetapi fungsi tidak akan lengkap sampai Anda memasang drive langsung ke OS melalui HBA atau koneksi SATA langsung. Salah satu contoh adalah bahwa dalam konfigurasi yang Anda usulkan ZFS tidak dapat secara wajar melindungi data Anda terhadap perubahan pada data di bawah ini (di sisi lain dari pengontrol RAID HW), dan karenanya tidak dapat menjamin keamanan data Anda . Ini adalah salah satu alasan utama ZFS digunakan, selain itu super duper cepat.

ZFS adalah teknologi yang luar biasa, dan saya sangat merekomendasikannya. Tetapi Anda harus meninjau kembali struktur Anda di sini agar dapat menggunakannya dengan benar. Yaitu memiliki ZFS membuat volume logis (vdevs) dari disk secara langsung.

Sepertinya ada lebih banyak bacaan yang perlu Anda lakukan tentang bagaimana ZFS beroperasi sebelum Anda dapat secara akurat memahami apa yang Anda usulkan, berbeda dengan apa yang sebenarnya harus dilakukan.

BloodyIron
sumber
Ya, ya dan ya. Saya mengerti bagaimana ZFS bekerja sebanyak yang saya bisa. Tetapi ada beberapa komplikasi: 1) Saya sudah memiliki kandang SAN dan perlu menggunakannya. Saya tidak membangun penyimpanan dari awal. 2) Ini bukan NAS rumah saya di mana saya dapat membeli dan membuang barang-barang. 3) Anggaran untuk konfigurasi penyimpanan yang dibangun kembali sama dengan nol . Dari penyimpanan saya membutuhkan kecepatan tulis maksimum yang tersedia dengan ruang sekitar 100Tb. Saya mencari ZFS sebagian besar karena kompresi dan snapshot. Saya dapat mencoba btrfs tetapi ini masih eksperimental. Hmm mungkin ZOL tidak stabil juga? Saya tidak tahu sekarang.
Severgun
@Severgun Selama Anda tahu apa kerugiannya, Anda akan baik-baik saja menurut saya. ZFS memiliki banyak fitur bagus (seperti foto) yang bekerja secara independen dari yang lain. Sebagian besar saran di internet menekankan pentingnya praktik terbaik di semua bidang, tetapi itu adalah rekomendasi, bukan persyaratan yang ketat. Poin ini akan menjadi kurang penting di masa depan, karena semakin banyak distribusi LInux berubah menjadi ZFS dan sebagian besar sistem Linux menjalankan virtualisasi, sehingga mereka akan memiliki situasi yang tepat.
user121391
1
Alasan ZFS di atas volume logis HW RAID adalah ide SANGAT BURUK, adalah karena ZFS memerlukan akses tingkat blok untuk benar-benar berfungsi dengan baik. Itu sangat buruk bahkan tidak cukup baik untuk disebut salah. Anda tampaknya tidak tahu apa artinya perangkat keras yang sesuai dengan NEBS 3, kan? selain itu menjadi super duper cepat. ZFS adalah banyak hal baik. "super duper fast" BUKAN salah satunya. Ini adalah sistem file yang cepat . Begitu juga ini . Saat sistem file berjalan, ZFS tidak cepat.
Andrew Henle