Zasada działania LVM jest dość prosta do zrozumienia. Wszystkie partycje wchodzące w skład naszego systemu nazywać będziemy woluminami fizycznymi (ang. phisical volume). Na rysunku przedstawione są one jako sdc1 oraz sdd1. Jak nazwa wskazuje są to fizyczne jednostki podziału dysku. Partycje grupowane są przez LVM w tzw. grupy woluminów (ang. volume group). Grupy woluminów można porównać do wirtualnych dysków, którymi będziemy operować z poziomu LVM. Na każdym z takich wirtualnych dysków tworzyć będziemy tzw. woluminy logiczne (ang. logical volume) będące swego rodzaju wirtualnymi partycjami, które z kolei będą mogły być powiększane lub zmniejszane na życzenie. Na naszym przykładowym rysunku stworzyliśmy tylko jedną grupę woluminów ale równie dobrze mogliśmy stworzyć ich więcej.
W jednym z projektów miałem do wykonania LVM na Raid1 softwarowym – chodziło o pełny backup danych (raid 1) ale z możliwością rozbudowy wielkości partycji o nowe dyski (LVM).
Nasz schemat będzie trochę inny – dwie partycje RAID1 (md0 i md1), na md1 będzie utworzony PV LVM, oraz dla utrudnienia – robimy to na działającym systemie :)
Przed rozpoczęciem prac należy zainstalować kilka wymaganych pakietów:
$ apt-get install mdadm lvm2 reiserfsprogs mkinitramfs
Rzut na fdisk nowego dysku:
$ fdisk -l /dev/sdb Dysk /dev/sdb: 250.1 GB, bajtów: 250059350016 głowic: 255, sektorów/ścieżkę: 63, cylindrów: 30401 Jednostka = cylindrów, czyli 16065 * 512 = 8225280 bajtów Identyfikator dysku: 0x00022fbd Urządzenie Rozruch Początek Koniec Bloków ID System /dev/sdb1 1 15 120456 fd Linux RAID autodetect /dev/sdb2 16 258 1951897+ 82 Linux swap / Solaris /dev/sdb3 259 30401 242123647+ fd Linux RAID autodetect
Następnym krokiem jest utworzenie mirrorów (z brakującym jednym dyskiem):
$ mdadm --create /dev/md0 --level 1 --raid-devices=2 missing /dev/sdb1 $ mdadm --create /dev/md1 --level 1 --raid-devices=2 missing /dev/sdb3
Mirror md0 posłuży nam jako /boot, natomiast md1 będzie jako wolumen fizyczny (PV) LVM.
$ mkreiserfs /dev/md0 $ pvcreate /dev/md1 $ vgcreate rtr /dev/md1
(nazwa grupy – tu rtr – może być dowolna, warto użyć czegoś w miarę nietypowego, a przynajmniej innego niż częste w dokumentacji vg – jeśli będziemy kiedykolwiek musieli przełożyć dyski do innego komputera, nie podmontujemy ich jeśli będzie na nim grupa o tej samej nazwie)
$ lvcreate --size 28G --name root rtr Logical volume "root" created $ mkreiserfs /dev/mapper/rtr-root $ lvcreate --size 15G --name rvar rtr Logical volume "var" created $ mkreiserfs /dev/mapper/rtr-var $ lvcreate --size 180G --name home rtr Logical volume "home" created $ mkreiserfs /dev/mapper/rtr-home
Modyfikujemy gruba aby wystartował z dyskami LVM (/boot/grub/menu.lst):
title Debian GNU/Linux, kernel 2.6.26-2-686 root (hd0,0) kernel /vmlinuz-2.6.26-2-686 <strong>root=/dev/mapper/rtr-root</strong> ro initrd /initrd.img-2.6.26-2-686
Generujemy initrd:
$ mkinitramfs -o /boot/initrd.img-$(uname -r)-raid $(uname -r)
Teraz już tylko podmontowanie partycji i skopiowanie danych:
$ mkdir /rmd $ mount /dev/mapper/rtr-root /rmd/ $ mkdir /rmd/boot $ mkdir /rmd/home $ mkdir /rmd/var $ mount /dev/md0 /rmd/boot/ $ mount /dev/mapper/rtr-home /rmd/home/ $ mount /dev/mapper/rtr-var /rmd/var # Kopiujemy dane $ rsync -auHx --exclude=/proc/* --exclude=/sys/* --exclude=/rmd /* /rmd/
Przygotowanie wpisu w fstab (/rmd/etc/fstab):
proc /proc proc defaults 0 0 /dev/mapper/rtr-root / reiserfs defaults 0 1 /dev/md0 /boot reiserfs notail 0 2 /dev/mapper/rtr-home /home reiserfs defaults,noexec,nosuid,nodev 0 2 /dev/mapper/rtr-var /var reiserfs defaults 0 2 tmpfs /tmp tmpfs defaults,size=100M,noexec,nosuid,nodev 0 0 /dev/sda2 none swap sw 0 0 /dev/sdb2 none swap sw 0 0
Restartujemy maszynę, po restarcie powinna ładnie wstać z naszych macierzy:
$ mount /dev/mapper/rtr-root on / type reiserfs (rw) tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) procbususb on /proc/bus/usb type usbfs (rw) udev on /dev type tmpfs (rw,mode=0755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620) /dev/md0 on /boot type reiserfs (rw,notail) /dev/mapper/rtr-home on /home type reiserfs (rw,noexec,nosuid,nodev) /dev/mapper/rtr-var on /var type reiserfs (rw) tmpfs on /tmp type tmpfs (rw,noexec,nosuid,nodev,size=100M)
Teraz pozostało tylko przydzielić pierwszy dysk (sda) do macierzy, należy skopiować ustawienia partycji z sdb:
$ sfdisk -d /dev/sdb | sfdisk /dev/sda
Dodanie dysków do macierzy mirroru:
$ mdadm /dev/md0 -a /dev/sda1 $ mdadm /dev/md1 -a /dev/sda3 ~ # cat /proc/mdstat Personalities : [raid1] md1 : active raid1 sda3[0] sdb3[1] 242123520 blocks [2/2] [UU] [==============>......] resync = 70.4% (170589952/242123520) finish=34.0min speed=34983K/sec md0 : active raid1 sda1[0] sdb1[1] 120384 blocks [2/2] [UU] unused devices: <none> </none>
W efekcie otrzymaliśmy LVM zrobiony na partycjach RAID1. Wiem, że LVM ma możliwość (pvcreate -i) robienia własnego RAID1, jak również RAID 0 (), tak samo wiem, że nowy Grub potrafi odczytać partycję /boot z poziomu LVM.



