Najlepsze zamówienie RAID, LVM i LUKS

13

Zamierzam zainstalować serwer plików z Debian GNU / Linux 8.

Chcę mieć oprogramowanie RAID-1 przy użyciu mdadm, a także dyski szyfrowane przy użyciu LUKS. Podoba mi się także elastyczność posiadania LVM.

Można to zrobić na różne sposoby. Jednym ze sposobów jest: Najpierw skonfiguruj RAID-1 za pomocą mdadm. Następnie skonfiguruj PV LVM na pokrycie utworzonego / dev / mdX. Następnie skonfiguruj LV i zaszyfruj te przy użyciu LUKS. Następnie sformatuj je za pomocą systemu plików, powiedzmy ext4. Powoduje to taki układ:

RAID --> LVM --> LUKS --> ext4

Lub mógłbym to zrobić w innej kolejności:

RAID --> LUKS --> LVM --> ext4

A może nawet:

LVM --> RAID --> LUKS --> ext4

A może nawet zupełnie inne zamówienie.

Jakie są zalety i wady różnych podejść? Co zapewnia najlepszą wydajność, bezpieczeństwo, łatwość konserwacji itp.?

Czy istnieje „najlepszy sposób” na zrobienie tego?

Tomasz
źródło

Odpowiedzi:

18

Po pierwsze, kolejność LUKS i LVM zależy od tego, czy chcesz mieć różne hasła LUKS lub inne ustawienia dla różnych LV. Jeśli powiesz, musisz skonfigurować różne hasła dla różnych LV, zdecydowanie musisz umieścić LUKS na LVM. Z drugiej strony, jeśli wszystkie LV mają takie samo hasło i ustawienia jak keylen, chciałbyś mieć LUKS poniżej LVM, abyś nie musiał radzić sobie z narzutem posiadania więcej niż jednej partycji LUKS (pomyśl co musiałby to zrobić, gdy trzeba zmienić hasło).

Po drugie, prawie zawsze chcesz, aby RAID był najniższym poziomem, dzięki czemu po śmierci jednego dysku można go łatwo i przejrzyście wymienić. Jeśli miałbyś ustawić RAID na LVM, musiałbyś wymienić PV, gdy umiera jeden dysk, to byłby duży ból szyi. Również RAID na LVM całkowicie pokonałby elastyczność LVM. Prawdopodobnie będziesz musiał ponownie ustawić drugą warstwę LVM na RAID!

Dlatego, ponieważ w większości przypadków ludzie potrzebują tylko jednego hasła, wystarczyłoby to:

RAID -> LUKS -> LVM -> ext4

W niektórych przypadkach może być konieczne użycie LVM do połączenia wielu urządzeń RAID w duży wolumin, a następnie:

RAID -> LVM -> LUKS (-> LVM) -> ext4

Teoretycznie kolejność nie powinna mieć większego wpływu na wydajność, jeśli każda warstwa jest poprawnie skonfigurowana , aw praktyce nie widziałem, aby ta konfiguracja miała szczególnie słabą wydajność. Najważniejszą rzeczą jest prawdopodobnie wyrównanie:

  1. upewnij się, że partycje są wyrównane 1 MB (bardzo ważne w przypadku dysków SSD);
  2. w przypadku warstwy RAID mądrze wybierz rozmiar porcji ;
  3. w przypadku LVM upewnij się, że ustawiono --dataalignmentdopasowanie rozmiaru porcji RAID ( może to być pomocne).

Także jeśli na SSD, upewnij się włączyć LUKS TRIM / DISCARD pass-through, dodając rd.luks.options=discarddo /etc/default/grubi discarddo /etc/crypttab(są to, co robię na Red Hat / Fedora Linux. Może być nieco inna na Debianie). LVM i RAID powinien automatycznie support Odrzuć jeśli używasz nowego jądra.

Oczywiście są to tylko ogólne wytyczne. Jeśli masz specjalne potrzeby, zaktualizuj swoje pytanie lub komentarz tutaj.

Yan Li
źródło
Dziękuję za szybką odpowiedź. Słuszne uwagi! Czy możesz skomentować różnice w wydajności, jeśli nie są trywialne?
Thomas
Zaktualizowano z uwagami dotyczącymi wydajności.
Yan Li
1
Należy również zauważyć, że nie zawsze trzeba korzystać z MDADM (choć spodziewam się, że byłoby to najbardziej typowe rozwiązanie). - LVM oferuje RAID (alias dublowanie)
David
@davidgo Tak. Myślałem też o tym wspominać, ale nie zrobiłem tego, ponieważ nie jestem pewien, czy to właściwy sposób. Nie próbowałem tego osobiście (głównie używam wyższych poziomów RAID, takich jak 5 lub 6) i przeczytałem mieszane opinie na temat tworzenia kopii lustrzanych LVM, takie jak wspomniane w niektórych odpowiedziach na to pytanie .
Yan Li
@ Yan, zgadzam się. Ja też zawsze używam mdadm RAid (1)
davidgo
4

Jeśli chcesz wszystkich RAID, LUKS i LVM, polecam RAID -> LUKS -> LVM -> FS. RAID --> LVM --> LUKS --> LVM --> FSnie jest lepsze niż RAID -> LUKS -> LVM- aby rozszerzyć woluminy, wystarczy dodać więcej RAID -> LUKSurządzeń do grupy woluminów.

RAID --> LVM --> LUKS --> FS - szyfrowanie tylko określonych woluminów logicznych ma funkcję domyślnego nieszyfrowania wszystkiego (może to być postrzegane jako zaleta lub wada), ale ułatwi rozszerzenie root root.

Rozszerzanie LUKS na woluminy logiczne jest częstym źródłem problemów, gdy użytkownicy rozszerzają / zmieniają rozmiar w niewłaściwej kolejności. Posiadanie LUKS na całym urządzeniu md RAID uprości zmianę rozmiaru - dodaj nowe urządzenie md, utwórz na nim LUKS, dodaj urządzenie do / etc / crypttab (przynajmniej na klonach Fedory i RHEL) i poszerz swoją grupę woluminów. Jeśli root FS znajduje się w grupie woluminów, musisz dodać kolejny rd.luks.uuidwpis do cmdline jądra (edytuj / etc / default / grub i ponownie wygeneruj grub.cfg.)

LUKS -> RAIDjest zwykle błędny - dane będą szyfrowane wiele razy, zużywając więcej cykli procesora bez żadnego wzmocnienia. Istnieje również szansa na przypadkowe zastąpienie uszkodzonego dysku nowym dyskiem bez konfigurowania LUKS w przypadku awarii dysku.

Rozszerzanie i zmniejszanie:

Podczas rozciągania zawsze idź od dołu stosu, podczas zmniejszania się od góry.

Przykład:

Rozszerzanie RAID -> LVM -> LUKS -> FS (pierwsze dwa kroki są opcjonalne, jeśli w grupie woluminów jest wystarczająca ilość wolnego miejsca):

  1. Dodaj nowe dyski i utwórz md RAID.
  2. Dodaj urządzenie mdX do grupy woluminów.
  3. Rozszerz wolumin logiczny.
  4. Rozszerz urządzenie LUKS.
  5. Rozszerz FS.

Kurczenie się RAID -> LVM -> LUKS -> FS :

  1. Shrink FS.
  2. Zmniejsz urządzenie LUKS.
  3. Zmniejsz wolumin logiczny.
Marsjanin
źródło