Obiecana w ramach pierwszej części informacja o postępowaniu, gdy chcemy dołożyć jeden nowy dysk i zestawić go w macierz z istniejącym. A także uwaga o postępowaniu, gdy przed zakładaniem macierzy mamy już LVM.
Dodawanie drugiego dysku zestawianego w macierz z istniejącym
Mamy jakiś, pojedynczy dysk. Kupujemy drugi taki sam (lub trochę większy) i chcemy zrobić macierz (mirror).
Jedną z możliwości jest od razu zestawić mirror z użyciem aktualnego dysku jako mastera. Ponieważ napotkałem kilka opinii, w myśl których jest to ryzykowne, nie drążyłem.
Metoda bezpieczna, choć wolniejsza, jest następująca:
-
Zakładamy zdegenerowaną macierz, składającą się na razie tylko z jednego dysku. Robimy to, podając
missing
zamiast nazwy partycji, na przykład:$ mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 missing
-
Taka macierz jest w pełni używalna (choć oczywiście replikacji danych nie mamy), dla oprogramowania RAID jest równoważna sytuacji, w której w istniejącej pełnej macierzy jeden z dysków się zepsuł.
-
Dokonujemy pełnego przeniesienia danych z dotychczasowego dysku na macierz - w dowolny sposób, np. tak, jak to robiliśmy poprzednio
-
Rekonfigurujemy system do startu z macierzy, uruchamiamy w ten sposób.
-
Repartycjonujemy oryginalny dysk zgodnie z układem partycji dla macierzy (czyli - kasujemy zeń wszystkie dane). Powstałe tu partycje muszą być identyczne lub odrobinę większe niż te zrobione na nowym dysku.
-
Dodajemy orignalny dysk jako drugi dysk do macierzy:
$ mdadm /dev/md0 --add /dev/sda1
W tym etapie nastąpi synchronizacja danych, po jej zakończeniu macierz jest w pełni funkcjonalna.
Uwaga, nie testowałem tej techniki, nie była mi potrzebna.
Przenoszenie danych, gdy już używaliśmy LVM
Jeśli przed zakładaniem macierzy używaliśmy już LVM, całe kłopotliwe kopiowanie danych nie jest potrzebne. Prawidłowa procedura jest wówczas następująca:
-
Tworzymy macierz (czy to na nowych dyskach, czy to zdegradowaną) - jak to już opisywałem. w pierwszej części i powyżej.
-
Tworzymy na macierzy fizyczny wolumen LVM, np.
$ pvcreate /dev/md1
-
Dodajemy macierz do istniejącej grupy LVM, np.
$ vgextend vgmk /dev/md1
-
Nakazujemy LVM przeniesienie danych z starego fizycznego wolumenu (jakie mamy fizyczne wolumeny, sprawdzamy
pvdisplay
), np.$ pvmove /dev/sda2
-
Usuwamy stary wolumen z grupy LVM:
$ vgreduce /dev/sda2
Uroda tego rozwiązania? System jest cały czas używalny. pvmove
jest wolne (to tu odbywa się kopiowanie danych), reszta działa szybko.
Jest to po dokładnie ta sama metoda, co zwykły sposób na migrowanie partycji LVM na nowy dysk. Jedyna różnica to użycie macierzy jako nowego wolumenu.
Macierz przy instalacji od zera
Ubuntu pozwala skonfigurować macierz w trakcie instalacji systemu na nowym komputerze. Opcja ta nie jest dostępna w standardowym krążku, jest natomiast obecna przy instalacji z tzw. alternate install CD, a także przy instalacji wersji server. Trzeba po prostu pobrać taką dystrybucję zamiast domyślnej. Patrz np. wykaz wariantów Ubuntu 8.04.