Bagaimana cara menghapus drive dari array RAID 5 2-drive yang tidak standar?

2

Ada beberapa informasi tersedia tentang perubahan bentuk dalam array RAID tapi saya sedikit gugup dan ingin konfirmasi:

Masalah: Saya memiliki 2 500GB drive sebagai perangkat lunak raid 5 (mdadm). Saya ingin membebaskan salah satu dari dua drive karena RAID-redundansi adalah untuk para pengecut ... Bisakah saya

mdadm --grow --array-size=1

diikuti oleh a

mdadm --grow --raid-disks 1?

Ini sepertinya terlalu sederhana. Bagaimana saya menentukan drive mana yang dibebaskan? Sebagian alasan untuk manuver ini adalah karena saya tidak memiliki ruang tambahan untuk menjalankan cadangan.

Edit: Seperti ini, ini adalah implementasi RAID5 non-std (lihat komentar oleh Dave M atau gman). Namun, tolong jangan menghukum saya karena kecerobohan. Saya hanya tertarik pada metode paling berisiko melakukan penghapusan drive ini. Anggap saja saya telah mengatasi masalah cadangan tetapi saya tidak akan menggunakannya untuk membangun kembali dari cadangan.


$ sudo mdadm --detail --test /dev/md1 
/dev/md1:
        Version : 00.90
  Creation Time : Sat Sep  1 18:08:21 2007
     Raid Level : raid5
     Array Size : 488383936 (465.76 GiB 500.11 GB)
  Used Dev Size : 488383936 (465.76 GiB 500.11 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 1
    Persistence : Superblock is persistent

Update Time : Mon Nov 28 11:32:13 2011
      State : clean

Perangkat Aktif: 2 Perangkat yang Bekerja: 2  Perangkat Gagal: 0   Perangkat Cadangan: 0

     Layout : left-symmetric
 Chunk Size : 64K

       UUID : XXX (local to host XXX)
     Events : 0.29336

Number   Major   Minor   RaidDevice State
   0       8       33        0      active sync   /dev/sdc1
   1       8       17        1      active sync   /dev/sdb1

DrSAR
sumber
2
RAID 5 membutuhkan tiga drive.
Dave M
RAID5 membutuhkan minimal 3 drive, sehingga Anda tidak memiliki RAID5 yang benar. Dukungan perubahan level cepat, dan jika Anda sensitif terhadap kehilangan data, saya sarankan untuk tidak melakukannya; terutama mengingat implementasi non-standar Anda. Selanjutnya, AFAIK Anda tidak dapat bermigrasi dari tingkat RAID berbasis paritas ke yang non-paritas atau ke disk non-RAID.
Garrett
Sebenarnya, Anda dapat melakukan RAID5 lebih dari 3 partisi . mdadm tidak perlu peduli jika Anda memiliki tiga drive nyata, atau hanya tiga partisi. Saya telah melakukan RAID1 pada satu drive. Saya tidak menyarankan ini ide yang bagus, pikiran. Kegagalan drive tunggal jelas dapat selang beberapa partisi.
ChrisInEdmonton
DaveM dan gman terima kasih atas koreksi RAID5. Editing sesuai.
DrSAR
Karena tidak ada disk paritas, ini benar-benar hanya RAID0 kan?
Paul

Jawaban:

3

Dengan mdadm, 2 drive RAID 5 adalah biner yang identik dengan RAID1, bukan RAID 0, dan tidak ada perangkat ajaib yang tak terlihat. Anda bisa tahu karena arraynya sama ukuran masing-masing dari dua komponen, bukan jumlah mereka:

Array Size : 488383936 (465.76 GiB 500.11 GB)
Used Dev Size : 488383936 (465.76 GiB 500.11 GB)

Anda dapat mengonfirmasi bahwa dengan melakukan:

 dd if=/dev/sdb1 bs=512 count=1024 of=/tmp/b1
 dd if=/dev/sdc1 bs=512 count=1024 of=/tmp/c1

 md5sum /tmp/b1
 md5sum /tmp/c1

MD5 adalah sama untuk masing-masing karena drive yang berlebihan. Karena ini sama dengan RAID, setelah menghentikannya kita dapat membuat RAID1 pada perangkat yang sama dan memiliki data yang sama:

mdadm -C /dev/md1  --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

Atau lakukan RAID1 hanya dengan satu perangkat, membebaskan yang lain:

mdadm -C /dev/md1  --level=1 --raid-devices=1 --force /dev/sdb1

Kemudian kosongkan superblok yang dihapus:

mdadm /dev/sdc1 --zero-superblock

Karena ini adalah versi super block mdadm 0.90, setiap drive juga dapat digunakan sendiri. Karena 1.1 dan 1.2 meletakkan data meta di dekat awal pada array, itu tidak akan berfungsi untuk versi tersebut.

Ray M
sumber
Ray, tolong jangan putar kembali hasil edit. Saya memperbaiki format Anda.
3498DB
1

Saya menyadari pertanyaan ini dijawab beberapa tahun yang lalu, tetapi saya baru saja menyelesaikan masalah yang sama, dan saya pikir saya dapat menambahkan beberapa kejelasan untuk kedua pertanyaan dan jawaban Ray M ...

RAID5 dua drive serupa yang menjalankan superblock versi 1.2 adalah, seperti kata Ray M, biner yang identik dengan RAID1. Namun, tidak seperti yang dengan v0.9, array dengan metadata 1.x dapat meninggalkan jarak antara awal perangkat dan awal data array. Jadi, untuk memverifikasi kesetaraan kedua perangkat, pertama-tama tentukan data-offset masing-masing komponen:

mdadm --examine /dev/sdb1
mdadm --examine /dev/sdc1

Anda akan melihat garis seperti ini untuk setiap perangkat (secara default sama untuk keduanya):

Data Offset : 262144 sectors

Di sinilah data perangkat dimulai. Mulai di sini, salin beberapa data:

dd if=/dev/sdb1 skip=262144 bs=512 count=1024 of=/tmp/b1
dd if=/dev/sdc1 skip=262144 bs=512 count=1024 of=/tmp/c1

Jumlah md5 harus sama:

$ md5sum /tmp/b1 /tmp/c1
6b327bb46f25587806d11d50f95ff29b  /tmp/b1
6b327bb46f25587806d11d50f95ff29b  /tmp/c1

Karena drive sebenarnya merupakan cermin dari satu sama lain, Anda dapat gagal dan menghapus satu drive, sehingga array menurun:

mdadm /dev/md1 --fail /dev/sdc1 --remove /dev/sdc1
mdadm --zero-superblock /dev/sdc1

Atau mulai baru dengan RAID1 disk tunggal:

mdadm --stop /dev/md1
mdadm --create /dev/md1 --level 1 --raid-devices 1 --force /dev/sdb1
mdadm --zero-superblock /dev/sdc1

Perhatikan bahwa meskipun kesetaraan biner RAID5 dua disk dengan RAID1, Anda tidak bisa hanya:

mdadm --grow --raid-devices 1

dengan RAID5 dua drive.

ryank
sumber