Dzięki za opis/tutorial jednak gdy próbowałem to zestawić tak jak tu opisałeś, to na systemach z rodziny RedHat (na takich tworzyłem) trzeba przed wygenerowaniem (mkinitrd) ustawić tablicę partycji fstab oraz opcja mtab inaczej LVM nie podniesie się. Pozdrawiam
Witaj!
Czy jest jakaś przyczyna z której użyłeś w przykładzie systemu plików reiserfs? Próbowałem akurat dziś zrobić to samo w SL 6 tylko że z systemem ext4 i nie montuje mi się / z LVM na raid1…. no i szukając w necie przyczyny trafiłem na ten przykład ale… jak widzę wszystko zrobiłem tak samo oprócz użycia innego systemu plików… Pozdrawiam
W tym przykładzie użyłem reiser z powodu prostoty przy jego zwiększaniu – wystarczy tylko zwiększyć partycje a nie trzeba odmontowywać systemu plików.
Niedawno zrobiłem nową maszynę z ext4 na pokładzie, bez najmniejszych problemów. Samo montowanie partycji, nie musi mieć związek z LVM – jeżeli widać partycje (komenda lvs), i są prawidłowo sformatowane (mkfs.ext4), to raczej powinno się dać zamontować bez problemów.
Jaki komunikat błędu się pojawia?
[...] This post was mentioned on Twitter by Ciacho. Ciacho said: Nowy post: RAID 1 i LVM, w jednym pudle stały… http://wp.me/pIjg2-ll [tagi: #configi, #tutorial, #raid, #macierze-dyskowe] [...]
[...] reklama Ciacho przed chwilą Opis instalacji LVM na raid1 ciacho.pl/…d-1-i-lvm-w-jednym-pudle-… [...]