[LINUX] LVM przewodnik (ściągawka)

Linux jako system PC i Embedded
Regulamin forum
Aby łatwiej poruszać się w zagadnieniach to prosimy aby w temacie, na samym początku, w nawiasach prostokątnych umieszczać hasło wiodące dla opisywanego problemu np. [Debian], [System embedded], [Linux Mint] itp.
Awatar użytkownika
PROTON
Expert
Expert
Posty: 527
Rejestracja: czwartek 08 paź 2015, 18:35
Lokalizacja: Warszawa

[LINUX] LVM przewodnik (ściągawka)

Postautor: PROTON » środa 22 lut 2017, 10:44

Ściągawka

Przygotowanie dysku, założenie partycji Linux LVM

Kod: Zaznacz cały

fdisk /dev/sda

utworzenie fizycznego woluminu

Kod: Zaznacz cały

pvcreate /dev/sda1 /dev/sda2 /dev/sda3

Utworzenie grupy woluminów

Kod: Zaznacz cały

vgcreate vg-data /dev/sda1 /dev/sda2 /dev/sda3

Tworzenie logicznego woluminu

Kod: Zaznacz cały

lvcreate –n data1 –L 10G vg-data

Tworzenie system plików:

Kod: Zaznacz cały

mkfs –t xfs /dev/vg-data/data1

Utworzenie punktu montowania:

Kod: Zaznacz cały

/mnt/data1

Wpis do fstab

Kod: Zaznacz cały

/dev/vg-data/data1    /mnt/data1   xfs   defaults 1 2

Sprawdzenie I zamontowanie:

Kod: Zaznacz cały

mount –a
Ostatnio zmieniony środa 22 lut 2017, 10:52 przez PROTON, łącznie zmieniany 1 raz.
Gott weiß ich will kein Engel sein.

Awatar użytkownika
PROTON
Expert
Expert
Posty: 527
Rejestracja: czwartek 08 paź 2015, 18:35
Lokalizacja: Warszawa

[LINUX] LVM przewodnik (krok po kroku)

Postautor: PROTON » środa 22 lut 2017, 10:51

Przygotowanie
Na potrzeby tego przewodnika utworzyłem 3 dyski w wirtualnej maszynie, każdy po 8GB.
1.png


Tworzenie partycji
Do utworzenia partycji używamy fdisk lub gparted w zależności od tego jaką mamy istniejącą tablicę partycji.
Wpusujemy:

Kod: Zaznacz cały

fdisk /dev/sdb


Następnie kilka razy enter, wszystkie parametry wybieramy domyślne, kolejny krok to zmiana typu partycji na Linux LVM. Wybieramy t wybieramy partycję 1 i wpisujemy kod szesnastkowy partycji 0x8e, na koniec opcja w. Tą samą operację powtarzamy dla dysków sdc i sdd.
2.png
3.png


Uwaga: Aby sprawdzić jaki jest rodzaj partycji na dysku (GPT, MBR), należy użyć gparted, jeśli była utwożona przy użyciu fdisk, otrzymamy ostrzeżenie.
4.png


Tworzenie fizycznego woluminu
Wpisujemy :

Kod: Zaznacz cały

partprobe
pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1

5.png

Tworzenie grupy woluminów
Wykorzystamy dwa dyski sdb i sdc.Utworzymy grupę woluminów vg-data.

Kod: Zaznacz cały

vgcreate vg-data /dev/sdb1 /dev/sdc1

6.png


Tworzenie logicznego woluminu
Utworzymy wolumin logiczny data_db o wielkości 2GB

Kod: Zaznacz cały

lvcreate –n data_db –L 2G vg-data

7.png

Tworzenie systemu plików.
Utwórzmy system plików xfs:

Kod: Zaznacz cały

mkfs –t xfs /dev/vg-data/data_db

8.png

Tworzymy punkt montowania:

Kod: Zaznacz cały

mkdir /mnt/database


Dodajemy do /etc/fstab poniższą linię:

Kod: Zaznacz cały

/dev/vg-data/data_db   /mnt/database   xfs   defaults 1 2

9.png

