LVM (Logical Volume Management) to system zaawansowanego zarządzania przestrzenią dyskową, który jest o wiele bardziej elastyczny, niż klasyczne partycje dyskowe. Zarządca pozwala na połączenie partycji znajdujących się na różnych urządzeniach pamięci masowej w jeden dysk wirtualny.
Tworzenie LVM
Wydając polecenie sudo lvmdiskscan zostanie wyświetlona lista urządzeń jakie można wykorzystać jako wolumin fizyczny.
root@deb12:~# lvmdiskscan
/dev/sda1 [ 59,04 GiB]
/dev/sda5 [ 975,00 MiB]
/dev/sdb [ 20,00 GiB]
1 disk
2 partitions
0 LVM physical volume whole disks
0 LVM physical volumes
Aby można było używać danego dysku, bądź partycji do utworzenia LVM należy nadać nagłówek. Służy do tego polecenie sudo pvcreate „nazwa_dysku/partycji”
root@deb12:~# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
Należy teraz utworzyć grupę woluminów , do której zostaną dodane woluminy fizyczne. Pozwoli na to polecenie sudo vgcreate „nazwa_grupy” „nazwa_woluminu”. Utworzy ono nową grupę oraz doda nowy wolumin. W przypadku gdy istnieje potrzeba dodania kolejnego woluminu należy skorzystać z poleceni sudo vgextend „nazwa_grupy” „nazwa_woluminu”.
root@deb12:~# vgcreate sdb_lvm /dev/sdb
Volume group "sdb_lvm" successfully created
W celu sprawdzenia wielkości grupy trzeba wydać polecenie sudo vgdisplay.
root@deb12:~# vgdisplay
--- Volume group ---
VG Name sdb_lvm
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <20,00 GiB
PE Size 4,00 MiB
Total PE 5119
Alloc PE / Size 0 / 0
Free PE / Size 5119 / <20,00 GiB
VG UUID jGZXXy-KNj1-VxDe-Std7-PwAC-UwoT-7EK1kq
Aby storzyć wolumin logiczny należy wykorzystać polecenie sudo lvcreate -l 100%FREE sdb_lvm -n samba. Utworzy ono wolumin logiczny o nazwie samba, który przejmie całą przestrzeń przypisaną do grupy sdb_lvm. W przypadku gdy wolumin logiczny ma posiadać z góry określony rozmiar, należy skorzystać z polecenia sudo lvcreate -L [rozmiar] [nazwa_grupy] -n [nazwa-woluminu-logicznego].
Wykorzystując polecenie sudo lvdisplay zostanie wyświetlona lista woluminów logicznych wraz z ich właściwościami.
root@deb12:~# lvcreate --name samba --size 10G sdb_lvm
Logical volume "samba" created.
root@deb12:~# lvdisplay
--- Logical volume ---
LV Path /dev/sdb_lvm/samba
LV Name samba
VG Name sdb_lvm
LV UUID vSvtFk-1jWX-cym4-XFnI-EP3W-34Tx-vVGt9r
LV Write Access read/write
LV Creation host, time deb12, 2024-03-01 09:04:38 +0100
LV Status available
# open 0
LV Size 10,00 GiB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0
root@deb12:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 59G 0 part /
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 975M 0 part [SWAP]
sdb 8:16 0 20G 0 disk
└─sdb_lvm-samba 254:0 0 10G 0 lvm
sr0 11:0 1 628M 0 rom
root@deb12:~#
Partycje LVM mają swoje pliki zapisywane w /dev/mapper/
root@deb12:~# ls -l /dev/mapper/
razem 0
crw------- 1 root root 10, 236 03-01 08:48 control
lrwxrwxrwx 1 root root 7 03-01 09:04 sdb_lvm-samba -> ../dm-0
Teraz trzeba utworzyć system plików na woluminie logicznym. W tym celu zostanie wykorzystane narzędzie mkfs. Polecenie wygląda następująco, sudo mkfs.ext4 /dev/vg00/part1.
mkfs.ext4 /dev/mapper/sdb_lvm-samba
root@deb12:~# mkfs.ext4 /dev/sdb_lvm/samba
mke2fs 1.47.0 (5-Feb-2023)
Discarding device blocks: done
Creating filesystem with 2621440 4k blocks and 655360 inodes
Filesystem UUID: d50457f0-074c-4ad8-a66f-d4848e2782a2
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done Po utworzeniu systemu plików pozostaje zamontować wolumin logiczny. Najpierw należy utworzyć katalog, do którego zostanie zamontowany wolumin. Wydając polecenie sudo mkdir /mnt/virtual zostanie utworzony katalog virtual w folderze /mnt. Można utworzyć katalog w dowolnym miejscu.
Zamontowanie woluminu polega na wydaniu polecenia sudo mount /dev/”nazwa_grupy”/”nazwa_woluminu_logicznego” „”ścieżka_miejsca_mątowania [/mnt/virtual]. W celu sprawdzenia czy montowanie się powiodło należy skorzystać z polecenia df -h.
root@deb12:~# mkdir /mnt/samba
root@deb12:~# mount /dev/mapper/sdb_lvm-samba /mnt/samba/
root@deb12:~# df -h
System plików rozm. użyte dost. %uż. zamont. na
udev 2,5G 0 2,5G 0% /dev
tmpfs 505M 508K 504M 1% /run
/dev/sda1 58G 1,9G 54G 4% /
tmpfs 2,5G 0 2,5G 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 505M 0 505M 0% /run/user/0
tmpfs 505M 0 505M 0% /run/user/1000
/dev/mapper/sdb_lvm-samba 9,8G 24K 9,3G 1% /mnt/samba Takie ustawienie wymaga ręcznego montowania woluminu za każdym razem gdy system zostanie uruchomiony na nowo. Aby montowanie następowało podczas startu systemu należy dodać wpis do tablicy fstab. Używając edytora tekstowego np. nano, należy dodać wpis. Polecenie wygląda następująco, sudo nano /etc/fstab. Po otworzeniu pliku trzeba wpisać na jego końcu nastepujący wpis /dev/”grupa_woluminów”/”nazwa_woluminu_wirtualnego” „ścieżka_montowania” ext4 defaults 0 0.
dev/mapper/sdb_lvm-samba /mnt/samba/ ext4 defaults 0 0. Bezpieczniejszy i zalecany sposób mountowania partycji w fstab, jest użycie UUID partycji. UUID partycji sprawdzamy za pomocą polecenia blkid.
root@deb12:~# blkid /dev/mapper/sdb_lvm-samba
/dev/mapper/sdb_lvm-samba: UUID="8d04feaa-f630-43f5-900c-641da9d45277" BLOCK_SIZE="4096" TYPE="ext4"
root@deb12:~# nano /etc/fstab
UUID="8d04feaa-f630-43f5-900c-641da9d45277" /mnt/samba/ ext4 defaults 0 0
Rozszerzyć partycję LVM o dodatkowe 1GB możemy za pomocą polecenia lvextend.
Wykonując polecenie lvextend –size +1g –resizefs /dev/mapper/sdb_lvl-samba
root@deb12:~# lvextend --size +1g --resizefs /dev/sdb_lvm/samba
Size of logical volume sdb_lvm/samba changed from 10,00 GiB (2560 extents) to 11,00 GiB (2816 extents).
Logical volume sdb_lvm/samba successfully resized.
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/mapper/sdb_lvm-samba is mounted on /mnt/samba; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 2
The filesystem on /dev/mapper/sdb_lvm-samba is now 2883584 (4k) blocks long.
root@deb12:~# df -h
System plików rozm. użyte dost. %uż. zamont. na
udev 2,5G 0 2,5G 0% /dev
tmpfs 505M 508K 504M 1% /run
/dev/sda1 58G 1,9G 54G 4% /
tmpfs 2,5G 0 2,5G 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 505M 0 505M 0% /run/user/0
tmpfs 505M 0 505M 0% /run/user/1000
/dev/mapper/sdb_lvm-samba 11G 28K 11G 1% /mnt/samba
root@deb12:~#
root@deb12:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
samba sdb_lvm -wi-ao---- 11,00g
Rozszerzanie woluminu
Jeśli zaistnieje potrzeba rozszerzenia wirtualnego woluminu, można tego dokonać poprzez dodanie kolejnych dysków fizycznych lub partycji.
Rozszerzenia wirtualnego woluminu LVM można dokonać zarówno gdy jest on zamontowany oraz gdy znajdują się na nim zapisane dane. Pamiętać należy jednak, że wszelkie operacje edycji przestrzeni dyskowej niosą ryzyko utraty danych.
Przed przystąpieniem do rozszerzania woluminu został utworzony plik aby pokazać czy ta operacja spowoduje jego usunięcie bądź uszkodzenie.
Poleceniem sudo lvmdiskscan można sprawdzić nazwę dysku bądź partycji. która ma zostać wykorzystana do zwiększenia przestrzeni na dane.

Wirtualny wolumin zostanie powiększony o dodatkowe 30GB, zostanie wykorzystany do tego dysk /dev/sdbc.
W pierwszej kolejności należy utworzyć nagłówek, wykorzystując polecenie sudo pvcreate /dev/sdc.
Należy teraz rozszerzyć grupę woluminów, wykorzystując polecenie sudo vgextend vg00 /dev/sdc.
Teraz należy rozszerzyć wcześniej utworzony wolumin wirtualny. Poleceniem sudo lvextend -r -l +100%FREE /dev/vg00/part1 /dev/sdc rozszerzamy wolumin jak i jego system plików o całe dostępne wolne miejsce. W przypadku gdy ma zostać dodana określona pojemność należy wydać polecenie sudo lvextend -r -L „o_ile_ma_zostać_rozszerzony_wolumin [+10G]” /dev/vg00/part1 /dev/sdc .

Jak można zauważyć na powyższym zdjęciu, wolumin logiczny został rozszerzony do 80 GB. Rozszerzenie systemu plików było możliwe nawet gdy wolumin był zamontowany w systemie.
Dodatkowo, jak można zauważyć na zdjęciach poniżej, plik tekstowy jak i jego zawartość zostały nienaruszone.








