Solusi 1:
Raid 1, sebagai cermin, bergantung pada semua disk di cermin yang merupakan salinan persis 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 sebabnya mengapa inisialisasi diperlukan. Ini hanya menyalin konten dari drive pertama ke drive lain. Perhatikan bahwa dalam beberapa kondisi Anda dapat lolos dengan tidak menginisialisasi drive - biasanya perangkat baru dari pabrik sudah memiliki angka nol di semua tempat, jadi Anda dapat mengabaikannya. mdadm
opsi --assume-clean
melakukan ini, tetapi memperingatkan Anda:
--assume-clean
Beri tahu mdadm bahwa array sudah ada sebelumnya dan dikenal bersih. Ini bisa berguna saat mencoba memulihkan dari kegagalan besar karena Anda dapat yakin bahwa tidak ada data yang akan terpengaruh kecuali Anda benar-benar menulis ke array. Ini juga dapat digunakan saat membuat RAID1 atau RAID10 jika Anda ingin menghindari sinkronisasi ulang awal, namun praktik ini -- meskipun biasanya aman -- tidak disarankan. Gunakan ini hanya jika Anda benar-benar tahu apa yang Anda lakukan.
Jika Anda tidak melakukannya, ada perbedaan antara drive dan itu terbaca, 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 mdadm
Linux akan menginisialisasi array di latar belakang. Anda dapat dengan senang hati membuat FS di atasnya pada detik pertama. Performa akan menurun hingga inisialisasi selesai, tetapi itu saja.
Tapi:
a) Saat melakukan mkfs
beberapa utilitas memeriksa apakah sudah ada sesuatu di drive itu. Meskipun ini hanya menyentuh beberapa wilayah drive yang terkenal, ini membaca sebelum Anda menulis apa pun, sehingga membahayakan Anda.
b) Jika Anda melakukan sinkronisasi ulang secara berkala pada array Anda, perangkat RAID tidak mengetahui apa pun tentang FS Anda. Itu 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 tidak diinisialisasi dari perspektif FS selama bertahun-tahun.
Mengapa menyinkronkan ulang dengan perangkat RAID1?
Untuk alasan yang sama Anda melakukan sinkronisasi ulang dengan perangkat RAID5 atau level lainnya (kecuali RAID0). Ia membaca semua data dan membandingkan/memverifikasi checksum RAID (dalam RAID 5 atau 6). Jika sedikit dibalik dengan cara apa pun (karena memori HD terbalik secara spontan, karena ponsel Anda dan 5 tetangga Anda secara tidak sengaja mengganggu wilayah piring tertentu ini, apa pun) itu akan mendeteksi ketidakkonsistenan, tetapi tidak akan dapat tolong kamu. Jika, OTOH, salah satu hard drive hanya akan melaporkan "Saya tidak dapat membaca blok itu", yang lebih mungkin terjadi dengan drive yang gagal, Anda baru saja mendeteksi kegagalan lebih awal, dan mengurangi waktu Anda menjalankan dalam mode terdegradasi (dihitung dari kegagalan drive, bukan dari saat Anda menyadarinya). Raid tidak akan membantu Anda jika satu drive gagal dan sebulan kemudian drive lainnya gagal jika Anda tidak melihat kegagalan pertama di bulan tersebut.
RAID10
Sekarang, untuk RAID10 semua hal di atas berlaku. Lagipula RAID10 hanyalah cara cerdas untuk mengatakan 'Saya menempatkan dua perangkat RAID1 saya dalam pasangan RAID0'.
Peringatan:
Ini semua adalah perilaku yang tidak terdefinisi. Mengapa saya memeriksa di Linux, menggunakan mdadm
, implementasi RAID perangkat lunak lain mungkin berperilaku berbeda. Versi lain dari kernel Linux dan/atau mdadm
alat yang saya gunakan juga mungkin berperilaku berbeda.
Solusi 2:
Ingatlah bahwa RAID 1 adalah cermin, dan RAID 10 adalah garis cermin.
Pertanyaannya adalah, pada disk mana di setiap cermin datanya valid? Dalam larik yang baru dibuat, hal 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 di disk. Bahkan mungkin tidak ada sistem file yang digunakan.
Jadi, inisialisasi dalam larik ini terdiri dari data dari satu disk di setiap mirror yang disalin apa adanya ke disk lain.
Ini juga berarti bahwa larik aman untuk digunakan sejak saat pembuatan, dan dapat diinisialisasi di latar belakang; sebagian besar pengontrol RAID (dan mdraid Linux) memiliki opsi untuk ini, atau melakukannya secara otomatis.
Solusi 3:
Sinkronisasi awal diperlukan karena setiap perbedaan antara cermin akan muncul sebagai kesalahan selama pemeriksaan berkala.
Dan Anda harus melakukan pemeriksaan berkala.