środa, 28 stycznia 2009

Linux full backup & restore w praktyce 2

Sytuacja wyjściowa - mamy serwer na FC6.
Chcemy go zwirtualizować do środowiska testowego w ramach Virtual PC 2007.


Konfiguracja dysków/partycji:

------------------------------------------------------------------------

#fdisk -l

Disk /dev/hda: 10.1 GB, 10110320640 bytes
255 heads, 63 sectors/track, 1229 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 1229 9767520 8e Linux LVM

#df -H

System plików rozm. użyte dost. %uż. zamont. na
/dev/mapper/VolGroup00-LogVol00
9,2G 3,0G 5,8G 34% /
/dev/hda1 104M 17M 82M 18% /boot
tmpfs 131M 0 131M 0% /dev/shm

#lvm
lvs Display information about logical volumes
lvm> lvs


LV VG Attr LSize Origin Snap% Move Log Copy%
LogVol00 VolGroup00 -wi-ao 8,78G
LogVol01 VolGroup00 -wi-ao 512,00M


dumpconfig Dump active configuration
lvm> dumpconfig


devices {
dir="/dev"
scan="/dev"
filter="a/.*/"
cache="/etc/lvm/.cache"
write_cache_state=1
sysfs_scan=1
md_component_detection=1
}
activation {
missing_stripe_filler="/dev/ioerror"
reserved_stack=256
reserved_memory=8192
process_priority=-18
mirror_region_size=512
mirror_log_fault_policy="allocate"
mirror_device_fault_policy="remove"
}
global {
umask=63
test=0
activation=1
proc="/proc"
locking_type=1
fallback_to_clustered_locking=1
fallback_to_local_locking=1
locking_dir="/var/lock/lvm"
}
shell {
history_size=100
}
backup {
backup=1
backup_dir="/etc/lvm/backup"
archive=1
archive_dir="/etc/lvm/archive"
retain_min=10
retain_days=30
}
log {
verbose=0
syslog=1
overwrite=0
level=0
indent=1
command_names=0
prefix=" "
}

#vgdisplay

--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 9,31 GB
PE Size 32,00 MB
Total PE 298
Alloc PE / Size 297 / 9,28 GB
Free PE / Size 1 / 32,00 MB
VG UUID auUAps-FNGc-LzyH-nrlD-kIGs-DBEl-zneb6r

# lvdisplay

--- Logical volume ---
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID RPJr3U-bMrm-R0dk-TrYi-QHYU-q0qd-tlRVIu
LV Write Access read/write
LV Status available
# open 1
LV Size 8,78 GB
Current LE 281
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0

--- Logical volume ---
LV Name /dev/VolGroup00/LogVol01
VG Name VolGroup00
LV UUID rRaoSO-38zd-q2mU-Od5y-tCV2-CsWx-TL3M2r
LV Write Access read/write
LV Status available
# open 1
LV Size 512,00 MB
Current LE 16
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:1

#cat /etc/fstab

/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
/dev/VolGroup00/LogVol01 swap swap defaults 0 0

------------------------------------------------------------------------

Przede wszystkim przygotowujemy zrzuty plików naszego systemu który chcemy przenieść:

tar cvpjf /root/backup/backup_all.tar.bz2 --exclude=/proc --exclude=/boot --exclude=/lost+found --exclude=/root/backup/backup_all.tar.bz2 --exclude=/mnt --exclude=/sys /
tar cvpjf /root/backup/backup_boot.tar.bz2 /boot

Tak przygotowane obrazy udostępniamy przez SSH maszynie docelowej.

Do całego procesu "przywracania" serwera w wirtualnym środowisku użyjemy Sidux'a.

Podczas odpalania naszego LiveCD w parametrach uruchomieniowych dopisujemy ' xmodule=vesa' celem zapewnienia kompatybilnosci z naszym środowiskiem testowym w postaci VirtualPC 2007.

Opdalamy terminal na prawach root'a

Przygotowujemy nasz dysk wirtualny z VirtualPC za pomocą fdiska.

Zakładamy dwie partycje podstawowe :

/dev/sda1 - 100MB - docelowo na ext3 - ustawiamy flagę BOOT
/dev/sda2 - reszta miejsca - docelowo na Linux LVM

czyli pierwsza partycja:

#fdisk /dev/sda
>n
>1
>+100M
>a
>1

druga partycja:

>n
>2
>
>
>t
>2
>8e

>w

Upewniamy się że wszystko OK:

#fdisk -l /dev/sda

Następnie:

pvcreate /dev/sda2
vgcreate VolGroup00 /dev/sda2
lvcreate -L 15G -n LogVol00 VolGroup00
lvcreate -L 512M -n LogVol01 VolGroup00

Formatujemy:

mkfs.ext3 /dev/mapper/VolGroup00-LogVol00

mkswap /dev/mapper/VolGroup00-LogVol01
swapon /dev/mapper/VolGroup00-LogVol01

Podłączamy naszą partycję docelową dla plików:
mkdir /mnt/dysk
mount /dev/mapper/VolGroup00-LogVol00 /mnt/dysk

Podłączamy nasze źródło plików:
mkdir /mnt/backup
sshfs root@host:/root/backup /mnt/backup

