Łatwe do rozszerzenia oprogramowanie Linux RAID 5 z XFS. Najlepsze praktyki?


13

Używam mojego komputera Ubuntu jako serwera plików dla klientów Windows / Linux / Mac korzystających z udziału Samba. Potrzebuję go łatwo rozbudować, dodając więcej dysków twardych bez konieczności przenoszenia danych w tę iz powrotem.

Tak właśnie to zrobiłem. Z powodzeniem dodałem czwarty dysk twardy. Dobrze byłoby wiedzieć, czy tak właśnie należy to zrobić? Co robię źle lub co mogę zrobić lepiej?

Tworzenie początkowej tablicy 3 dysków

Zacząłem od trzech pustych dysków: / dev / sdb, / dev / sdc i / dev / sdd.

Najpierw utworzyłem puste partycje dla wszystkich dysków:

$ fdisk /dev/sdX
n # Create a new partition
p # Primary
1 # First partition
[enter] # Starting point to first sector (default)
[enter] # Ending point to last sector (default)
t # Change partition type
fd # Type: Linux raid autodetect
w # Write changes to disc

Po utworzeniu pustych partycji RAID na wszystkich trzech dyskach utworzyłem macierz RAID5:

$ mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1

Teraz macierz RAID5 jest tworzona i jest już budowana. To zajmuje dużo czasu, ale możesz kontynuować tworzenie nowego fizycznego wolumenu LVM2:

$ pvcreate /dev/md0

Teraz utwórzmy nową grupę woluminów:

$ vgcreate vd_raid /dev/md0

Następnie musimy utworzyć nowy wolumin logiczny w tej grupie woluminów. Najpierw musimy ustalić dokładny rozmiar utworzonej grupy woluminów:

$ vgdisplay vg_raid

Rozmiar można zobaczyć z wiersza, który wskazuje „Total PE” w zakresie fizycznym. Wyobraźmy sobie, że jest to 509. Teraz utwórz nowy wolumin logiczny, który zajmie całą dostępną przestrzeń:

$ lvcreate -l 509 vg_raid -n lv_raid

Wreszcie możemy utworzyć system plików na podstawie tego woluminu logicznego:

$ mkfs.xfs /dev/mapper/vg_raid-lv_raid

Aby móc korzystać z naszej nowo utworzonej macierzy RAID, musimy utworzyć katalog i zamontować go:

$ mkdir /raid
$ mount /dev/mapper/vg_raid-lv_raid /raid

Teraz jest gotowy do użycia. Aby jednak mógł się automatycznie zamontować po ponownym uruchomieniu, musimy zapisać geometrię RAID w pliku konfiguracyjnym mdadm:

$ mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Następnie dodaj następujący wiersz do / etc / fstab, który automatycznie montuje macierz RAID:

/dev/mapper/vg_raid-lv_raid /raid auto auto,noatime,nodiratime,logbufs=8 0 1

Teraz macierz RAID jest gotowa do użycia i montowana automatycznie do katalogu / raid po każdym uruchomieniu.

Dodanie nowego dysku do tablicy

Wyobraźmy sobie, że teraz masz nowy dysk, / dev / sde, który chcesz dodać do wcześniej utworzonej tablicy bez utraty danych.

Najpierw nowy dysk musi zostać podzielony na partycje, tak jak wszystkie inne dyski:

$ fdisk /dev/sde
n # Create a new partition
p # Primary
1 # First partition
[enter] # Starting point to first sector (default)
[enter] # Ending point to last sector (default)
t # Change partition type
fd # Type: Linux raid autodetect
w # Write changes to disc

Następnie należy go dodać do macierzy RAID:

$ mdadm --add /dev/md0 /dev/sde1

Teraz macierz RAID5 obejmuje cztery dyski, z których tylko trzy są obecnie w użyciu. Macierz należy rozszerzyć o wszystkie cztery dyski:

$ mdadm --grow /dev/md0 --raid-devices=4

Następnie fizyczny wolumin LVM2 musi zostać rozszerzony:

$ pvresize /dev/md0

Teraz wolumin fizyczny jest domyślnie zmieniany, aby objąć całą dostępną przestrzeń w macierzy RAID. Musimy znaleźć nowy rozmiar w zakresie fizycznym:

$ vgdisplay vg_raid

Wyobraźmy sobie, że nowy rozmiar to teraz 764 (widać z „Total PE”). Teraz rozwiń wolumin logiczny, aby to uwzględnić:

$ lvextend /dev/mapper/vg_raid-lv_raid -l 764

Następnie rozwiń system plików XFS. Należy to zrobić, gdy system plików jest podłączony i podłączony:

$ xfs_grow /raid

Domyślnie jest rozszerzony, aby objąć całą dostępną przestrzeń. Na koniec należy zaktualizować geometrię macierzy RAID, ponieważ macierz zawiera teraz nowy dysk. Najpierw usuń dodaną linię z /etc/mdadm/mdadm.conf, a następnie dodaj nową:

$ mdadm --detail --scan >> /etc/mdadm/mdadm.conf

3
Nie umieszczaj partycji na dyskach. Nie ma takiej potrzeby - autodetekcja RAID w jądrze (typ partycji fd) jest przestarzała.
James

Więc zamiast tworzyć partycje typu „fd” za pomocą fdisk, powinienem po prostu utworzyć tablicę / dev / md0 bezpośrednio w urządzeniach / dev / sdb, / dev / sdc i / dev / sdd?
Taskinen

1
Słyszałem, że nie wszystkie dyski są tego samego rozmiaru, więc jeśli kupię nowy dysk terabajtowy, może on nie być dokładnie tego samego rozmiaru. Czy wprowadziłoby to jakieś problemy?
Taskinen

Odpowiedzi:


5

Myślę, że masz rację. Upewnij się, że rozumiesz i przestrzegasz ostrzeżeń dotyczących rozwijania RAID 5 man 8 mdadm.

Osobiście, gdybym rozwijał wolumen LVM, nie rozwijałbym istniejącej macierzy RAID, aby to zrobić. Utworzyłbym kolejną macierz RAID, stworzyłbym z niej nowy fizvol i dodałbym do tej samej grupy woluminów. Jest to znacznie bezpieczniejsza operacja (nie wymaga przepisywania całej macierzy RAID5 na nowym zestawie dysków) i pozwala zmniejszyć rozmiar macierzy.


Absolutnie się zgadzam. vgextend jest tutaj twoim przyjacielem.
Dan Andreatta

1
Ogólnie rozumiem, ale co z sytuacją, w której chcę wyhodować wyżej wymienioną macierz z trzema dyskami w macierz z czterema dyskami. Nie mogę utworzyć nowej macierzy RAID z samego czwartego dysku.
Taskinen

1
Nie rozwijałbym macierzy dyskowej serwera pamięci masowej pojedynczo. Przejście z macierzy z trzema dyskami na macierz z czterema dyskami da ci tylko 50% więcej miejsca, ponieważ musisz użyć dysków o tym samym rozmiarze.
Kamil Kisiel

1
Zgoda. Gdy zabraknie miejsca, większe dyski będą miały niższą cenę. Zbuduj drugą macierz RAID na nowym zestawie większych dysków, a następnie przenieś do niej swoje stare dane i wycofaj stary zestaw po zakończeniu pvmove. Można to wszystko zrobić, gdy systemy plików w woluminach logicznych, na które wpływa pvmove, są w użyciu.
flabdablet
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.