Hoe voer ik een image migratie uit?

Geüpdatet 3 months ago door Douwe Zijlstra

In dit artikel leg ik je globaal uit hoe je een image migratie uitvoert. Dit is niet de mooiste manier om een server te migreren! We raden je aan om een nieuwe, schone server op te zetten met een gloednieuw OS. Het migreren gaat in 3 stappen. Eerst moet de huidige server voorbereid worden. Vervolgens moeten we de server overzetten, en daarna moeten we de server weer aan de gang krijgen op het nieuwe platform.

Benodigdheden:

- Enige kennis/ervaring met de command line

- Geduld en tijd

- Root toegang (alle stappen moeten worden uitgevoerd als root gebruiker)

Huidige situatie:

Stap 1: Server imagen en overzetten

Stap 1.1: Server uitzetten, en schijf toekennen aan speciale migratieserver

Voor deze stap raad ik je aan om de server uit te zetten, en de harde schijf te laten koppelen aan een nieuwe, speciale migratieserver op ons oude platform. De primaire disk van de server die je wilt migreren is dan een secundaire disk van een speciale migratieserver. Op die manier kun je server imagen terwijl hij niet gebruikt wordt.

Deze server kun je zelf aanmaken met een besturingssysteem naar keuze. Kies 1 waar je makkelijk mee overweg kunt, zo lang er maar Linux op staat.

Wil je geen speciale migratieserver gebruiken? Zet dan zo veel mogelijk services uit zodat er zo weinig mogelijk activiteit op de server is. Zet zo veel mogelijk services uit, denk hierbij aan je webserver, mailserver, database server et cetera.

Op het diagram zou het er ongeveer zo uit zien. Zoals je ziet is de harde schijf van je server nu gekoppeld aan de migratie server.

Stap 1.2: Nieuwe server aanmaken op het nieuwe platform

Maak een nieuwe server aan op het nieuwe platform. De goedkoopste is prima voor nu, je kunt later nog opschalen. De server moet de volgende dingen hebben:

- Linux distributie; (GEEN Windows/BSD). We gebruiken deze alleen voor het imagen, het mag dus ook iets anders zijn dan de server die je gaat verhuizen

- Extra harde schijf die net zo groot is als de oude server

- Primaire harde schijf die groter is dan de image

Stap 1.3: Oude server imagen over SSH

Locatie: Migratieserver oude platform

We moeten weten welke schijf van de migratieserver geimaged moet worden. Log in op de migratieserver oude platform.

Gebruik het commando: lsblk

Dit is ongeveer de output:

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

vda 252:0 0 50G 0 disk

└─vda1 252:1 0 50G 0 part /

vdb 252:0 0 50G 0 disk

└─vdb1 252:1 0 50G 0 part /

Ik heb de schijf van de server aan de migratieserver gekoppeld. Je kunt zien dat op vdb een OS staat doordat er een partitie op zit met het type '/'.

In mijn geval is het dus de schijf 'vdb' die gemigreerd moet worden.

Locatie: Nieuwe server

SSH naar de nieuwe server of gebruik de webterminal.

Voer dit commando uit:

ssh root@server_ip "dd if=/dev/vd# | gzip -1 -" | dd of=image.img.gz

Vervang /dev/vd# door de juiste schijf die we in de vorige stap hebben bekeken. In mijn geval zou dat dus /dev/vda zijn (niet vda1, we willen de hele schijf).

En vervang 'server_ip' door het IP van de migratieserver. Vul het wachtwoord in.

Dit kan een tijdje duren, dus haal gerust een bakje koffie ondertussen ;)

Als het afgerond is zie je hoe groot de image geworden is. Dit ziet er zo ongeveer

2368+0 records in

2368+0 records out

1212416 bytes (1.2 MB, 1.2 MiB) copied, 2.61331 s, 464 kB/s

Stap 1.4: Image uitpakken

In deze stap gaan we de image uitpakken. Dat kan ook weer een tijdje duren. Gebruik hiervoor het volgende command:

gunzip -c image.img.gz | dd of=/dev/vd# bs=16M oflag=direct

