Zmniejszyć RAID poprzez usunięcie dysku?

14

Mam serwer Synology NAS z 12 kieszeniami. Początkowo postanowiliśmy przydzielić wszystkie 12 dysków dla jednego woluminu RAID-6, ale teraz chcielibyśmy zmniejszyć wolumin, aby używać tylko 10 dysków i przypisać dwa dyski twarde jako części zamienne.

Volume Kreator menedżera można łatwo rozszerzyć objętości dodając dyski twarde, ale nie znalazły drogę do kurczenia głośność usuwania dysków twardych . Jak mogę to zrobić bez konieczności ponownej inicjalizacji całego systemu?

Pierre Arnaud
źródło
Jaki jest tu cel? Obecnie dwa dyski są używane jako parzystość, więc tablica może tolerować dwa awarie. Jeśli chcesz mieć dwie części, równie dobrze możesz zostawić je w pobliżu i mieć taką samą tolerancję, ale z większą ilością miejsca na dysku.
Paul
Jasne, ale muszę iść do biura, wysunąć dysk i włożyć dysk zastępczy. Posiadanie zapasowego pozwala to zrobić zdalnie.
Pierre Arnaud
Czy Twoja Synology ma wbudowany MDADM, jeśli ssh do niego?
Paul
Tak, mam dostęp do narzędzia mdadm.
Pierre Arnaud

Odpowiedzi:

20

W tym celu zakładam, że w macierzy jest 12 dysków, a każdy z nich ma pojemność 1 TB.

Oznacza to, że jest 10 TB pamięci. Dzieje się tak na przykład pod warunkiem, że nie używasz więcej niż 6 dysków (6 TB), więc nie ma znaczenia, jaki mają rozmiar.

Oświadczenie o zrzeczeniu się odpowiedzialności: Nic z tego nie może być obsługiwane przez Synology, więc sprawdziłbym je, czy takie podejście może powodować problemy, wykonać kopię zapasową wcześniej i zamknąć wcześniej wszelkie usługi Synology. Synology używa standardowych tablic RAID o ile wiem i są one dostępne, jeśli dysk zostanie przeniesiony na standardowy serwer, który obsługuje MD - więc nie powinno być problemów.

Przegląd

Sekwencja wygląda następująco:

  1. Zmniejsz rozmiar systemu plików
  2. Zmniejsz rozmiar woluminu logicznego
  3. Zmniejsz rozmiar tablicy
  4. Zmień rozmiar systemu plików z powrotem
  5. Zamień dyski zapasowe w gorące części zamienne

System plików

Znajdź główną partycję, używając df -h, powinna wyglądać mniej więcej tak:

Filesystem                Size      Used Available Use% Mounted on
/dev/vg1/volume_1         10T       5T   5T         50% /volume1

Użyj tego polecenia, aby zmienić rozmiar do maksimum, którego potrzebuje i nie więcej:

umount /dev/vg1/volume_1
resize2fs -M /dev/vg1/volume_1

Teraz sprawdź:

mount /dev/vg1/volume_1 /volume1
df -h

Filesystem                Size      Used Available Use% Mounted on
/dev/vg1/volume_1         5T       5T    0T        100% /volume1

Tom

Aby zmniejszyć rozmiar woluminu, użyj lvreduce (na wszelki wypadek zwiększ go nieco):

umount /dev/vg1/volume_1
lvreduce -L 5.2T /dev/vg1/volume_1

Teraz, gdy wolumin logiczny został zmniejszony, użyj pvresize, aby zmniejszyć rozmiar woluminu fizycznego:

pvresize --setphysicalvolumesize 5.3T /dev/md0

Jeśli zmiana rozmiaru nie powiedzie się, zobacz to drugie pytanie dotyczące przenoszenia części danych, które zostały przydzielone na końcu woluminu fizycznego na początek.

Teraz mamy wolumin 5,3T w macierzy 10T, więc możemy bezpiecznie zmniejszyć rozmiar macierzy o 2T.

Szyk

Znajdź urządzenie MD:

 pvdisplay -C
 PV         VG      Fmt  Attr PSize   PFree
 /dev/md0   vg1     lvm2 a--  5.3t    0.1t

Pierwszym krokiem jest poinformowanie mdadm o zmniejszeniu rozmiaru tablicy (wraz z grow):

mdadm --grow -n10 /dev/md0
mdadm: this change will reduce the size of the array.
       use --grow --array-size first to truncate array.
       e.g. mdadm --grow /dev/md0 --array-size 9683819520

To znaczy, że aby zmieścić bieżącą macierz na 10 dyskach, musimy zmniejszyć rozmiar macierzy.

 mdadm --grow /dev/md0 --array-size 9683819520

Teraz jest mniejszy, możemy zmniejszyć liczbę dysków:

 mdadm --grow -n10 /dev/md0 --backup-file /root/mdadm.md0.backup

Zajmie to trochę czasu i można to tutaj monitorować:

 cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]
md4 : active raid6 sda4[0] sdb4[1] sdc4[2] sdd4[3] sde4[4] sdf4[5] sdg4[6] sdh4[7] sdi4[1] sdj4[1] 
      [>....................]  reshape =  1.8% (9186496/484190976)
                              finish=821.3min speed=9638K/sec [UUUUUUUUUU__]

Ale nie musimy czekać.

Zmień rozmiar PV, LV i systemu plików do maksimum:

pvresize /dev/md0
lvextend -l 100%FREE /dev/vg1/volume_1
e2fsck -f /dev/vg1/volume_1
resize2fs /dev/vg1/volume_1

Ustaw zapasowe dyski jako części zamienne

Nie ma tu nic do zrobienia, wszelkie wolne dyski w macierzy są automatycznie wymieniane. Po zakończeniu przekształcania sprawdź status:

cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]
md4 : active raid6 sda4[0] sdb4[1] sdc4[2] sdd4[3] sde4[4] sdf4[5] sdg4[6] sdh4[7] sdi4[S] sdj4[S] 
Paweł
źródło
Wielkie dzięki za te szczegółowe instrukcje. Najpierw poczekam, aż moja macierz RAID zakończy odbudowę po wymianie dysku twardego (całkowita pojemność: 17,86 TB, zajmuje to trochę czasu).
Pierre Arnaud
Zobacz także ściągawki mdadm ( ducea.com/2009/03/08/mdadm-cheat-sheet ).
Pierre Arnaud,
@Paul - superuser.com/questions/1274328/… oflaguj ten komentarz do usunięcia po ustaleniu, czy możesz pomóc użytkownikowi
Ramhound
Strzec się! Myślę, że ta odpowiedź może prowadzić do utraty danych, ponieważ jest: nie ma kontroli, czy lvm lv rzeczywiście jest na początku pv! (co nie jest gwarantowane przy lvm). Zobacz unix.stackexchange.com/questions/67702/… (i unix.stackexchange.com/questions/67702/... w przypadku błędu), aby dowiedzieć się, jak zapewnić, że koniec PV może zostać zmniejszony.
Ekleog
@Ekleog Dzięki, ten komentarz byłby lepiej umieszczony jako część odpowiedzi na wypadek pominięcia
Paul