Rozpakowujemy pliki:
tar xvpfj /mnt/backup/backup_all.tar.bz2 -C /mnt/dysk/

Podłączamy naszą partycję docelową boot:
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot

Rozpakowujemy pliki:
tar xvpfj /mnt/backup/backup_boot.tar.bz2 -C /mnt/

Odmontowujemy backup co by nas nie korciło:
umount /mnt/backup

Odtwarzamy katalogi wyłączone z backupowania:
cd /mnt/dysk
mkdir proc
mkdir lost+found
mkdir mnt
mkdir sys

Zmianie delikatnie uległa struktura dysków, zatem musimy się ewentualnie przyjrzeć plikom
/boot/grubmenu.lst
/etc/fstab
/etc/mtab
/etc/blkid/blkid.tab
/etc/blkid/blkid.tab.old
/etc/lvm/.cache

W związku z wystąpieniem błędu "fsck.ext3 Unable to resolve 'LABEL=/boot'" koniecznym okazało się wykonanie poleceń:

e2label /dev/hda1 /boot
tune2fs -L /boot /dev/hda1

Prawdopodobnie jedno z powyższych jest zbędne :)
Równie prawdopodobna jest konieczność utworzenia na dysku /dev/mapper/VolGroup00-LogVol00 katalogu /boot

Odmontowujemy wszystkie podłączone zasoby i reboot

Ustawiamy ponownie GRUB'a na dysku /dev/sda1

- odpalamy LiveCD
- w bootmenu - 2x ESC
- wciskamy 'c' - linia komend grub'a
- root (hd0,0)
- setup (hd0)
- halt

Odłączamy obraz LiveCD i bootujemy się z naszego wirtualnego dysku. Żeby nic się nie mieszało w naszej infrastrukturze odłączamy sieć dla wirtualnej maszyny.

Wskazówka: przy problemach z grafiką parametr grub'a 'vga=769' powoduje uruchomienie w rozdzielczosci 640x40x8bit.
Wskazówka#2: przy problemach z zalogowaniem się, parametr grub'a 'single' powoduje uruchomienie w trybie linux single user

Potencjalne problemy:

1) podczas logowania w CLI jest dokonywana autoryzacja, ale nie startuje nam bash i wracamy do logowania:

Last login Thu Aug 30 19:17:23 on tty1
audit (1188526650.254:17): avc: denied {entrypoint} for pid=2575 comm= "login
" name="bash" dev=dm-0 ino=107315213 scontext= user_u: system_r: hotplug_t: s0 tcont
ext= system_u: object_r: file_t: s0 tclass= file
login: no shell: Permission denied.
login: couldn't exec shell script: Permission Denied

Wskazówka: http://forums.fedoraforum.org/showthread.php?p=857325

Przyczyny:

Archiving Files with star
http://docs.fedoraproject.org/selinux-user-guide/f10/en-US/sect-Security-Enhanced_Linux-Maintaining_SELinux_Labels_-Archiving_Files_with_star.html

The UnOfficial SELinux FAQ
http://www.crypt.gen.nz/selinux/faq.html

Rozwiązanie nieeleganckie:
wyłączenie SELinuxa w /etc/selinux/config poprzez ustawienie dyrektywy SELINUX=disabled

Rozwiązanie bardziej eleganckie (prawdopodobnie):
pierwotna archiwizacja plików przez polecenie:
#star -xattr -H=exustar -c -f output.tar [files]

2) inne sposoby wgrania bootmanager'a:

Następnie przełączamy się do nowego środowiska:

mount --bind /dev/ /mnt/dysk/dev/
mount -t proc proc /mnt/dysk/proc/

Podmieniamy główny system plików na tą partycję:
chroot /mnt/dysk/ /bin/bash

W zależności od posiadanego bootmenedżera:

nano /etc/lilo.conf
Po czym:
lilo -v

lub

nano /boot/grub/menu.lst
grub-install --no-floppy --recheck /dev/sda1

exit
reboot

Jeśli komputer nie wystartował, ponownie uruchamiamy LiveCD:
mkdir /mnt/dysk
mount /dev/sda1 /mnt/dysk
grub-install --no-floppy --recheck --root-directory=/mnt/dysk /dev/sda1

------------------------------------------------------------------------

Garść wiedzy:

Tutaj tutorial dotyczący przebudowy partycji:
http://www.unixy.pl/forum/viewtopic.php?p=6427

I niejako przy okazji dotyczący przywracania GRUB'a
http://www.szarp.com.pl/howto/howto/html/grub-rescue.html

Deaktywacja LVM'a:
http://forums13.itrc.hp.com/service/forums/questionanswer.do?admit=109447627+1233063550888+28353475&threadId=1046794

PLD+LVM mini HOWTO:
http://bilbo.sgw.art.pl/doku.php?id=lvm

Jak ustawić LVM, jak robić snapshoty oraz automatycznie powiększać LVM
http://devrandom.pl/2008/12/lvm/

Tu jeszcze o narzędziach dotyczących dysków:
http://blog.oddied.net/2008/05/13/tutorial-od-uuid-do-label-w-ubuntu/

Brak komentarzy:

Prześlij komentarz

Archiwum bloga