5

RAID 1 i LVM, w jednym pudle stały…

Opublikowane 24 marca. 2010 w Linux otagowane , , , przez Ciacho
nas2

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).

LVM na dyskach RAID1

Schemat macierzy jaką stworzymy

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.

Ikona wpisu autorstwa tigerplish

REKLAMA

Komentarzy: 5 na razie.

  1. Gravatar
    Michał pisze:

    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

  2. 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

    • Gravatar
      Ciacho pisze:

      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?

  3. [...] 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] [...]

  4. [...] reklama Ciacho przed chwilą Opis instalacji LVM na raid1 ciacho.pl/…d-1-i-lvm-w-jednym-pudle-… [...]

Zostaw komentarz





Powiadom mnie o odpowiedziach
CommentLuv badge

Pamiętaj: Na mojej stronie działa system cachowania oraz filtr antyspamowy. Twój komentarz może się pojawić na stronie z pewnym opóźnieniem - cierpliwości.
Pod postami dyskutujemy tylko o ich stronie merytorycznej. Jeśli zauważycie jakiś błąd na stronie, zgłoś ten fakt za pomocą formularza. Avatary pochodzą z serwisu Gravatar.