Archiwum Migracja systemu SUSE pomiędzy dyskami IDE i SCSI

0 Comments

Chociaż opisana w tym wpisie metoda będzie działać w przypadku systemu (open)SUSE zainstalowanego na fizycznych dyskach, to w moim przypadku potrzeba migracji pojawiła się dla dysków wirtualnych w maszynie skonfigurowanej pod Vmware. Osoby które nie są zainteresowane VMware mogą pominąć tę część opisu.

Organizacja wirtualnych dysków VMware
Dysk wirtualny w VMware zapisany jest w plikach VMDK.  Zawsze jest to jeden plik opisujący geometrię dysku, oraz jeden lub kilka plików z przestrzenią dyskową. Plik z opisem geometrii możemy otworzyć w dowolnym edytorze tekstowym (na przykład gedit w GNOME). Oto przykładowy fragment opisu dysku:

# Disk DescriptorFile
version=1
CID=f7c7de36
parentCID=ffffffff
createType="twoGbMaxExtentSparse"

# Extent description
RW 4192256 SPARSE "ext3-s001.vmdk"
RW 4192256 SPARSE "ext3-s002.vmdk"
RW 4192256 SPARSE "ext3-s003.vmdk"
....

Już po tym fragmencie można się zorientować, że dysk jest podzielony na wiele plików (ext3-s001.vmdk…itd.). Taki podział jest praktyczny jeżeli chcemy przetrzymywać wirtualny dysk na partycji, która nie obsługuje dużych plików. O tym, czy mamy dysk dzielony czy nie, decydujemy na etapie tworzenia dysku. Możemy to później zmienić (pisałem o tym w jednym z poprzednich wpisów).
Dodatkowo, tworząc dysk wybieramy, czy ma być to dysk IDE czy SCSI. I tutaj dochodzimy do sedna problemu jaki ostatnio miałem.

Jak przenieść system SUSE z dysku IDE na SCSI

Nie pamiętam już dlaczego w jednej z instalacji SLES 9 wybrałem IDE zamiast zalecanego przez Vmware SCSI. Kiedy przy pracy z systemem pojawiły się pewne problemy z wydajnością, zacząłem się zastanawiać co mogłoby być przyczyną. Wydawało mi się, że dyski są bardzo wolne i że ich wydajność jest niska. System był przeciążony podczas pracy bazy danych, która intensywnie korzystała z dysku. Będąc zalogowany na wirtualnej maszynie z zainstalowanym SLES 9 sprawdziłem wydajność dla dwóch dysków: jeden był dyskiem SCSI, a drugi IDE. Sprawdziłem to komendą tego typu:

hdparm -t /dev/hda2

(oczywiście dla dysku SCSI było to /dev/sd2).

Choć z informacji do których dotarłem wynika, że nie powinno być różnic szybkości pomiędzy IDE (EIDE) i SCSI, to jednak z jakichś powodów Vmware zalecało wybór SCSI. Tak czy inaczej postanowiłem spróbować sklonować system z dysku IDE na dysk SCSI. Po pierwsze aby sprawdzić czy wpłynie to na wydajność systemu, a po drugie aby przećwiczyć samą migrację.

Oto kroki, dzięki którym wykonałem przeniesienie systemu. Chociaż dotyczyły one wirtualnej maszyny, to wyglądają tak samo dla zwykłych dysków twardych. Podobnie też z dystrybucją. Mój test dotyczył SLES 9 SP4. Opisana procedura przywracania loadera GRUB może się komuś przydać.

Krok 1
Klonujemy dysk jednym z programów które mamy pod ręką (kiedyś rozwinę ten temat, w tym przykładzie wybór programu nie ma znaczenia).

Krok 2
Uruchamiamy system z dysku instalacyjnego (CD lub DVD) i wybieramy tryb „Rescue„.

Uruchomienie systemu z dysku twardego nie zadziała. W opisywanym przypadku z dwóch powodów:
- dyski SCSI są wykrywane jako /dev/sdX a dyski IDE jako /dev/hdX (W miejscu X mamy kolejne litery: a, b…itd.). Wszystkie wpisy w plikach konfiguracyjnych odnoszą się do /dev/hda , a po zmianie dysku na SCSI powinno być /dev/sda.
- jeśli klonowaliśmy partycję systemową, to nie mamy sektora MBR. Można co prawda klonować cały dysk, ale i tak MBR lepiej zaktualizować.

Krok 3
W trybie Rescue musimy przełączyć się na system, który mamy na dysku twardym. Logujemy sie jako root i kolejno wykonujemy następujące komendy:

mount /dev/sda2 /mnt
mount –bind /sys /mnt/sys
mount –bind /proc /mnt/proc
mount –bind /dev /mnt/dev
chroot /mnt

(oczywiście w tej, jak i każdej dalszej komendzie wartości typu /dev/sda2 zastępujemy odpowiednimi dla naszej konfiguracji wartościami. Przed wykonaniem czegokolwiek warto sprawdzić dyski wykonując „fdisk -l„)

Krok 4
Po przelogowaniu (komenda chroot) musimy przywrócić GRUB. Najpierw próbujemy komendą:

grub-install –no-floppy –force-lba –recheck /dev/sda2

Kiedy jej nie wykonałem (z opcją ‘recheck‘), to komenda w grub „find /boot/grub/stage1” zwracała błąd.

Następnie startujemy komendę ‘grub’ i po uruchomieniu GRUBa wykonujemy:

grub> find /boot/grub/stage1

Wykonanie tej komendy powinno zwrócić wartość typu (hd0,1). Musimy ją zapamiętać i wykorzystać w kolejnych komendach. Oto dalsze komendy przy założeniu, że poprzednia  (find) zwróciła hd(0,1).

grub> root (hd0,1)
grub> setup (hd0)
grub> quit

Załączony poniżej zrzut ekranu pokazuje przykładowe wykonania komendy.

Komenda grub instalująca GRUB Loader

Krok 5
Musimy wyedytować plik /boot/grub/menu.lst w taki sposób, aby wpisy odpowiadały nowej konfiguracji dysku (np. hda2 musi być zastąpione przez /dev/sda2)

Krok 6
Musimy wyedytować plik /etc/fstab w taki sposób, aby odpowiadał konfiguracji dysku. Podobnie jak w poprzednim kroku zmiany najczęściej dotyczą zamiany „hd” (IDE) na „sd” (SCSI).

Krok 7
W tym kroku może okazać się konieczne dopasowanie modułów w pliku /etc/sysconfig/kernel.

Jest to opisane na stronie VMware . Należy wykonać komendę:

modprobe mptscsih

aby sprawdzić czy odpowiedni sterownik jest w systemie. Problem dotyczył starszych dystrybucji, więc nie będę go rozwijał (najlepiej zajrzeć na stronę VMware).

Wykonanie tych wszystkich kroków pozwoliło mi uruchomić SLES 9 na innym dysku bez ponownej reinstalacji systemu. Może się komuś przyda ten opis. Szczególnie w przypadku gdy spędziliśmy wiele czasu aby dostosować system i działające na nim aplikacje i szkoda nam czasu na reinstalację całości.

Tags:

Leave a Reply

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word