Jak usunąć dysk z niestandardowej macierzy RAID 5 z 2 dyskami?

3

Dostępnych jest kilka informacji na temat zmian kształtu w macierzach RAID, ale jestem trochę zdenerwowany i chciałbym potwierdzić:

Problem: Mam dysk 2 500 GB jako oprogramowanie raid 5 (mdadm). Chciałbym uwolnić jeden z dwóch dysków, ponieważ nadmiarowość RAID jest przeznaczona dla wimps ... Czy mogę po prostu

mdadm --grow --array-size=1

a następnie

mdadm --grow --raid-disks 1?

To wydaje się zbyt proste. Jak określić, który dysk zostanie zwolniony? Jednym z powodów tego manewru jest to, że nie mam dodatkowej przestrzeni do uruchomienia kopii zapasowej.

Edycja: W tej chwili jest to implementacja RAID5 w innym standardzie (patrz komentarze Dave'a M lub gmana). Proszę jednak nie karcić mnie za lekkomyślność. Interesuje mnie po prostu najmniej ryzykowna metoda usuwania tego dysku. Załóżmy, że zająłem się problemem tworzenia kopii zapasowej, ale nie zamierzam jej używać do odbudowywania z kopii zapasowej.


$ 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

Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 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
źródło
2
RAID 5 wymaga dysków threee.
Dave M
RAID5 wymaga co najmniej 3 dysków, więc nie masz prawdziwego RAID5. Wsparcie zmieniające poziom jest w najlepszym wypadku ulotne, a jeśli jesteś w ogóle wrażliwy na utratę danych, sugeruję, aby tego nie robić; szczególnie biorąc pod uwagę niestandardowe wdrożenie. Ponadto, AFAIK nie można migrować z poziomu RAID opartego na parzystości na inny niż parzysty lub na dysk inny niż RAID.
Garrett
W rzeczywistości można wykonać RAID5 na 3 partycjach . mdadm niekoniecznie dba o to, czy masz trzy prawdziwe dyski, czy tylko trzy partycje. Zrobiłem RAID1 na jednym dysku. Nie sugeruję, że to dobry pomysł. Awaria pojedynczego napędu może oczywiście łączyć wiele partycji.
ChrisInEdmonton
DaveM i gman dzięki za korektę RAID5. Odpowiednia edycja.
DrSAR
Ponieważ nie ma dysku parzystości, tak naprawdę jest to po prostu RAID0, prawda?
Paul

Odpowiedzi:

4

W przypadku mdadm macierz RAID 5 z dwoma dyskami jest binarnie identyczna z macierzą RAID1, a nie RAID 0 i nie ma magicznego, niewidocznego urządzenia. Możesz powiedzieć, ponieważ tablica ma taki sam rozmiar jak każdy z dwóch składników, a nie ich suma:

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

Możesz to potwierdzić, wykonując:

 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 jest taki sam dla każdego, ponieważ dyski są redundantne. Ponieważ jest to to samo, co RAID, po jego zatrzymaniu możemy albo utworzyć RAID1 na tych samych urządzeniach i mieć te same dane:

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

Lub zrób RAID1 za pomocą tylko jednego urządzenia, uwalniając drugie:

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

Następnie wyczyść superblok na usuniętym:

mdadm /dev/sdc1 --zero-superblock

Ponieważ jest to superblok mdadm w wersji 0.90, każdy dysk powinien również nadawać się do samodzielnego użytku. Ponieważ 1.1 i 1.2 umieszczają metadane blisko początku na tablicy, nie będzie działać w tych wersjach.

Ray M.
źródło
Ray, proszę nie cofaj edycji ponownie. Naprawiłem twoje formatowanie.
Gaff,
1

Zdaję sobie sprawę, że na to pytanie udzielono odpowiedzi kilka lat temu, ale ostatnio rozwiązałem podobny problem i myślę, że mogę dodać trochę jasności zarówno do pytania, jak i odpowiedzi Raya M ...

Podobny dwudyskowy RAID5 z systemem Superblock w wersji 1.2 jest, jak powiedział Ray M, binarnie identyczny z RAID1. Jednak w przeciwieństwie do tych z v0.9, tablice z metadanymi 1.x mogą pozostawić lukę między początkiem urządzenia a początkiem danych tablicy. Aby więc zweryfikować równoważność dwóch urządzeń, najpierw określ przesunięcie danych dla każdego elementu:

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

Powinieneś zobaczyć taki wiersz dla każdego urządzenia (domyślnie taki sam dla obu):

Data Offset : 262144 sectors

Tutaj zaczynają się dane urządzenia. Zaczynając tutaj, skopiuj niektóre dane:

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

Sumy md5 powinny być równe:

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

Ponieważ dyski są w rzeczywistości lustrzanymi odbiciami, możesz albo zawieść i usunąć jeden dysk, pozostawiając tablicę zdegradowaną:

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

Lub zacznij od nowa z macierzą RAID1 na jednym dysku:

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

Zauważ, że pomimo dwuwymiarowego binarnego odpowiednika RAID5 do RAID1, nie możesz po prostu:

mdadm --grow --raid-devices 1

z dwudyskowym RAID5.

ryank
źródło