Konwertuj raid na oprogramowanie Linux z raid5 na raid6

11

Obecnie mam serwer plików z 3 dyskami 1,5 TB w macierzy RAID5. Ponieważ jest prawie pełny, mam trzy dodatkowe dyski (również 1,5 TB każdy).

Teraz chciałbym przejść na RAID6, ponieważ przestrzeń 6 TB jest wystarczająca i chciałbym mieć większe bezpieczeństwo raid6. Chociaż mam pełną kopię zapasową - tzn. Mógłbym po prostu utworzyć nową macierz i przywrócić kopię zapasową - wolałbym przełączyć się bez konieczności przywracania kopii zapasowej. Czy to możliwe, a jeśli tak, to w jaki sposób?

ThiefMaster
źródło

Odpowiedzi:

9

Szukana terminologia to „migracja na poziomie RAID”.

Zgodnie z tym jest to możliwe. Nie zrobiłem tego, ale procedura wygląda na to, że powinieneś dodać nowy dysk jako hotspare do istniejącej macierzy, a następnie użyć mdadm, aby zaktualizować poziom RAID i liczbę urządzeń RAID.

Aby to zrobić, potrzebujesz najnowszego mdadm: mdadm-2.6.9 (np. Centos 5.x) nie obsługuje go, ale mdadm-3.1.4 (np. Ubuntu 11.10):

   Grow   Grow (or shrink) an array, or otherwise reshape it in some way.  Currently supported growth options including changing the active size of component devices and
          changing the number of active devices in RAID levels 1/4/5/6, changing the RAID level between 1, 5, and 6, changing the chunk size and  layout  for  RAID5  and
          RAID5, as well as adding or removing a write-intent bitmap.

EG, najpierw dodaj nowe urządzenie hotspare / dev / sdg do macierzy RAID5:

$ sudo mdadm --manage /dev/md/md0 --add /dev/sdg

Następnie przekonwertuj na macierz RAID6 i przywróć do stanu czystego. --Raid-devices 4 mówi ci, ile w sumie macie dysków w nowej macierzy.

$ sudo mdadm --grow /dev/md/md0 --raid-devices 4 --level 6

Nie mam pojęcia, jak szybko to nastąpi. Z mojego doświadczenia w przeprowadzaniu migracji na poziomie RAID na sprzętowych kontrolerach RAID, szybsze było tworzenie nowej macierzy od zera i odzyskiwanie do niej kopii zapasowej.

Daniel Lawson
źródło
3
Migracja RAID 5 do RAID 6 ma dwie wolne operacje - ponowne rozłożenie danych na dyskach i obliczenie drugiej wartości parzystości dla dodatkowego dysku parzystości. Czyszczenie / przywracanie zajmie prawdopodobnie tyle samo czasu, co zmiana rozmiaru.
Andrew
1
Wymaga także pewnej wersji jądra. Odkryłem to na własnej skórze.
Sirex,
Ponieważ jestem na Gentoo, zarówno moje jądro, jak i mdadm to całkiem nowe wersje - więc nie powinno to stanowić problemu.
ThiefMaster,
1
Link, do którego się odwołujesz, został napisany przeze mnie. Uwaga: tak naprawdę nie czytałem dokumentów na temat tego, jak to zrobić. Właśnie stworzyłem maszynę wirtualną z 30 dyskami (coś takiego) i zacząłem bawić się. Więc weź cały post z odrobiną soli, to tylko braindump ...
Martin M.
1
@ServerHorror: Zauważono. Szerszy internet, w tym strona podręcznika mdadm, twierdzi, że migracja na poziomie rajdu jest jednak możliwa. :)
Daniel Lawson
7

Ostrzeżenie obowiązkowe: Zaplanuj awarię. Przygotuj kopię zapasową i weź pod uwagę ewentualne przestoje.

Przetestuj to również na maszynie wirtualnej lub coś podobnego wcześniej, to z moich notatek i nie robiłem tego od dawna. To może być niekompletne.

  1. Będziesz potrzebował adddysków do tablicy:

    mdadm --manage /dev/md0 --add /dev/sdf  
    

    Zrób to dla każdego z trzech dysków i zamień odpowiednio nazwy urządzeń.

  2. Rozwiń tablicę:

    mdadm --grow /dev/md0 --level 6 --raid-devices 6 
    
Sven
źródło
3

Skorzystaj z tej --backup-fileopcji, więc w przypadku utraty zasilania możesz kontynuować rozbudowę urządzenia po ponownym uruchomieniu i zapewnić brak utraty danych.

mdadm --grow /dev/md0 --level=raid6 --raid-devices=6 --backup-file=/root/mdadm5-6_backup_md0

Plik kopii zapasowej powinien zostać zapisany w systemie plików nie będącym częścią tablicy, którą zamierzasz rozbudować.

--backup-file=jest potrzebny, gdy --growjest używany do zwiększenia liczby urządzeń rajdowych w macierzy RAID5 lub RAID6, jeśli nie ma dostępnych urządzeń zapasowych, lub w celu zmniejszenia, zmiany poziomu lub układu RAID. Zobacz sekcję TRYB GROW poniżej na ZMIANY URZĄDZEŃ RAID. Plik musi być przechowywany na oddzielnym urządzeniu, a nie w przekształcanej macierzy RAID.

--continueuzupełnia --freeze-reshapeopcję montażu. Jest potrzebny, gdy --growoperacja jest przerwana i nie jest restartowana automatycznie z powodu --freeze-reshapeużycia podczas montażu tablicy. Ta opcja jest używana razem z poleceniem -G( --grow) i urządzeniem, aby można było kontynuować oczekujące przekształcenie. Wszystkie parametry wymagane do kontynuacji przekształcenia zostaną odczytane z metadanych tablicowych. Jeśli --growpolecenie początkowe wymagało ustawienia --backup-file=opcji, opcja kontynuacji będzie wymagać podania dokładnie tego samego pliku kopii zapasowej.

Każdy inny parametr przekazany razem z --continueopcją zostanie zignorowany.

Guggi
źródło