mdadm - Hapus disk dari RAID0

11

Jadi, saya ingin tahu, adalah mungkin untuk melakukan hal berikut dengan mdadm:

  1. Saya mulai dengan konfigurasi RAID0 pada 2 disk: sda dan sdb.
  2. Saya ingin menambahkan satu disk lagi ke array, sdc dan memindahkan semua data dari sdbsana.
  3. Memutuskan sdb .

Saat ini saya hanya melihat satu opsi - saya menghentikan array, salin sdbkesdc dengan ddatau alat blok-copy lain dan mulai array kembali.

Apakah saya melewatkan sesuatu? Apakah mungkin melakukan ini dengan mdadm?

maniaque
sumber
Anda dapat membuat sdb ke cermin sementara, dan kemudian menyinkronkan sdc ke cermin di latar belakang - ini mengurangi waktu henti yang diperlukan, meskipun saya tidak melakukan ini sebagai pemula di tempat Anda.
peterh
Saya bukan pemula pasti :) Bisakah Anda ceritakan lebih banyak tentang cermin sementara? Apakah ini fitur mdadm?
maniaque
Tidak, ini adalah fitur serangan sederhana. Saya pikir array raid1 sementara, yang bisa mendapatkan tempat sdb di array raid1 Anda. Saat Anda menyinkronkan sdb ke sdc, Anda juga bisa menggunakannya sebagai bagian dari array raid0 Anda.
peterh
Jadi, apakah saya mengerti Anda? 1. Stop array. 2. Buat satu lagi array RAID1 dengan sbd dan sdc. 3. Dan bagaimana saya bisa bertanya mdadm jadi mulai RAID0 saya dengan md1 bukan sdb?
maniaque
Belum banyak meneliti, tetapi sepertinya Anda harus dapat tumbuh dari RAID0 -> RAID5. Kemudian menyusut kembali ke RAID0.
Zoredache

Jawaban:

17

Pertama-tama: bagi mereka yang masih percaya pada "RAID0 tidak memiliki cadangan panas". Itu bisa memiliki cadangan manual, dilakukan oleh manusia, yang memahami level RAID dan mdadm. mdadm adalah perangkat lunak RAID, sehingga bisa melakukan banyak hal menarik.

Kredit untuk Zoredache untuk gagasan itu!

Jadi situasinya:

  • Anda memiliki array RAID0 dua disk
  • Anda ingin mengganti salah satunya tanpa downtime array

Jika downtime dapat diterima, Anda selalu dapat membuat salinan dari disk dengan dd dan memasang kembali array, mdadm akan melakukan OK.

Solusi: gunakan RAID4 sebagai solusi perantara

RAID0 -> RAID4 -> RAID0

Jadi, jika Anda tidak ingat RAID4, itu sederhana. Ini memiliki blok paritas, tetapi tidak seperti RAID5 tidak didistribusikan melintasi array, tetapi berada pada SATU disk. Itulah intinya, ini penting dan ini adalah alasan RAID5 tidak akan berfungsi.

Yang Anda perlukan: dua disk lagi dengan ukuran yang sama, seperti disk yang ingin Anda ganti.

Lingkungan Hidup:

  • Ubuntu 14.04 Thusty Thar
  • mdadm - v3.2.5 - 18 Mei 2012
  • / dev / sdb - mulai dengan itu, akan menggantinya
  • / dev / sdc - mulai dengan itu
  • / dev / sdd - akan digunakan sementara
  • / dev / sde - akan digunakan sebagai ganti sdb

Panduan mdadm hot-spare RAID0 terbaik;)

sudo mdadm -C /dev/md0 -l 0 -n 2 /dev/sd[bc]

md0 : active raid0 sdc[1] sdb[0]
      2096128 blocks super 1.2 512k chunks

Kami telah membuat array raid0, itu terlihat manis.

sudo md5sum /dev/md0

b422ba644a3c83cdf28adfa94cb658f3  /dev/md0

Ini adalah titik pemeriksaan kami - jika bahkan satu bit akan berbeda dalam hasil /dev/md0- kami telah gagal.

sudo mdadm /dev/md0 --grow --level=4

md0 : active raid4 sdc[1] sdb[0]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

Jadi, kami telah mengembangkan array kami menjadi RAID4. Kami belum menambahkan paritas disk, jadi mari kita lakukan. Tumbuh akan instan - tidak ada yang bisa menghitung ulang atau menghitung ulang.

sudo mdadm /dev/md0 -a /dev/sdd

