Strona 1 z 1

[LINUX] LVM przewodnik (ściągawka)

: środa 22 lut 2017, 10:44
autor: PROTON
Ś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

[LINUX] LVM przewodnik (krok po kroku)

: środa 22 lut 2017, 10:51
autor: PROTON
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

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

: środa 22 lut 2017, 13:45
autor: PROTON
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

Podsumowanie

: środa 22 lut 2017, 14:10
autor: PROTON
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.

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

: czwartek 23 lut 2017, 01:21
autor: j23
Wow... Super dokładny poradnik - w sam raz dla mnie. :) WIELKIE dzięki Kolgo PROTON!!! :D

Pozdrawiam! j23

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

: czwartek 23 lut 2017, 16:00
autor: xor
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;