mdadm RAID Pengaturan Cepat dengan Empty Drive?

9

Saya membuat ulang beberapa disk RAID5 sebagai RAID6 dengan mdadm. Tidak ada data pada drive yang saya pedulikan.

Menyiapkan RAID memerlukan waktu cukup lama untuk menyiapkan bentuk - Saya menerima bahwa ketika ada data yang perlu dikupas dan paritas dihitung, namun dengan drive ini, mereka kosong - atau setidaknya saya ingin mereka dianggap kosong.

Jadi adakah cara untuk melewatkan perhitungan paritas dan memberi tahu mdadm untuk hanya mengatur superblok dan dilakukan, atau sebaliknya, apa sebenarnya yang dihabiskan selama ini ketika tidak ada data untuk bergerak?

md3 : active raid6 sdf3[5] sde3[4] sdd3[3] sdc7[2] sdb3[1] sda3[0]
      1953114112 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU]
      [>....................]  resync =  1.3% (6790144/488278528) finish=409.3min speed=19604K/sec

Perhatikan bahwa saya tidak berbicara tentang di --assume-cleanmana Anda membangun kembali array dari set disk yang sudah ada sebelumnya yang berisi array RAID yang Anda tahu sudah benar. Saya berbicara tentang sebuah array yang harus dianggap kosong, tidak dianggap benar.

Jadi katakanlah demi pertanyaan ini bahwa perangkat telah diisi sebelumnya dengan nol.

Paul
sumber

Jawaban:

8

Anda dapat menggunakan --assume-cleantetapi kecuali jika Anda menggunakan raid5 (bukan raid6) dan disk sebenarnya penuh dengan nol, pertama kali menjalankan pemeriksaan paritas, itu akan muncul dengan kesalahan yang perlu diperbaiki, jadi Anda tidak boleh melakukan ini. Anda tidak perlu menunggu sinkronisasi selesai sebelum Anda dapat mulai menggunakan array; itu akan merambat di latar belakang sampai selesai.

psusi
sumber
Terima kasih psusi - ini tidak menjawab pertanyaan.
Paul
2
@ Paul, umm .. ya, benar. Tidak ada yang namanya "kosong" hanya ada dalam sinkronisasi, atau tidak dalam sinkronisasi.
psusi
Itu tidak menjawab pertanyaan yang saya ajukan. Xor dari blok nol adalah nol. Jadi jika saya bisa memberi tahu mdadm bahwa ruang itu bisa dianggap kosong, itu bisa menciptakan paritas dengan sangat cepat. Paritas hanya perlu dihitung dengan benar ketika blok tertentu ditulis, pada titik mana tidak masalah bahwa itu "salah" sebelumnya. Aku bahkan bisa membetulkan disk.
Paul
2
@ Paul, sekali lagi, tidak ada yang namanya "kosong". Secara umum ya, tidak akan menjadi masalah bahwa paritas pada garis-garis yang belum pernah ditulis salah, itulah sebabnya Anda bisa lolos --assume-clean, bahkan ketika disk tidak penuh dengan nol, tetapi paritas yang salah akan terdeteksi dan dikoreksi ketika mdadm melakukan pemeriksaan paritas.
psusi
2
@ Paul, arti "kosong" tidak didefinisikan dengan baik. Kebanyakan orang menggunakannya untuk berarti mereka belum meletakkan file atau sistem file pada perangkat, dan tidak tahu atau peduli apa yang ada di dalamnya. Jika Anda tahu semua disknya nol, maka --assume-clean adalah yang Anda inginkan. Anda akan mengambil kata-kata untuk itu bahwa semua disk adalah nol dan tidak menghitung ulang paritas, dan seperti yang Anda sebutkan, paritas nol akan benar untuk disk data semua nol, setidaknya untuk raid5 (bukan untuk raid6).
psusi
2

Anda tidak dapat melakukan ini dengan RAID perangkat lunak atau perangkat keras. Semua checksum harus ditulis pada disk, yang membutuhkan waktu. Anda dapat melakukannya nanti, tetapi kemudian bagian-bagian disk yang tidak ditulis, harus melakukannya sebelum Anda dapat menggunakannya.

Ini pada dasarnya karena sistem RAID dan sistem file tidak tahu apa-apa tentang satu sama lain. ZFS memiliki solusi untuk ini, tetapi ada bagian-bagian RAID yang terintegrasi dengan sistem file. Jadi subsistem RAID sebenarnya tahu bagian mana dari disk yang digunakan untuk menyimpan data dan yang dapat digunakan kemudian dan kemudian menulis jumlah cek kepada mereka.

Anda dapat menambahkan kecepatan throughput ke RAID perangkat lunak atau Anda mulai menggunakan RAID sebelum semua checksum ditulis, dan biarkan RAID perangkat lunak menangani ini untuk Anda nanti. Penyihir adalah apa yang ditulis @psusi.

Anders
sumber
Saya mengerti cara kerja RAID, saya mencoba memahami apa yang terjadi dengan checksum pada disk kosong. Checksum harus dihitung setiap kali ada sesuatu yang ditulis ke disk, jadi menghitungnya sebelum ada data tidak masuk akal - "melakukannya nanti" masuk akal bila tidak ada apa pun di sana. Tidak ada sistem file untuk dipertimbangkan dalam skenario ini.
Paul
6
Ada selalu menyajikan data. Mungkin tidak penting atau bermakna, tetapi setiap sektor selalu memiliki nilai. (Nol adalah nilai juga!) Implementasi RAID tidak tahu sektor mana yang berisi data penting, sehingga harus memperlakukan semuanya sebagai hal yang penting dan menghitung paritasnya.
Wyzard