Saat membuat perangkat raid perangkat lunak linux sebagai perangkat raid10, saya bingung mengapa harus diinisialisasi. Pertanyaan yang sama berlaku untuk raid1 atau raid0, sungguh.
Pada akhirnya kebanyakan orang akan meletakkan sistem file semacam itu di atasnya, dan sistem file itu tidak boleh mengasumsikan keadaan apa pun dari data disk. Setiap penulisan akan mempengaruhi kedua disk dalam pengaturan raid10 atau raid1, di mana N mirror ditulis. Seharusnya tidak ada alasan apa pun untuk razia10 yang diinisialisasi pada awalnya, karena akan terjadi seiring waktu.
Saya bisa mengerti mengapa untuk setup raid5 / 6 di mana ada persyaratan paritas, tetapi meskipun begitu sepertinya ini bisa dilakukan dengan malas.
Apakah hanya supaya orang merasa lebih baik tentang hal itu?
sumber
Jawaban:
Sinkronisasi awal diperlukan karena setiap perbedaan antara mirror akan muncul sebagai kesalahan selama pemeriksaan berkala.
Dan Anda harus melakukan pemeriksaan berkala.
sumber
Raid 1, menjadi cermin, tergantung pada semua disk di cermin yang merupakan salinan satu sama lain. Ambil hard drive acak Anda, dan hard drive acak lainnya, dan Anda mungkin memiliki data berbeda di sana, sehingga melanggar anggapan ini. Inilah mengapa diperlukan inisialisasi. Itu hanya menyalin isi dari drive pertama ke orang lain. Perhatikan bahwa dalam beberapa kondisi Anda bisa lolos dengan tidak menginisialisasi drive - biasanya perangkat pabrik-baru sudah memiliki nol di semua tempat, sehingga Anda bisa mengabaikannya. The
mdadm
opsi--assume-clean
melakukan ini, tetapi memperingatkan Anda:Jika Anda tidak melakukannya, ada perbedaan antara drive dan itu dibaca, tidak ada yang tahu apa yang akan dibaca drive. Anda seharusnya cukup aman dengan sistem file (tetapi perhatikan di bawah), karena kemungkinan besar Anda akan menulis sebelum membaca apa pun dari perangkat itu, dan kemudian Anda jelas.
Perhatikan bahwa setidaknya Linux
mdadm
akan menginisialisasi array di latar belakang. Anda dapat dengan senang hati membuat FS di atasnya detik pertama. Performa akan menurun sampai inisialisasi selesai, tetapi hanya itu yang terjadi.Tapi:
a) Saat melakukan
mkfs
beberapa utilitas, periksa apakah sudah ada sesuatu di drive itu. Meskipun ini hanya menyentuh beberapa wilayah drive yang terkenal, ia membaca sebelum Anda menulis apa pun, sehingga membahayakan Anda.b) Jika Anda melakukan sinkronisasi ulang berkala array Anda, perangkat RAID tidak tahu apa-apa tentang FS Anda. Ini hanya membaca setiap blok dari setiap perangkat dan membandingkannya. Dan jika Anda tidak menggunakan FS copy-on-write (mis. ZFS atau BTRFS) dan tidak pernah mengisi FS Anda, sangat masuk akal jika sebuah blok tetap diinisialisasi dari perspektif FS selama bertahun-tahun.
Mengapa melakukan penyinkronan ulang dengan perangkat RAID1?
Untuk alasan yang sama Anda melakukan sinkronisasi ulang dengan perangkat RAID5 atau tingkat lainnya (kecuali RAID0). Itu membaca semua data dan membandingkan / memverifikasi checksum RAID (dalam RAID 5 atau 6). Jika sedikit dibalik dengan cara apa pun (karena memori HD mendapat flip spontan, karena ponsel Anda dan tetangga Anda hanya secara tidak sengaja mengganggu wilayah platter ini, apa pun) itu akan mendeteksi ketidakkonsistenan, tetapi tidak akan dapat tolong kamu. Jika, OTOH, salah satu hard drive hanya akan melaporkan "Saya tidak bisa membaca blok itu", yang lebih mungkin dengan drive yang gagal, Anda baru saja mendeteksi kegagalan lebih awal, dan mengurangi waktu Anda berjalan dalam mode terdegradasi (dihitung dari kegagalan drive, bukan dari saat Anda melihatnya). Raid tidak akan membantu Anda jika satu drive gagal dan sebulan kemudian yang lain gagal jika Anda tidak
RAID10
Sekarang, untuk RAID10 semua hal di atas berlaku. Bagaimanapun, RAID10 hanyalah cara cerdik untuk mengatakan 'Saya menempatkan dua perangkat RAID1 saya pada pasangan RAID0'.
Peringatan:
Ini semua perilaku yang tidak terdefinisi. Mengapa saya memeriksa di Linux, menggunakan
mdadm
, implementasi RAID perangkat lunak lain mungkin berperilaku berbeda. Versi lain dari kernel dan / ataumdadm
alat Linux selain yang saya gunakan juga mungkin berperilaku berbeda.sumber
If you don't do it, there is a discrepancy between the drives and it's read, the RAID device will report failure of a drive
. Saya percaya pernyataan itu salah. Setidaknya berikan contoh pesan kesalahan sedemikian sehingga memungkinkan untuk berkonsultasi dengan sumber untuk memverifikasi dalam keadaan apa ia diproduksi.While this only touches a few well-known regions of drive, it reads before you write anything, thus putting you in danger.
Dalam bahaya apa? Saya menyadari bahwa pembacaan dapat mengakibatkan apa saja, tetapi mengapa hal itu menimbulkan bahaya bagi pengguna jika (a) informasi yang dibaca tidak digunakan di mana pun dan (b) penulisan akan segera terjadi?urandom
perangkat-diinisialisasi, dengan linux mdadm menunjukkan bahwa 80k pertama tetap berbeda, serta 48k terakhir. Yang terakhir mungkin karena pembulatan ukuran RAID ke ukuran blok. Saya belum menguji dengan ukuran perangkat yang berbeda, tetapi 80 + 48 persis perbedaan ukuran antara perangkat RAID dan perangkat blok yang mendasarinya.Ingat bahwa RAID 1 adalah mirror, dan RAID 10 adalah strip mirror.
Pertanyaannya adalah, pada disk mana di setiap mirror data tersebut valid? Dalam array yang baru dibuat, ini tidak dapat diketahui, karena disk mungkin memiliki data yang berbeda.
Ingat juga bahwa RAID beroperasi pada level yang sangat rendah; ia tidak tahu apa-apa tentang sistem file atau data apa pun yang mungkin disimpan pada disk. Bahkan mungkin tidak ada sistem file yang digunakan.
Jadi, inisialisasi dalam array ini terdiri dari data dari satu disk di setiap mirror yang disalin sebagaimana adanya ke disk lain.
Ini juga berarti bahwa array aman untuk digunakan sejak saat pembuatan, dan dapat diinisialisasi di latar belakang; sebagian besar pengontrol RAID (dan Linux mdraid) memiliki opsi untuk ini, atau melakukannya secara otomatis.
sumber
Sederhananya karena dua disk baru tidak diharapkan menjadi salinan sempurna mirror dari satu sama lain sejak awal.
Mereka harus diubah menjadi salinan sempurna satu sama lain.
Selain itu, inisialisasi termasuk mengatur superblok metadata dengan informasi tentang konfigurasi array juga.
File / proc / mdstat harus memberi tahu Anda bahwa perangkat telah dimulai, bahwa cermin sedang direkonstruksi, dan ETA penyelesaian rekonstruksi. Rekonstruksi dilakukan menggunakan bandwidth I / O idle. Jadi, sistem Anda harus tetap responsif, meskipun LED disk Anda juga akan menunjukkan banyak aktivitas.
Proses rekonstruksi transparan, sehingga Anda benar-benar dapat menggunakan perangkat meskipun cermin sedang dalam proses rekonstruksi.
sumber