Bardzo ciekawym i nie aż tak skomplikowanym tematem są LVM czyli Logical Volume Manager. Jest to bardzo elastyczny mechanizm do zarządzania przestrzenią dyskową. Dzięki temu narzędziu możemy w locie – podczas działania usług / systemu np. serwera www powiększać przestrzeń dyskową na stronę. Użytkownicy pozostali nie będą nic „czuli”. Nie będziesz musiał wyłączać systemu czy przerywać działania usługi.
Trochę teorii. Jak to działa? Myślę, że ten obrazek pokaże wszystko i nic nie będę musiał pisać.
Źródło: ivanvillareal.com
Poniżej przedstawiam parę podstawowych komend których używam.
Dostępne partycje / lub też dyski niezależne np. /dev/sda /dev/sdb
/dev/sda1 /dev/sda2 /dev/sda3
Zainicjowanie fizycznych partycji do używania LVM:
pvcreate /dev/sda1 pvcreate /dev/sda2 pvcreate /dev/sda3
Wyświetlanie atrybutów fizycznych wolumenów:
pvdisplay & psv
Tworzenie grupy wolumenu:
vgcreate vdysk /dev/sda1 /dev/sda2 /dev/sda3
lub
(gdzie PE – Physical Extents będzie wynosił 32M, domyślnie 4M)
vgcreate -s 32 vdysk /dev/sda1 /dev/sda2 /dev/sda3
Wyświetlanie atrybutów grup wolumenów:
vgdisplay & vgs
Tworzenie logicznego wolumenu w grupie wolumenu:
lvcreate -L 32M -n part1 vdysk
Tworzenie systemu pików na logicznym wolumenie:
mkfs.ext4 /dev/vdysk/part1
Wyświetlanie atrybutów logicznych wolumenów:
lvdisplay & lvs
Tworzenie katalogu i montowanie:
mkdir /lvm mount /dev/vdysk/part1 /lvm
lub
mount /dev/mapper/vdysk-part1
Powiększanie LVM
Wyświetlanie atrybutów grup wolumenów:
vgs
Rozszerzenie logicznych wolumenów o 12M:
lvextend -L +12M /dev/vdysk/part1
lub
Rozszerzenie logicznych wolumenów o 4 jednostki PE:
lvextend -l +4 /dev/vdysk/part1
lub o 50%
lvextend -l +50%FREE /dev/vdysk/part1
Następnie aby rozszerzyć nasz logiczny dysk należy:
Rozszerzanie systemy plików:
resize2fs /dev/vdysk/part1
Sprawdzanie wielkości partycji:
df -h
Działa!
Zmniejszanie LVM
Odmontowanie logicznego wolumena zamontowanego w katalogu lvm:
umount /lvm
Zmniejszenie rozmiaru sytstemu plików do 32M
resize2fs /dev/vdysk/part1 32M
Zmiejszenie rozmiaru partycji do 32M
lvreduce -L 32 /dev/vdysk/part1 mount /dev/vdysk/part1 /lvm
Dodawanie dodatkowej partycji/miejsca do volumen grupy
pvcreate /dev/sda4 vgextend vdysk /dev/sda4
Zmniejszanie wielkości partycji
pvresize /dev/sda2 --setphysicalvolumesize 50G
Odłączenie dysku od grupy
(pvmove – Przenosi dane na inne partycje dostępne w volum grupie)
pvmove /dev/sda1
Odłączenie /dev/sda1 z grupy vdysk:
vgreduce vdysk /dev/sda1
Usuniecie oznaczenia LVM z fizycznej partycji
pvremove /dev/sda1
Snapshot
lvcreate -L 12M -n snapszot -s /dev/vdysk/part1
Dyski w systemach Linux
W tej sekcji szybko przypomnę narzędzie do obsługi dysków w systemie linux.
Uruchom konsolę jako administrator i sprawdź jakie dyski i partycje są aktualnie podłączone, wydając polecenie :
fdisk -l
Odmontuj partycję, którą chcesz zmodyfikować poleceniem :
umount /dev/numer_partycji
Następnie za pomocą „fdisk” wejdź na tę partycję, np :
fdisk /dev/sdb
Teraz możesz wykonać zmiany na wybranej partycji za pomocą polecenia :
– „d” usuń partycję
– „n” utwórz nową
– wybierz rodzaj partycji: „p” – główna lub „e” – rozszerzona
– podaj numer pierwszego i ostatniego cylindra
– wybierz rodzaj systemu plków: „l” wyświetli listę kodów partycji
– „w” zapisz zmiany
– zawsze możesz wyświetlić pomoc „m”.
Ciekawie opisane szczegóły partycjonowania opisane są na tym blogu. Ja nie będę się w to zagłębiał. Ponieważ w obecnych czasach wirtualizacji pracuje się głównie na LVM’ach. Z resztą partycjonowanie nie jest takie trudne 😉 wymaga wprawy. Polecam wirtualną maszynę do testów i zabawę małymi kilkoma dyskami o pojemności 1GB/2GB.
Formatowanie mkfs
Jeśli chcesz sformatować partycję w trybie tekstowym to możesz to zrobić za pomocą programu „mkfs” wydając polecenie :
mkfs.rodzaj_systemu_plików /dev/numer_partycji
Rodzaj systemu plików możesz wybrać według własnego uznania, np. ext3, ext4, reiserfs, xfs, vfat (fat32), ntfs, jfs jeśli formatujesz partycję dysku twardego, dla pamięci USB wybierz „vfat” wydając polecenie :
mkfs.vfat /dev/sdb1
są literówki
na przykład:
pvdispaly -> pvdisplay
Dziękuję za czujność!
Super sprawa:) Miałby Pan Panie Dominiku chęć dopisać krótki dodatkowy rozdział o wyłaczeniu LVM? Fakt ze to sa raptem 3 komendy ale mogloby sie ot przydać 🙂 zwlaszcza do zabawy z lvm na wirtualnych maszynach
Dziękuję 🙂 przy najbliżej aktualizacji wpisu, dorzucę informacje na temat wyłączania LVM.
Dzięki za dobry artykuł.
A co jeśli jeden z dysków padnie? Czy LVM nadal będzie działał? Jeżeli nie, to co trzeba zrobić aby odpalić go na pozostałych (działających) dyskach?
LVM stosuje się zazwyczaj jako pewną warstwę abstrakcji. Uszkodzenia fizyczne dysków powinny być zabezpieczone za pomocą kontrolera RAID. To na tym poziomie powinniśmy zadbać o kwestię związaną z ich awaryjnością. Po prostu kontroler RAID udostępnia nam pewną pule pamięci to na niej operujemy tworząc LVM’y. Nie interesuje nas rzeczywista liczba fizycznych dysków oraz ich stan. W przypadku uszkodzenia, wymieniasz dysk – macierz sama powinna się odbudować. LVM nie powinien odczuć żadnych problemów – może prócz mniejszej wydajności. Wszystko zależy od sprzętowej realizacji danej przestrzeni dyskowej.
W sytuacji kiedy mam jeden fizyczny dysk i na nim stworzone LVM’y to w sytuacji uszkodzenia, LVMy przestają funkcjonować.
ja mam pytanie: kiedy LVM stosować i po co to tak naprawdę jest potrzebne?
Jeśli nie widzisz potencjału w dodawaniu w locie przestrzeni dyskowej bez konieczności wyłączania serwera danej usługi która musi działać bez przerwy – no to może nie jest Ci potrzebny LVM. To wygoda, głównie dla administratorów centrów danych, rozwiązań chmurowych. Pozdrawiam i dziękuję za komentarz!
Mam /home na 2 osobnych dyskach, zamontowany w 1 punkcie dzięki właśnie lvm (widoczny jako jedna partycja). Mam 2 pytania:
1. Czy w przypadku awarii jednego z dysków, będę mógł odzyskać to co pozostało na przestrzeni dyskowej drugiego dysku (jak to sprawdzić?) czy też awaria jednego spowoduje dzięki lvm że stracę dane całego volumenu logicznego znajdującego się na 2 fizycznych dyskach?
2. Czy w przypadku instalacji nowego (innej dystrybucji) systemu linux (system mam na jeszcze innym dysku, na którym nie używam lvm) zachowam funkcjonalność lvm na vol logicznym /home i nie utracę ustawień lvm?
Da się zrobić LVM pomiędzy kilkoma urządzeniami? Lub czy jest jakieś inne rozwiązanie, które by umożliwiło takie działanie – chyba tak mogę wykorzystać GlusterFS?
Chodzi mi o „tanie” skalowalne rozwiązanie NAS do długotrwałego przechowywania danych. Gdzie mi głównie chodzi na skalowalności, możliwości dodawania nodów – jakieś ARM + HDD
LVM ma wiele możliwości, wszystko zależy od zaawansowania rozwiązań ujętych w NAS z jakiego się korzysta. Trzeba to zweryfikować. Da się skalować fajnie np. qnap’a czy synology. Warto to sprawdzić przed zakupem.
Nie chciałbym gotowca typu QNAP czy Synologi, to na dzień dobry musiał być, brać mega topową wersję, tak by uzyskać min. 10TB i móc to rozbudować do 40TB jak zgram wszystko z płyt DVD. Już nie mówiąc, iż nie chciał bym iść w RAID tylko raczej ZFS, by móc łatwiej poole dyskowe skalować w górę. Bo z tego co rozumiem RAIDa nie mogę rozbudować w górę, tylko muszę go zbudować od nowa – tymczasowo gdzieś przenieść wszystkie dane.