RAID na LVM.

Najczęściej spotykam się z sytuacją gdy macierz dyskowa RAID jest realizowana sprzętowo, lub poprzez mdadm. Nie jest to jednak jedyna opcja - tę funkcjonalność można uzyskać również z pomocą LVM.

LVM (Logical Volume Manager) jest machanizmem umożliwiającym zarządzanie przestrzenią pamięci masowej… co wciąż brzmi dość enigmatycznie. Upraszczając umożliwia nam łączenie zasobów dyskowych (PV) w grupy (VG), w których z kolei tworzymy logiczne zasoby (LV), traktowane przez system jak zwykłą partycję. Co oznacza, że np. możemy połączyć kilka fizycznych dysków w jedną partycję widzaną przez system. Możemy też później np. dokładać kolejne dyski w miarę wyczerpywania się miejsca. Na początu idea ta wydaje się dość abstrakcyjna - w praktyce jest jednak dość prosta… i dość przydatna. Dodaje nam sporo możliwości związanych z kontrolą i konfiguracją zasobów (warto tu nieco doczytać, bo mocno uprościłem te kwestie). Kluczem wg mnie jest zrozumienie relacji między PV, VG i LV.

LVM Diagram

Czemu jednak w ten sposób? Może jest szybciej niż RAID “sprzętowy”? Nie - różnica jest względnie niewielka, zauważalna głównie przy kopiowaniu małych plików… i niestety na niekorzyść LVM (w zamieszczonych na końcu źródłach podpiąłem artykuł na ten temat).

Ja zdecydowałem się na to rozwiązanie ze względu na elastyczność jaką zapewnia LVM - względnie łatwo jestem w stanie dodawać / usuwać dyski z puli. Co ważniejsze wszystko to robię w ramach jednego narzędzia, nie muszę się przełączać między kilkoma.

Były to kluczowe powody, które skłoniły mnie do takiego podejścia gdy konfigurowałem sprzęt na którym zamierzam testować wdrożenia oprogramowania, uruchamiać tymczasowe VM i generalnie eksperymentować. Jeśli kogoś zdziwi użycie RAID0 już tłumaczę - spójność, pewność danych w tym wypadku nie jest kluczowa. Ważniejsza jest szybkość i przyjemność / łatwość pracy. To co pojawia się na tym sprzęcie jest zazwyczaj szybko usuwane i jeśli z jakiegoś powodu coś z niego zniknie nie będzie to problemem. Nie są na nim przechowywane żadne kluczowe dane (i nie powinny być).

Oczywiście jeśli byłaby taka potrzeba można tym sposobem przygotować pulę np. RAID5.

W skrócie proces ten wygląda mniej więcej tak:

  1. Przygotuj dyski / partycje (zamien sdX na odpowiednie urządzenie)
parted /dev/sdX

a w samym parted:

mktable gpt

Następnie:

fdisk /dev/sdX

, po czym “n”, caly dysk, “w” zeby wprowadzić zmiany.

  1. LVM Physical Volume

dla każdego urządzenia:

pvcreate -v /dev/sdaX
  1. LVM Volume Group - dodaj wybrane PV do puli
vgcreate -v NAZWAGRUPY /dev/sdX1 /dev/sdX2
  1. LVM Logical Volume - stwórz końcowy “dysk” (to co będzie widział system) wykorzystując zasoby z puli
lvcreate --type raid0 -i 2 -l 100%FREE NAZWAGRUPY -n NAZWADYSKU
  1. Utwórz system plików na stworzonym “dysku” (-ach)
mkfs.ext4 /dev/NAZWAGRUPY/NAZWADYSKU

Odnośniki

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/logical_volume_manager_administration/lv

https://opensource.com/article/21/9/add-storage-lvm

https://blog.programster.org/create-raid-with-lvm

https://tldp.org/HOWTO/LVM-HOWTO/recipethreescsistripe.html

https://askubuntu.com/questions/219881/how-can-i-create-one-logical-volume-over-two-disks-using-lvm

https://www.linuxtoday.com/blog/raid-vs-lvm/

Obrazek(-ki):

Benjamin Lehman, @Unsplash