Author: qwiat
Date: Sat Dec  3 01:41:36 2005
New Revision: 6582

Added:
   PLD-doc/queue/lvm.txt
Log:
- opis LVM


Added: PLD-doc/queue/lvm.txt
==============================================================================
--- (empty file)
+++ PLD-doc/queue/lvm.txt       Sat Dec  3 01:41:36 2005
@@ -0,0 +1,311 @@
+PLD+LVM mini HOWTO
+
+[...]
+
+Zaczynamy
+Na początku podpinamy nowy, czyściutki dysk twardy - to chyba oczywiste :-). 
Jeśli takiego nie mamy - szukamy takiego, gdyż zabaw na aktualnym dysku nie 
polecam (palec się omsknie i dużo danych "w plecy"). Do testów służył leciwy, 
aczkolwiek w zupełności wystarczający Quantum:
+
+hdc: QUANTUM FIREBALL CX13.0A, ATA DISK drive
+hdc: max request size: 128KiB
+hdc: 25429824 sectors (13020 MB) w/418KiB Cache, CHS=25228/16/63, UDMA(66)
+hdc: cache flushes not supported
+
+Partycjonujemy
+Pierwsze primo. O ile się nie mylę musimy jak niegdyś, za dawnych czasów 
przygotować sobie partycję pod /boot. Kiedyś powodem tego były przekraczające 
pewien rozmiar dyski twarde (do tej pory fdisk o tym raportuje - punkt 1) w 
poniżym cytacie), dziś - bootloader nie potrafi ruszyć bezpośrednio z LVM. Musi 
najpierw wystartować, załadować z initrd obsługę LVM i innych rzeczy, dopiero 
na końcu "odpalić" system z /, który siedzi w LVM. [Jeśli nie jest to prawda, 
bądź jest jakaś inna możliwość rozwiązania tego problemu - proszę o kontakt]. 
Po drugie primo: myślę, że 20MB na okołokernelowe drobiazgi w zupełności 
wystarczy - strata miejsca znikoma, tym bardziej, że /boot sformatujemy z opcją 
wyłączającą limity dla roota. Strata więc z posiadania nie-LVM partycji 
znikoma. Trzecie i chyba za razem ostatnie primo ;-) - gdy przyjdzie dołożyć do 
naszego LVM nowy dysk - nie będziemy musieli go nawet fdiskiem dotykać ale o 
tym będzie można poczytać w następnej części :-).
+
+Odpalamy więc fdisk /dev/nasz_dysk i:
+
+The number of cylinders for this disk is set to 25228.
+There is nothing wrong with that, but this is larger than 1024,
+and could in certain setups cause problems with:
+1) software that runs at boot time (e.g., old versions of LILO)
+2) booting and partitioning software from other OSs
+   (e.g., DOS FDISK, OS/2 FDISK)
+
+Command (m for help): n
+Command action
+   e   extended
+   p   primary partition (1-4)
+p
+Partition number (1-4): 1
+First cylinder (1-25228, default 1):
+Using default value 1
+Last cylinder or +size or +sizeM or +sizeK (1-25228, default 25228): +20M
+
+Command (m for help): a
+Partition number (1-4): 1
+
+Resztę dysku przeznaczymy w całości na LVM:
+
+Command (m for help): n
+Command action
+   e   extended
+   p   primary partition (1-4)
+p
+Partition number (1-4): 2
+First cylinder (41-25228, default 41):
+Using default value 41
+Last cylinder or +size or +sizeM or +sizeK (41-25228, default 25228):
+Using default value 25228
+
+Command (m for help): t
+Partition number (1-4): 2
+Hex code (type L to list codes): 8e
+Changed system type of partition 2 to 8e (Linux LVM)
+
+I kończymy pierwszy etap:
+
+Command (m for help): w
+The partition table has been altered!
+
+Calling ioctl() to re-read partition table.
+Syncing disks.
[EMAIL PROTECTED] ~]# fdisk -l /dev/hdc
+
+Disk /dev/hdc: 13.0 GB, 13020069888 bytes
+16 heads, 63 sectors/track, 25228 cylinders
+Units = cylinders of 1008 * 512 = 516096 bytes
+
+   Device Boot      Start         End      Blocks   Id  System
+/dev/hdc1   *           1          40       20128+  83  Linux
+/dev/hdc2              41       25228    12694752   8e  Linux LVM
+
+Formatujemy /boot
+Partycja przygotowana, teraz pora na dalszą część zabawy, czyli sformatowanie 
/dev/hdc1 naszej partycji /boot testowego dysku. Jako, że to jest malutka 
partycja, dodatkowo taka, po której pisać może tylko użytkownik /root - 
wywalimy domyslne ograniczenia dla tego filesystemu (iles tam % zarezerwowane - 
tutaj nie ma to większego znaczenia, problemy - straty - mogą się pojawiać w 
przypadku naprawdę dużych partycji).
+
[EMAIL PROTECTED] ~]# mkfs.ext2 -m0 /dev/hdc1
+mke2fs 1.37 (21-Mar-2005)
+Etykieta systemu plików=
+Typ OS: Linux
+Rozmiar bloku=1024 (log=0)
+Rozmiar fragmentu=1024 (log=0)
+5040 i-węzłów, 20128 bloków
+0 bloków (0.00%) zarezerwowanych dla superużytkownika
+Pierwszy blok danych=1
+3 grup bloków
+8192 bloków w grupie, 8192 fragmentów w grupie
+1680 i-węzłów w grupie
+Kopie zapasowe superbloku zapisane w blokach:
+        8193
+
+Zapis tablicy i-węzłów: zakończono
+Zapis superbloków i podsumowania systemu plików: wykonano
+
+Ten system plików będzie automatycznie sprawdzany co każde 33 montowań
+lub co 180 dni, zależnie co nastąpi pierwsze. Można to zmienić poprzez
+tune2fs -c lub -i.
+
+Pierwsze kroki z LVM
+Z /boot i całą resztą poradziliśmy sobie myślę bezproblemowo :-). Teraz pora 
na zajęcie sie LVM. LVM jak sama nazwa wskazuje to Logical Volume Manager. W 
skrócie, bez wgłębiania się - od tego momentu nie będziemy używać fdisk, nie 
będziemy operować na urządzeniach typu /dev/hdx itp. Mamy za to coś takiego:
+
+hda  -\
+hdc1 -| PV 
+hdd  -| 
+      |   
+LV1 - VG - LVx
+     /  \
+  LV2    LV3
+
+Jak by nie patrzyć są to pewne trzy struktury.
+
+Pierwszy poziom - PV - jest to najniższe, sprzętowe (z tąd to określenie - PV 
- Physical Volume) ogniwo tej całej struktury. Częścią tego może stanowić 
dowolny dysk twardy (w całości), jego partycja (kilka partycji), RAID czy to 
softwareowy czy też sprzętowy.
+
+Następny poziom - LV - logical volume? Spytał by ktoś cóż to takiego? Ano nic 
prostszego - odpowiednik partycji LVM.
+
+Wszystko to zaś trzyma w kupie VG (Volume Group) - dzięki temu mamy wszystko w 
całości, daje się ładnie i zgrabnie administrować. O szczegółach może później, 
żeby bałaganu nie narobić :-).
+
+Na początku pisałem, że dysk musi być czysty. Oczywiście nie zaszkodziło by 
to, ale jest i na to sposób (szybkie wyczyszczenie dysku - jak z fabryki, brak 
tablicy partycji, itp.). Należało by to zrobić również w przypadku, gdybyśmy 
chcieli LVM mieć na całej zawartości dysku (przykładowo całe /dev/hdb), a on, 
paskuda jeden ;-) stwierdził, że nie może, bo jest tablica partycji. Jest 
oczywiście na to proste, aczkolwiek bardzo drastyczne rozwiązanie:
+
+dd if=/dev/zero of=/dev/nasz_dysk bs=1k count=1
+blockdev --rereadpt /dev/nasz_dysk
+
+Opisywać powyższego nie ma co (w razie czego man dd i man blockdev pomogą). No 
może poza tym, że należy koniecznie upewnić się, że jesteśmy pewni, że bawimy 
się na pewno tym dyskiem, o który nam chodzi ;-).
+
+PV, VG, LV, ok, ale jak?
+No to teraz zabawa z LVM dopiero się zaczyna :-). Najpirew inicjalizujemy 
urządzenia PV.
+
[EMAIL PROTECTED] ~]# pvcreate /dev/hdc2
+  Physical volume "/dev/hdc2" successfully created
+
+Zrobione! Teraz pora stworzyć VG - Volume Group.
+
[EMAIL PROTECTED] ~]# vgcreate testowy-vg /dev/hdc2
+  Volume group "testowy-vg" successfully created
+
+W powyższym tworzymy wolumen o nazwie testowy-vg. O i już widzimy pewną 
różnicę. Nie mamy już do czynienia z plikami /dev/hdx czy podobnymi, ale z 
logicznym określeniem miejsca przechowywania plików, że tak to ujmę. (W 
powyższym przykładzie podaliśmy jako parametr dysk /dev/hdc2. Jeśli podamy 
kolejne - nasz VG - Volume Group zwiększy się.)
+
+Teraz pora na LV - logiczne wolumeny. Mówiąc "po staremu" - partycje. Na 
początek proponuję 256M na swap, 2GB na / i 4 GB na home. Tutaj już widzimy, że 
suma tych partycji to raptem około połowa tego, co mogli byśmy uzyskać - dysk 
się marnuje. O tym również w następnej części.
+
[EMAIL PROTECTED] ~]# lvcreate -L256 -nswap testowy-vg
+  Logical volume "swap" created
[EMAIL PROTECTED] ~]# lvcreate -L2000 -nroot testowy-vg
+  Logical volume "root" created
[EMAIL PROTECTED] ~]# lvcreate -L4000 -nhome testowy-vg
+  Logical volume "home" created
+
+Tada! Proste, prawda?
+
+Jak toto zamontowac?
+Z pakietami lvm2-* przychodzi kilka bardzo przydatnych narzędzi. Poniżej 
przedstawiam wynik działania jednego z nich. Założyliśmy trzy LV. Możemy się 
czegoś o nich dowiedzieć komendą lvdisplay:
+
[EMAIL PROTECTED] ~]# lvdisplay
+--- Logical volume ---
+LV Name                /dev/testowy-vg/swap
+VG Name                testowy-vg
+LV UUID                Ou9Hk4-KPTn-h1c0-Ywss-VFSb-rAnk-Pkn2xj
+LV Write Access        read/write
+LV Status              available
+# open                 0
+LV Size                256,00 MB
+Current LE             64
+Segments               1
+Allocation             inherit
+Read ahead sectors     0
+Block device           254:0
+
+--- Logical volume ---
+LV Name                /dev/testowy-vg/root
+VG Name                testowy-vg
+LV UUID                dh5fJb-VRwx-GJkL-PdAW-J2V5-J3Ze-lTCAxu
+LV Write Access        read/write
+LV Status              available
+# open                 0
+LV Size                1,95 GB
+Current LE             500
+Segments               1
+Allocation             inherit
+Read ahead sectors     0
+Block device           254:1
+
+--- Logical volume ---
+LV Name                /dev/testowy-vg/home
+VG Name                testowy-vg
+LV UUID                2tbdip-WhQB-REFZ-kdKM-uAOy-M2LX-c3Cf41
+LV Write Access        read/write
+LV Status              available
+# open                 0
+LV Size                3,91 GB
+Current LE             1000
+Segments               1
+Allocation             inherit
+Read ahead sectors     0
+Block device           254:2
+
+Pierwsze, co rzuca się w oczy to:
+
+LV Name                /dev/testowy-vg/swap
+VG Name                testowy-vg
+
+Oraz to:
+
+LV UUID                Ou9Hk4-KPTn-h1c0-Ywss-VFSb-rAnk-Pkn2xj
+
+Pierwsza linia to nic innego jak nazwa wolumenu, który mu nadaliśmy, druga zaś 
opisuje, w którym VG ona się znajduje. Jednocześnie to /dev/testowy-vg/swap 
jest urządzeniem, które możemy podmontować.
+
+Dla niewiernych mały dowodzik:
+
[EMAIL PROTECTED] ~]# mkswap /dev/testowy-vg/swap
+Setting up swapspace version 1, size = 268431 kB
[EMAIL PROTECTED] ~]# swapon /dev/testowy-vg/swap
+
+Jak widać działa :-).
+
+Prawda, że milusie ;-) ? Nigdy więcej zastanawiania się... "Gdzie to było? Na 
hdc5 czy może hdb2?". Pytanie co to za koszmarne krzaki po LV UUID? Ano jak się 
okazuje prosta sprawa. Unikalny identyfikator wolumenu. Dzięki temu możemy 
sobie pozamieniać dyski miejscami (pomijając chyba ten z którego startujemy) i 
LVM dzięki tym "krzakom" "poskłada się do kupy".
+
+No to teraz zobaczmy, co znajduje się nowopowstałym /dev/testowy-vg:
+
[EMAIL PROTECTED] ~]# ls /dev/testowy-vg/
+home  root  swap
+
+Tak, tak... To nasze gotowe do używania LVM-partycje :-). Teraz proponuję we 
własnym zakresie sformatować pozostałe, po czym przejść do następnego punktu. 
Ja do tych testów wybrałem reiserfs.
+
+Instalujemy PLD
+Będzie to dość popularna instalacja - za pomocą chroota.1)
+
+Poniżej kilka kroków do wykonania:
+
[EMAIL PROTECTED] ~]# mkdir /chroot
[EMAIL PROTECTED] ~]# mount /dev/testowy-vg/root /chroot/
[EMAIL PROTECTED] ~]# mkdir /chroot/boot
[EMAIL PROTECTED] ~]# mkdir /chroot/home
[EMAIL PROTECTED] ~]# mkdir /chroot/proc
[EMAIL PROTECTED] ~]# mkdir /chroot/sys
[EMAIL PROTECTED] ~]# mount /dev/testowy-vg/home /chroot/home/
[EMAIL PROTECTED] ~]# mount /dev/hdc1 /chroot/boot/
[EMAIL PROTECTED] ~]# mount /proc /chroot/proc -obind
[EMAIL PROTECTED] ~]# mount /sys /chroot/sys -obind
+
+Do instalacji użyjemy poldka:
+
[EMAIL PROTECTED] ~]# poldek -nac -nac-ready --mkdir --root=/chroot -i poldek 
bash vim lvm2-*
+
+Linia może ciut długa, ale zapewniam - nie robi nic strasznego. Na początku 
ustawiamy, że chcemy korzystać ze źródeł ac oraz ac-ready, mkdir oznacza, że w 
naszym chroocie utworzona zostanie baza danych rpm, -root - chyba wiadomo - w 
tamtym miejscu instalować będziemy naszą dystrybucję. Na koniec pozostaje -i 
lista pakietów. Lista pakietów to ni mniej ni więcej tylko to, co to określenie 
znaczy ;-). Zainstalowane zostaną wraz z zależnościami wszystkie podane tam 
pakiety. Teraz w zależności od posiadanego łącza możemy iść zrobić sobie kawę, 
lub w przypadku sdi jak ja - na spacer albo zdrzemnąc się ;-).
+
+Skończył? Dobrze. Następny krok to zachrootowanie się do naszego nowego 
systemu. Najpierw jednak przekopiujemy nasz plik /etc/resolv.conf do 
/chroot/etc/resolv.conf. Gdybyśmy tego nie zrobili - system, w tym i poldek nie 
potrafił by rozwiązywać nazw na numery IP. Skoro to już mamy - pora się 
chrootować.
+
[EMAIL PROTECTED] ~]# chroot /chroot/ /bin/bash
+
+Edytujemy plik /etc/poldek.conf, odkomentowujemy źródło ac-ready, ustawiamy 
wedle woli adresy (bywa, że dużo bardziej opłaca ściągać pakiety z mirrorów), 
zapisujemy. Następnie musimy doinstalować jeszcze kilka pakietów. Ot choćby 
kernel, lilo, reiserfsprogs itp. Zazwyczaj braki wychodzą w tzw. "praniu". Nim 
pakiety zaczną się ściągać będzieli musieli poczekać, aż ściągną sie indeksy 
poldka (opcja -upa).
+
[EMAIL PROTECTED] /]# poldek --upa -nac -nac-ready
+
+Jak już skończy ściągać zaczynamy instalować brakujące pakiety. Kompletną 
listę pakietów przykładowego systemu znaleźć można tutaj (wyjście z rpm 
-qa|sort). Następnym etapem będzie wygenerowanie pliku modprobe.conf,
+
[EMAIL PROTECTED] ~]# generate-modprobe.conf >/etc/modprobe.conf
+
+oraz stworzenie initrd, końcowa konfiguracja - plik /etc/fstab i bootloadera - 
w tym przypadku lilo. Nasz przykładowy plik /etc/fstab powinien wyglądać mniej 
więcej tak:
+
+/dev/testowy-vg/swap    swap     swap       defaults    0 0
+/dev/testowy-vg/root    /        reiserfs   defaults    1 1
+/dev/testowy-vg/home    /home    reiserfs   defaults    1 1
+/dev/hdc1               /boot    ext2       defaults 1 1
+
+none    /proc                   proc    defaults,noauto,gid=17    0 0
+none    /sys                    sysfs   defaults,noauto,gid=17    0 0
+none    /proc/bus/usb           usbfs   defaults,noauto           0 0
+none    /dev                    devfs   defaults,noauto           0 0
+none    /dev/pts                devpts  gid=5,mode=620            0 0
+#none    /dev/shm                tmpfs   mode=1777,nosuid,nodev,noexec    0 0
+
+/dev/fd0      /media/floppy    auto  user,noauto     0 0
+/dev/cdrom    /media/cdrom     auto  users,noauto    0 0
+
+# Examples for mount vfat and ntfs patritions using fsctrl group
+#/dev/hdXX    /mnt/ntfs  ntfs  
user,noauto,umask=002,uid=0,gid=28,iocharset=iso8859-2 0 0
+#/dev/hdXX    /mnt/vfat  vfat  
user,noauto,umask=002,uid=0,gid=28,iocharset=iso8859-2,codepage=852,exec,showexec
 0 0