Gebruik in plaats van '/dev/vd#' de schijf die voor jou van toepassing is. Kijk wederom met 'lsblk' welke schijf dat is. Dit kan even duren. Hier is het dus tijd voor nog een bakje koffie (of thee).

Stap 2: Nieuwe server booten met GRUB

In deze stap zorgen we ervoor dat de server op het nieuwe platform werkt.

Hierbij repareren we de netwerkconfig en voeg ik een nieuwe swap partitie toe.

Stap 2.1: Ontkoppel de primaire harde schijf en koppel een Ubuntu Live CD

Ontkoppel de primaire harde schijf, die heet als het goed is 'Device 1'. Koppel een Ubuntu Live CD als cdrom , en zet de bootvolgorde op 'cdrom - drive' open de terminal. Het mag ook een andere live CD zijn, het gaat even om de terminal die we krijgen.

Stap 2.2: Mount de schijf van je OS

Mount de partitie waar je installatie op staat. Dit is als het goed is /dev/vda1, check met lsblk

sudo mount /dev/vda1 /mnt

Nu moet je de directories binden die Grub nodig heeft om besturingsystemen te detecteren

mount --bind /dev /mnt/dev &&

mount --bind /dev/pts /mnt/dev/pts &&

mount --bind /proc /mnt/proc &&

mount --bind /sys /mnt/sys

Open de root partitie met chroot

chroot /mnt

Stap 2.3: Installeer GRUB

In chroot voer je het volgende commando uit: (Let op! Zonder 1, dus de gehele schijf!)

grub-install /dev/vda

Run nog een keer dit commando om zeker te zijn dat het geïnstalleerd is. Als het goed is staat er (hd0,1) met daar de goede schijf bij

grub-install --recheck /dev/sdX

Voer nog een update uit

update-grub

Verlaat de chroot modus

exit

Zet het systeem uit

shutdown now

Stap 3: Wek de server tot leven op het nieuwe platform

Stap 3.1: Disconnect de primaire harde schijf bij het nieuwe platform

Zet de nieuwe server uit als het uitpakken van de image gelukt is. Haal de primaire harde schijf weg bij het nieuwe platform, zodat de tweede harde schijf de primaire wordt en deze wordt opgestart.

Stap 3.2: Configureer het netwerk

Start de server op. Dit kan even duren omdat hij de missende swap partite probeert te laden, daar ziet hij uiteindelijk vanaf.

Configureer het netwerk via de web console. Hiervoor heb je het root wachtwoord nodig, hetzelfde als van het oude platform.

Het verschilt per OS hoe je het netwerk configureert. Je moet de configuratie omzetten van 'static' naar DHCP.

Ubuntu/Debian:

Ga naar de network config

sudo nano /etc/network/interfaces

Verander alles in DHCP

Dat ziet er ongeveer zo uit:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp

auto eth2
iface eth2 inet6 auto

CentOS/RedHat:

CentOS/RedHat heeft alle netwerkconfiguratie in losse bestanden staan. Zoek daarom met het volgende commando naar de interface configuraties

ls /etc/sysconfig/network-scripts/ | grep ifcfg-

Open het eerste interface bestand om aan te passen bijvoorbeeld, ifcfg-eth0.

sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0

Het bestand moet minimaal onderstaande instellingen hebben. In het geval dat bij 'ONBOOT' 'no' staat mag je dat veranderen naar 'yes'.

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

Je moet waarschijnlijk hetzelfde doen voor andere interfaces als je deze hebt/wilt gebruiken.

Stap 3.3: maak een nieuwe swapfile

Swap toevoegen op Ubuntu/Debian: https://linuxize.com/post/how-to-add-swap-space-on-ubuntu-18-04/

Swap toevoegen op CentOS/RHEL: https://www.thegeekdiary.com/centos-rhel-how-to-add-swap-file/

Stap 4: Reboot!

Na het rebooten moet je server up en running zijn! Vergeet niet alle IP's in de DNS te wijzigen.


Hoe hebben we het gedaan?


Powered by HelpDocs (opens in a new tab)