{"id":54,"date":"2017-04-30T09:27:02","date_gmt":"2017-04-30T07:27:02","guid":{"rendered":"http:\/\/blog.techmedia.pl\/?p=54"},"modified":"2020-04-01T19:33:51","modified_gmt":"2020-04-01T17:33:51","slug":"lvm-on-ubuntu-16-04","status":"publish","type":"post","link":"https:\/\/www.techmedia.pl\/blog\/lvm-on-ubuntu-16-04\/","title":{"rendered":"LVM on Ubuntu 16.04 &#8211; zaawansowane zarz\u0105dzanie pojemno\u015bci\u0105 dysk\u00f3w"},"content":{"rendered":"<p>Wa\u017cne poj\u0119cia:<\/p>\n<p><span style=\"color: #3366ff;\">LVM<\/span> &#8211; Logical Volume Manager (Menad\u017cer Wolumin\u00f3w Logicznych), jest to system zaawansowanego zarz\u0105dzania przestrzeni\u0105 dysku. Jest on o wiele bardziej elastyczny, ni\u017c klasyczne partycje dyskowe.<\/p>\n<p><span style=\"color: #3366ff;\">PV<\/span> &#8211; Physical Volume (Woluminy fizyczny, partycja fizyczna), s\u0105 bezpo\u015brednio zwi\u0105zane z partycjami na dyskach (np. \/dev\/hda1, \/dev\/sdb3), kt\u00f3re mo\u017cemy wykorzysta\u0107 do utworzenia wirtualnych grup.<!--more--><\/p>\n<p><span style=\"color: #3366ff;\">VG<\/span> &#8211; Volume Group (Grupa wolumin\u00f3w, grupa partycji), sk\u0142adaj\u0105 si\u0119 co najmniej z jednego PV, ich wielko\u015b\u0107 to suma wielko\u015bci wszystkich PV nale\u017c\u0105cych do danej grupy. Ca\u0142kowite miejsce VG mo\u017cemy dowolnie rozdziela\u0107 pomi\u0119dzy kolejne LV.<\/p>\n<p><span style=\"color: #3366ff;\">LV<\/span> &#8211; Logical Volume (Wolumin logiczny, partycja logiczna), s\u0105 obszarami dost\u0119pnymi dla systemu (podobnie jak standardowe partycje). LV s\u0105 obszarami wydzielonymi z VG, zatem suma wielko\u015bci LV nie mo\u017ce przekracza\u0107 obj\u0119to\u015bci VG, do kt\u00f3rego nale\u017c\u0105.<\/p>\n<p>LVM powinien by\u0107 elementem naszego systemu. Je\u015bli jest inaczej wystarczy wyda\u0107 z konsoli poni\u017csz\u0105 komend\u0119:<\/p>\n<pre>root@server:\/#<strong> apt-get install lvm2<\/strong><\/pre>\n<p>Poni\u017cej przyk\u0142ad u\u017cycia dysku 50GB, na kt\u00f3rym utworzone s\u0105 2 partycje 20GB i 30GB jako magazynu LVM. Na bazie 2 partycji zosta\u0142a utworzona wirtualna grupa 50GB. W grupie utworzono logiczne woluminy o rozmiarze odpowiednio: lv01 &#8211; 5GB i lv02 &#8211; 20GB. Wolny obszar jaki zosta\u0142 do wykorzystania w wirtualne grupie to 25GB.<\/p>\n<pre>&lt;- \/dev\/sdc ---------------- Fizyczny twardy dysk 50GB\u00a0------------------&gt;\r\n&lt;- \/dev\/sdc1 ---- PV 20GB ----&gt;&lt;-- \/dev\/sdc2 -------- PV 30GB -----------&gt;\r\n&lt;- \/dev\/new_vg ----------------------\u00a0VG 50GB\u00a0---------------------------&gt;\r\n&lt;- \/dev\/new_vg\/lv01 -LV 5GB -&gt;&lt;- \/dev\/new_vg\/lv02 -LV 20GB -&gt;&lt;-Free 25GB-&gt;<\/pre>\n<p>Je\u015bli chcemy wykorzysta\u0107 ca\u0142y dysk (np. sdc) jako magazyn LVM dla fizycznego woluminu wydajemy poni\u017csze polecenie:<\/p>\n<pre>root@server:\/#<strong> pvcreate \/dev\/sdc<\/strong><\/pre>\n<p>Wy\u015bwietli\u0107 woluminy fizyczne mo\u017cemy poleceniem:<\/p>\n<pre>root@server:\/#<strong> pvscan<\/strong><\/pre>\n<p>Bardziej szczeg\u00f3\u0142owe informacje o woluminach fizycznych uzyskamy wydaj\u0105c polecenie:<\/p>\n<pre>root@server:\/#<strong> pvdisplay<\/strong><\/pre>\n<p>Je\u015bli chcemy pozna\u0107 dok\u0142adny rozmiar fizycznego woluminu, mo\u017cemy u\u017cy\u0107 poni\u017cszego polecenia wpisuj\u0105c odpowiedni parametr:<br \/>\nm &#8211; megabajty<br \/>\ng &#8211; gigabajty<br \/>\nt &#8211; terabajty.<\/p>\n<pre>root@server:\/#<strong> pvs --units m<\/strong><\/pre>\n<p>Po utworzeniu fizycznych wolumin\u00f3w tworzymy wirtualn\u0105 grup\u0119 o nazwie <em>main<\/em> poni\u017cszym poleceniem:<\/p>\n<pre>root@server:\/#<strong> vgcreate main \/dev\/sdc<\/strong><\/pre>\n<p>Wy\u015bwietlamy wirtualne grupy poleceniem:<\/p>\n<pre>root@server:\/#<strong> vgdisplay<\/strong><\/pre>\n<p>Je\u015bli chcemy pozna\u0107 dok\u0142adny rozmiar wirtualnej grupy, mo\u017cemy u\u017cy\u0107 poni\u017cszego polecenia wpisuj\u0105c odpowiedni parametr:<br \/>\nm &#8211; megabajty<br \/>\ng &#8211; gigabajty<br \/>\nt &#8211; terabajty.<\/p>\n<pre>root@server:\/#<strong> vgs --units m<\/strong><\/pre>\n<p>Rozszerzenie wirtualnej grupy o nowy dysk (wcze\u015bniej nale\u017cy oczywi\u015bcie doda\u0107 nowy dysk poleceniem <span style=\"color: #ff0000;\"><em>pvcreate<\/em><\/span> jak wy\u017cej):<\/p>\n<pre>root@server:\/# <strong>vgextend main \/dev\/sdd1<\/strong><\/pre>\n<p>Po tych zabiegach mo\u017cemy utworzy\u0107 logiczne woluminy w wirtualnej grupie <em>main<\/em>. Poni\u017cszym poleceniem utworzymy logiczny wolumin o rozmiarze <em>100GB<\/em>, nazwie <em>backup<\/em> w wirtualnej grupie <em>main<\/em>:<\/p>\n<pre>root@server:\/#<strong> lvcreate -L 100G -n backup main <\/strong><\/pre>\n<p>Mo\u017cemy te\u017c utworzy\u0107 logiczny wolumin wykorzystuj\u0105cy ca\u0142\u0105 woln\u0105 powierzchni\u0119 w wirtualnej grupie <strong>main<\/strong>:<\/p>\n<pre>root@server:\/#<strong> lvcreate -l 100%FREE -n backup main <\/strong><\/pre>\n<p>Aby wy\u015bwietli\u0107 logiczne woluminy nale\u017cy wyda\u0107 polecenie:<\/p>\n<pre>root@server:\/#<strong> lvdisplay<\/strong><\/pre>\n<p>Je\u015bli chcemy pozna\u0107 dok\u0142adny rozmiar logicznego woluminu, mo\u017cemy u\u017cy\u0107 poni\u017cszego polecenia wpisuj\u0105c odpowiedni parametr:<br \/>\nm &#8211; megabajty<br \/>\ng &#8211; gigabajty<br \/>\nt &#8211; terabajty.<\/p>\n<pre>root@server:\/#<strong> lvs --units m<\/strong><\/pre>\n<p>Sformatowa\u0107 utworzony wolumin logiczny o nazwie <strong><em>backup<\/em><\/strong> mo\u017cemy poni\u017cszym poleceniem:<\/p>\n<pre>root@server:\/#<strong> \u00a0mkfs.ext4 -m 0 \/dev\/main\/backup<\/strong><\/pre>\n<p>W celu utworzenia Logicznych partycji mo\u017cna u\u017cy\u0107 komendy pvcreate dla ca\u0142ego dysku \/dev\/sdc lub utworzy\u0107 partycje np. programem cfdisk (jak w przyk\u0142adzie), a p\u00f3\u017aniej komend\u0105 pvcreate utworzy\u0107 partycje, kt\u00f3re mog\u0105 by\u0107 wykorzystane do zbudowania Wirtualnej grupy.<\/p>\n<pre>root@server:\/#<strong> pvcreate \/dev\/sdb1<\/strong>\r\nroot@server:\/#<strong> pvcreate \/dev\/sdb2<\/strong><\/pre>\n<p>wy\u015bwietlenie fizycznych partycji odpowiednio: wszystkich, dla sdc1 o sdc2<\/p>\n<pre>root@server:\/# <strong>pvdisplay<\/strong>\r\nroot@server:\/# <strong>pvdisplay \/dev\/sdc1<\/strong>\r\nroot@server:\/# <strong>pvdisplay \/dev\/sdc1<\/strong><\/pre>\n<p>Zwi\u0119kszenie rozmiaru logicznego woluminu o 40GB wykonamy poni\u017cszym poleceniem:<\/p>\n<pre>root@server:\/# <strong>lvresize -L +40GB \/dev\/main\/backup<\/strong><\/pre>\n<pre>root@server:\/# <strong>lvextend -L +40GB \/dev\/main\/backup<\/strong><\/pre>\n<p>lub wykorzystuj\u0105c ca\u0142\u0105 dost\u0119pn\u0105 powierzchni\u0119 wirtualnej grupy:<\/p>\n<pre>root@server:\/# <strong>lvextend -l +100%FREE \/dev\/main\/backup<\/strong><\/pre>\n<p><span style=\"color: #3366ff;\">Zmiany nazwy logicznego woluminu<\/span> dokonamy jednym z poni\u017cszych polece\u0144:<\/p>\n<pre>root@server:\/# <strong>lvrename \/dev\/main\/backup \/dev\/main\/newname\r\n<\/strong>root@server:\/# <strong>lvrename\u00a0 main backup newname<\/strong><\/pre>\n<p>Od\u015bwie\u017cy\u0107 informacje o utworzonych woluminach mo\u017cemy poni\u017cszym poleceniem:<\/p>\n<pre>root@server:\/# <strong>udevadm trigger<\/strong><\/pre>\n<p>lub<\/p>\n<pre>root@server:\/#<strong> vgscan --mknodes<\/strong><\/pre>\n<p>Po zwi\u0119kszeniu rozmiaru dysku, kt\u00f3ry zawiera partycje i dane, aby nowy rozmiar by\u0142 widoczny dla systemu operacyjnego nale\u017cy wykona\u0107 dodatkowe czynno\u015bci. Je\u015bli na dysku jest tylko jedna partycja uruchamiamy kolejno:<\/p>\n<p>uruchomi\u0107 poni\u017csze polecenia:<\/p>\n<pre>root@server:\/# <strong>e2fsck -f \/dev\/main\/backup\r\n<\/strong>root@server:\/# <strong>resize2fs \/dev\/main\/backup<\/strong><\/pre>\n<p>Je\u015bli na dysku s\u0105 inne partycje (np. swap) powinni\u015bmy w pierwszej kolejno\u015bci wykona\u0107 mapowanie partycji:<\/p>\n<pre>root@server:\/# <strong>kpartx -av \/dev\/main\/backup<\/strong><\/pre>\n<p>otrzymamy wynik podobny do poni\u017cszego:<\/p>\n<pre>add map main-backupp1 (252:1): 0 7811072 linear 252:0 2048\r\nadd map main-backupp2 (252:2): 0 306759680 linear 252:0 7813120<\/pre>\n<p>Nast\u0119pnie jak poprzednio wykonujemy powy\u017csze polecenia jednak tylko dla wybranej i wcze\u015bniej zmapowanej partycji:<\/p>\n<pre>root@server:\/# <strong>e2fsck -f \/dev\/mapper\/main-backupp2<\/strong>\r\nroot@server:\/# <strong>resize2fs \/dev\/mapper\/main-backupp2<\/strong><\/pre>\n<p>Ostatnim krokiem jest usuniecie mapowania:<\/p>\n<pre>root@server:\/# <strong>kpartx -d \/dev\/main\/backup<\/strong><\/pre>\n<p>Usun\u0105\u0107 logiczny wolumin o nazwie <em><strong>backup<\/strong><\/em> z grupy <em><strong>main<\/strong><\/em> mo\u017cemy poni\u017cszym poleceniem<\/p>\n<p>root@server:\/# <strong>lvremove \/dev\/main\/backup<\/strong><\/p>\n<p>Je\u017celi po wydaniu powy\u017cszego polecenia otrzymamy komunikat podobny do poni\u017cszego:<\/p>\n<pre>  Logical volume main\/backup is used by another device.<\/pre>\n<p>Rozwi\u0105zanie jest pod tym <a href=\"https:\/\/www.techmedia.pl\/blog\/lvm-logical-volume-is-used-by-another-device\/\">linkiem<\/a>.<\/p>\n<p><span style=\"color: #3366ff;\">Utworzenie migawki dysku LVM (zachowanie stanu dysku na moment tworzenia migawki):<\/span><\/p>\n<pre>root@server:\/#\u00a0<strong>lvcreate -s -n backup_snap -L 20GB main\/backup<\/strong><\/pre>\n<p><span style=\"color: #3366ff;\">Odtworzenie stanu dysku zachowanego w migawce (Uwaga: dysk backup nie mo\u017ce by\u0107 zamontowany ani u\u017cywany):<\/span><\/p>\n<pre>root@server:\/# <strong>lvconvert --merge main\/backup<\/strong><\/pre>\n<p>Uwaga: po odtworzeniu dysku LVM z migawki jest ona automatycznie usuwana. Je\u015bli chcemy mie\u0107 w dalszym ci\u0105gu zachowany stan dysku LVM na dany moment, zaraz po jego odtworzeniu musimy utworzy\u0107 ponownie migawk\u0119 identycznie jak poprzednio.<\/p>\n<p><span style=\"color: #3366ff;\">Usuni\u0119cie migawki:<\/span><\/p>\n<pre>root@server:\/#\u00a0<strong>lvremove \/dev\/main\/backup_snap<\/strong><\/pre>\n<p>&nbsp;<\/p>\n<p>Dodatkowe parametry polece\u0144:<\/p>\n<p>root@server:\/# <strong>man vgdisplay <\/strong>root@server:\/# <strong>man lvcreat<\/strong><\/p>\n<p>Dezaktywowanie wszystkie wolumin\u00f3w:<\/p>\n<p>root@server:\/# <strong>vgchange -a n<\/strong><\/p>\n<p>Aktywowanie wszystkich wolumin\u00f3w:<\/p>\n<p>root@server:\/# <strong>vgchange -a y<\/strong><\/p>\n<p>Uszkodzenia fizyczne mo\u017cemy sprawdzi\u0107 programem badblocks z pakietu e2fsprogs):<\/p>\n<p>root@server:\/# <strong>badblocks -s \/dev\/sda<\/strong><\/p>\n<p>Naprawa systemu plik\u00f3w:<\/p>\n<p>root@server:\/# <strong>fsck.ext2 <\/strong>root@server:\/# <strong>fsck.reiserfs <\/strong>root@server:\/# <strong>fsck.vfat <\/strong>root@server:\/# <strong>fsck.jfs <\/strong>root@server:\/# <strong>xfs_repair<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wa\u017cne poj\u0119cia: LVM &#8211; Logical Volume Manager (Menad\u017cer Wolumin\u00f3w Logicznych), jest to system zaawansowanego zarz\u0105dzania przestrzeni\u0105 dysku. Jest on o wiele bardziej elastyczny, ni\u017c klasyczne partycje dyskowe. PV &#8211; Physical Volume (Woluminy fizyczny, partycja fizyczna), s\u0105 bezpo\u015brednio zwi\u0105zane z partycjami na dyskach (np. \/dev\/hda1, \/dev\/sdb3), kt\u00f3re mo\u017cemy wykorzysta\u0107 do utworzenia wirtualnych grup.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[12],"tags":[250,704,48,161,106],"yst_prominent_words":[696,694,699,690,686,698,689,685,683,597,695,687,697,688,684,682,692,693,700,691],"_links":{"self":[{"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/posts\/54"}],"collection":[{"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/comments?post=54"}],"version-history":[{"count":49,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/posts\/54\/revisions"}],"predecessor-version":[{"id":2772,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/posts\/54\/revisions\/2772"}],"wp:attachment":[{"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/media?parent=54"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/categories?post=54"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/tags?post=54"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/yst_prominent_words?post=54"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}