+
+Następnym etapem jest wygenerowanie initrd. Najpierw jednak musimy odpowiednio 
przygotować konfigurację geninitrd. Edytujemy plik /etc/sysconfig/geninitrd, 
znajdujemy, oraz poprawiamy poniższą linię:
+
+PREMODS="dm-mod"
+
+Nie zaszkodzi również dodać następującą linijkę:
+
+LVMTOOLSVERSION=2
+
+zapisujemy i następnie generujemy initrd:
+
[EMAIL PROTECTED] ~]# geninitrd --with-insmod-static /boot/initrd-lvm `uname -r`
+
+Następnym krokiem jest przygotowanie lilo.conf. Mój przykładowy wygląda tak:
+
+default=pld_lvm
+timeout=20
+boot=/dev/hdc
+prompt
+menu-title="PLD Linux Distribution"
+menu-scheme = "wk:kc:ck:Ck"
+read-only
+lba32
+
+image=/boot/vmlinuz
+  root=/dev/testowy-vg/root
+  label=pld_lvm
+  initrd=/boot/initrd-lvm
+
+Uruchamiamy lilo, jeśli wszystko pójdzie jak należy restartujemy komputer. 
Uruchamiamy system z /dev/hdc (secondary master) i... powinno ruszyć... już na 
LVM :-). Oczywiście gdy skończymy naukę narzędzi i możliwości LVM zechcemy 
pewnie się na niego przesiąść (a nie jak ja teraz - trzymać go "na boku"). 
Należało by więc w takim przypadku opisany tutaj system "przepiąć" na 
odpowiednią tasiemkę, uruchomić płytkę lub dysk ratunkowy, zachrootować się 
gdzie trzeba. Pozmieniać odpowiednio /etc/fstab, /etc/lilo.conf, uruchomić lilo 
i cieszyć się z przesiadki :-).
+
+W tej części tyle. Ewentualne zmiany dotyczyć będą błędów, lub innych ważnych 
rzeczy (inne sposoby na wykonanie czegoś, byćmoże jakieś szersze wyjaśnienia 
itp.).
+
+$Author: snurf $, $Revision: 1.41 $, $Date: 2005/08/04 09:07:10 $
+
+1) Cytując za podręcznikiem systemowym man: Normalnie nazwy plików szukane są 
od głównego katalogu (korzenia) struktury katalogów, tj. "/". chroot zmienia 
katalog główny na zadany katalog (musi on istnieć) a następnie uruchamia 
polecenie z opcjonalnie podanymi argumentami. W skrócie rzecz ujmując polecenie 
chroot umożliwia uruchomienie "systemu w systemie".
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to