Z okazji zmiany dysku na większy chciałem w ramach zyskania nowych doświadczeń przenieść system na LVMa.
Przyjąłem założenie, że LVM zostanie zainstalowany na zdegradowanym raidzie, łatwiej jest potem dołożyć nowy dysk, niż kombinować jak przenieść LVM na raida (chociaż według opisu http://akademia.linuksa.pl/readme/lvm/ nie jest to zbyt problematyczne) . Bootloader GRUB w obecnej, szeroko dostępnej wersji (~0.97) nie obsługuje LVM więc partycja /boot będzie umieszczona bezpośrednio na raidzie. Również poza LVM zostanie umieszczona root partycja czyli / . Wynika to z tego, że mam dużą niechęć do initrd , a jest on niestety niezbędny aby powstał system z główną partycją umieszczoną na LVM.
O to jak to zrobiłem to na gentoo:
( O „emerge lvm2” i „rc-update add lvm boot” nie będe wspominał ;) )
Dysk ma pojemność 250GB, podzieliłem go na takie partycje:
Device Boot Start End Blocks Id System
/dev/sdc1 * 1 73 586341 83 Linux
/dev/sdc2 74 30103 241215975 5 Extended
/dev/sdc5 74 13690 109378521 fd Linux raid autodetect
/dev/sdc6 13691 29252 125001733+ fd Linux raid autodetect
/dev/sdc7 29253 29434 1461883+ fd Linux raid autodetect
/dev/sdc8 29435 30103 5373711 fd Linux raid autodetect
sdc1 to będzie partycja /boot
sdc5 i sdc6 to będą partycje pod lvm
sdc7 to swap
sdc8 będzie partycją / (przeznaczyłem na nią 5.5G aby nie martwić się jak ją powiększyć,)
I na wszelki wypadek zostawiłem 2.4G wolnego miejsca. Root partycję umieściłem właśnie na końcu i po niej zostawiłem to wolne miejsce dodatkowo po to aby np. właśnie móc powiększyć tą partycję,
Zrobiłem dwie mniejsze partycje LVMowe zamiast jednej dużej, ponieważ nie jestem pewny czy nie najdzie mnie ochota zrobić raida używając mniejszych dysków znajdujących się w szufladzie.
Teraz pora zrobić raida:
mdadm -C –bitmap=internal -l 1 -f -n 1 /dev/md1 /dev/sdc1
i tak po kolei wszystkie partycje.
Robimy swapa, partycję /boot oraz / używając preferowanego systemu plików:
mkswap -L swap1 /dev/md7
mkfs.ext3 -L bootl /dev/md1
mkfs.ext3 -L rootl /dev/md8
Następnie:
vgscan -v
Co utworzy nam pliki konfiguracyjne ze wzorca oraz utworzy pozostałe potrzebne do działania pliki i katalogi.
A teraz instalujemy GRUBa:
mount /dev/md1 /mnt/temp
(wole rsync od cp)
rsync -av /boot/ /mnt/floppy/
grub –no-floppy /dev/md1
grub> root (hd2,0)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd2)
Checking if „/boot/grub/stage1” exists… yes
Checking if „/boot/grub/stage2” exists… yes
Checking if „/boot/grub/e2fs_stage1_5” exists… yes
Running „embed /boot/grub/e2fs_stage1_5 (hd2)”… 20 sectors are embedded.
succeeded
Running „install /boot/grub/stage1 (hd2) (hd2)1+20 p (hd2,0)/boot/grub/stage2 /boot/grub/menu.lst”… succeeded
Done.
grub>quit
Poprawiamy grub.conf (root=/dev/md8) i pamiętamy aby nie nadpisać tego pliku podczas kopiowaniu całego systemu na nowy dysk.
umount /mnt/temp
pvcreate /dev/md5
pvcreate /dev/md6
vgcreate -s 32M vg56 /dev/md5 /dev/md6
Czyli tworzę dwa woluminy fizyczne, a potem tworzę grupę woluminów z nich obu. I ważna uwaga! Należy zwrócić uwagę na parametr po -s , jest to wielkość bloku fizycznego w grupie woluminów. Jego znaczenie jest bardzo istotne, od niego zależy maksymalna wielkość grupy woluminów. Wynosi ona 65536 * wielkość_bloku_fizycznego , a domyślną jego wartością jest 4M. Co daje nam max. rozmiar 256G, trochę mało. A zmiana tego parametru w czasie pracy jest o ile mi wiadomo, niemożliwa.
Przyszła pora na tworzenie woluminów logicznych:
lvcreate -L3G -n usrvl vg56
Logical volume „usrvl” created
czyli wolumin o rozmiarze 3G , z etykietą „usrlv” na grupie woluminów o nazwie vg56.
(tworzymy sobie tyle woluminów ile potrzebujemy)
teraz można już sformatować sobie partycję swoim ulubionym systemem plików.
Np. mkfs.ext3 -L root /dev/vg56/rootlv
Tworzymy tak samo pozostałe partycję, podmontowujemy sobie nowe drzewko i kopiujemy cały system.
Następnie uruchamiamy, poprawiamy literówki itp. I cieszymy się nową jakością w zarządzaniu miejscem.
Podczas pisania (i migrowania) podpierałem się bardzo mocno artykułem
http://www.eioba.pl/a70652/konfiguracja_i_objasnienie_raid_oraz_lvm
kondensując i dopasowując do konkretnego przypadku i do konkretnej dystrybucji.