md0 : active raid4 sdd[3] sdc[1] sdb[0]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
      [===>.................]  recovery = 19.7% (207784/1048064) finish=0.2min speed=51946K/sec

Kami telah menambahkan sddsebagai disk paritas. Ini penting untuk diingat - urutan disk di baris pertama tidak disinkronkan dengan gambar di baris kedua! [UU_]

sdd ditampilkan terlebih dahulu, tetapi sebenarnya itu yang terakhir, dan tidak memegang data, tetapi paritas.

sudo mdadm /dev/md0 -f /dev/sdb

md0 : active raid4 sdd[3] sdc[1] sdb[0](F)
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]

Kami telah membuat disk sdb kami salah, untuk menghapusnya di langkah berikutnya.

sudo mdadm --detail /dev/md0

State : clean, degraded

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       32        1      active sync   /dev/sdc
       3       8       48        2      active sync   /dev/sdd

       0       8       16        -      faulty spare   /dev/sdb

Detail menunjukkan kepada kita penghapusan disk pertama dan di sini kita dapat melihat urutan sebenarnya dari disk dalam array. Sangat penting untuk melacak disk dengan paritas, kita tidak harus membiarkannya dalam array ketika kembali ke RAID0.

sudo mdadm /dev/md0 -r /dev/sdb

md0 : active raid4 sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]

sdb sepenuhnya dihapus, bisa diambil.

sudo mdadm /dev/md0 -a /dev/sde

md0 : active raid4 sde[4] sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
      [==>..................]  recovery = 14.8% (156648/1048064) finish=0.2min speed=52216K/sec

Kami telah menambahkan pengganti disk sdb kami. Dan di sini kita mulai: sekarang data sdb sedang dipulihkan menggunakan paritas. Sweeeeet.

md0 : active raid4 sde[4] sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/3] [UUU]

Selesai Saat ini kami benar-benar aman - semua data dari sdb dipulihkan, dan sekarang kami harus menghapus sdd (ingat, ini memiliki paritas).

sudo mdadm /dev/md0 -f /dev/sdd

md0 : active raid4 sde[4] sdd[3](F) sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

Membuat sdd salah.

sudo mdadm /dev/md0 -r /dev/sdd

md0 : active raid4 sde[4] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

Dihapus sdd dari array kami. Kami siap menjadi RAID0 lagi.

sudo mdadm /dev/md0 --grow --level=0 --backup-file=backup

md0 : active raid4 sde[4] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
      [=>...................]  reshape =  7.0% (73728/1048064) finish=1.5min speed=10532K/sec

Aaaaaaand bang!

md0 : active raid0 sde[4] sdc[1]
      2096128 blocks super 1.2 512k chunks

Selesai Mari kita lihat checksum MD5.

sudo md5sum /dev/md0

b422ba644a3c83cdf28adfa94cb658f3  /dev/md0

Ada pertanyaan lagi? Jadi RAID0 bisa memiliki cadangan panas. Ini disebut "pengguna";)

maniaque
sumber
1

Sejauh yang saya tahu setelah Anda mengatur RAID0 Anda tidak dapat mengubah salah satu disk. Anda dapat mengambil cadangan dan mengganti disk dan mengembalikan cadangan. Saya hanya akan RAID5 3 disk yang Anda miliki. Dengan begitu di masa depan Anda dapat menjatuhkan disk dan masih membangunnya kembali.

joeg1ff
sumber
Yah, saya tahu bagaimana melakukan hal yang saya bicarakan dengan RAID5 - Saya dapat menambahkan disk baru ke array (sebagai cadangan), kemudian tandai disk yang saya ingin pindah sebagai salah dan menghapusnya dari array, menghapus superblock sesudahnya. Tapi saya tertarik pada operasi yang sama dengan RAID0 :)
maniaque
@maniaque Ini disebut RAID 0 karena nol adalah berapa banyak RAID yang Anda dapatkan. Sama sekali tidak ada yang penting harus ditempatkan pada RAID 0.
Michael Hampton
@ Michael Hampton Saya pikir maksud Anda redundansi bukan RAID tetapi pernyataan Anda 100% benar.
joeg1ff
@MichaelHampton Silakan lihat jawaban saya di bawah ini :)
maniaque
0

RAID 0 tidak menyediakan redundansi.

Jadi tidak mendukung penggantian hot drive.

pengguna2743554
sumber
1
Lihat saja di bawah ini. Tidak ada yang mustahil, ketika Anda memahami level RAID;)
maniaque