Po wydaniu polecenia mount –a, nie powinien zgłosić żadnych błędów, kolejne wydanie polecenia mount bez parametrów wyświetli wszystkie podłączone systemy plików, na samym końcu będzie nowo utworzony.
10.png
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Gott weiß ich will kein Engel sein.

Awatar użytkownika
PROTON
Expert
Expert
Posty: 527
Rejestracja: czwartek 08 paź 2015, 18:35
Lokalizacja: Warszawa

Re: [LINUX] LVM przewodnik (Co LVM potrafi?)

Postautor: PROTON » środa 22 lut 2017, 13:45

Przygotowania

Do testów utworzymy jeszcze jeden system plików ext4.
11.png

12.png


Kod: Zaznacz cały

mount –a
mount

13.png

Mamy następujący stan, grupę woluminów vg-data o wielkości 16GiB, gdzie zajęte jest 4GiB
14.png

W której znajdują się 2 systemy plików data_db i data_ext4, każdy po 2GiB
15.png

Wykorzystanie poszczególnych fizycznych woluminów możemy sprawdzić poleceniem pvdisplay
16.png


Zwiększanie wielkości systemów plików.

Na początek zwiększymy o 4GB data_db

Kod: Zaznacz cały

lvextend –L +4G /dev/vg-data/data_db

17.png

Teraz wypadało by zwiększyć system plików.

Kod: Zaznacz cały

xfs_growfs /mnt/database

18.png


To samo zrobimy dla data_ext4, z tym że podamy konktetną ilość extentów:

Kod: Zaznacz cały

lvextend –l 1500 /dev/vg-data/data_ext4

19.png

Z tym że do zwiększenia system plików ext4 używamy innego polecenia:

Kod: Zaznacz cały

resize2fs /dev/vg-data/data_ext4

20.png


Dokładanie nowego dysku do grupy woluminów

Do vg-data dokładmy wcześniej przygotowny dysk sdd1

Kod: Zaznacz cały

vgextend vg-data /dev/sdd1

21.png

Teraz sprawdzimy zajętość poszczególnych fizycznych woluminów.

Kod: Zaznacz cały

pvdisplay /dev/sdb1
pvdisplay /dev/sdc1
pvdisplay /dev/sdd1

22.png

Jak widać sdb1 jest całkowicie zajęty, sdc1, w połowie a sdd1 jest całkowicie wolny.

Usuwanie dysku z grupy woluminów

Usuniemy dysk sdc1 z grupy woluminów, najpierw musimy go zwolnić, dokonamy relokacji extentów z sdc1 na pozostałe fizyczne woluminy znajdujące się w grupie vg-data

Kod: Zaznacz cały

pvmove /dev/sdc1

23.png

Następnie usuwamy dysk z grupy woluminów

Kod: Zaznacz cały

vgreduce vg-data /dev/sdc1

24.png

25.png
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Gott weiß ich will kein Engel sein.

Awatar użytkownika
PROTON
Expert
Expert
Posty: 527
Rejestracja: czwartek 08 paź 2015, 18:35
Lokalizacja: Warszawa

Podsumowanie

Postautor: PROTON » środa 22 lut 2017, 14:10

Te wszystkie operacje na LVM robi się w locie, bez wyłączania systemu czy usług. Umożliwia to migrację działającego systemu bez przerw w pracy.
Możemy migrować np. z wewnętrznych dysków serwera na zewnętrzną macierz, czy ze starej macierzy na nową, itp. kombinacji jest wiele.
Gott weiß ich will kein Engel sein.

Awatar użytkownika
j23
Expert
Expert
Posty: 506
Rejestracja: czwartek 08 paź 2015, 18:40

Re: [LINUX] LVM przewodnik (ściągawka)

Postautor: j23 » czwartek 23 lut 2017, 01:21

Wow... Super dokładny poradnik - w sam raz dla mnie. :) WIELKIE dzięki Kolgo PROTON!!! :D

Pozdrawiam! j23
Internet łączy ludzi, którzy dzielą się swoimi zainteresowaniami, pomysłami i potrzebami, bez względu na geograficzne (przeciwności).
BOB TAYLOR, PARC

Awatar użytkownika
xor
User
User
Posty: 169
Rejestracja: poniedziałek 05 wrz 2016, 21:44

Re: [LINUX] LVM przewodnik (ściągawka)

Postautor: xor » czwartek 23 lut 2017, 16:00

To może pozwolę sobie wtrącić swoje trzy grosze na temat fajnego ficzera LVM jakim jest migawka (snapshot). Co bardziej zaawansowani userzy używają snapshotów do przywracania systemu w przypadku nieudanej aktualizacji ale ja chciałem powidzieć o tworzeniu kopii bezpieczeństwa. Dzięki migawce można wykonać spójną kopię bezpieczeństwa w trakcie działania systemu. To dosyć ważne nawet w przypadku komputera domowego, bo konieczność wyłączenia komputera z normalnego działania i szukania jakichś CDROMów zwykle zniechęca do wykonywania jakichkolwiek bekapów. A przynajmniej mnie zniechęca ;-)
Warunkiem wstępnym skorzystania z ficzera jest posiadanie pewnej ilości wolnego miejsca w grupie woluminów w której zawarty jest bekapowany wolumin logiczny. Jak dużo? To zależy od tego jak dużo danych na bekapowanym woluminie ulegnie zmianie podczas całej operacji (pamiętamy, że odbywa się to w czasie normalnej pracy systemu, który zawsze sobie coś tam modyfikuje w plikach). Manual podaje, że 15-20% wielkośći oryginalnego (bekapowanego) woluminu powinno wystarczyć, ale wydaje mi się, że na typowej stacji roboczej jakieś 100MB wystarcza z dużym naddatkiem. No chyba, że jednocześnie z bekapem robi się aktualizację systemu albo zrzuca pliki z kamery wideo ;-). Tak więc zależy to od konkretnego przypadku. W skrajnej sytuacji może to być wielkość równa wielkośći woluminu oryginalnego, wtedy jest 100% pewności.

No to przejdźmy do konkretów. Pozwolę sobie podłączyć się pod przykład PROTONA, stan po redukcji grupy woluminów o wolumin fizyczny /dev/sdc1 (obrazek 24, przedostatni):
nazwa grupy woluminów: vg-data
wielkość: 15,99GB
ilość zajęta: 11,86GB
ilość wolna: 4,13GB
woluminy logiczne:
data_db 6GB
data_ext4 5,86GB

1. Utworzenie migawki woluminu data_ext4 (xfs jest mi całkowicie nieznany a poza tym chyba posiada możliwość tworzenia snapshotów) przy wykorzystamniu całej pozostałej wolnej przestrzeni (4GB w tym przypadku).

Kod: Zaznacz cały

lvcreate --extents 100%FREE --snapshot --name data_ext4_snapshot /dev/vg-data/data_ext4

albo to samo w wersji krótkiej

Kod: Zaznacz cały

lvcreate -l 100%FREE -s -n data_ext4_snapshot /dev/vg-data/data_ext4


2. Zamontowanie migawki w (wcześniej utworzonym) katalogu /mnt/snapshot/data_ext4

Kod: Zaznacz cały

mount -t ext4 -o ro,noatime,nodiratime /dev/vg-data/data_ext4_snapshot /mnt/snapshot/data_ext4


3. Wykonanie kopii bezpieczeństwa swoim ulubionym narzędziem (tutaj rsync) na swoim ulubionym urządzeniu (tutaj na dysku sieciowym ze skonfigurowanym serwerem rsync)

Kod: Zaznacz cały

rsync -a -x -H --numeric-ids --progress /mnt/snapshot/data_ext4/ user@host::dest


4. Odmontowanie migawki z systemu plików

Kod: Zaznacz cały

umount /mnt/snapshot/data_ext4


5. Usunięcie snapshota

Kod: Zaznacz cały

lvremove --force /dev/vg-data/data_ext4_snapshot


W przypadku gdy na woluminie vg-data/data_ext4 mamy bazę danych MySQLprzed punktem 1. należy wykonać coś w stylu:
0.

Kod: Zaznacz cały

mysql> FLUSH TABLES WITH READ LOCK;


a po pkt 5:
6.

Kod: Zaznacz cały

mysql> UNLOCK TABLES;


Wróć do „GNU/Linux”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 4 gości