Catégories
Open-source Systeme

Installation de NetBSD sur un serveur XEN

NetBSD console

Nous allons dans ce billet décrire l’installation d’un système NetBSD 5.0.1 (tout beau tout chaud) sur un serveur de virtualisation XEN (3.0). Pour ceux qui ne suivent pas régulièrement ce blog (c’est pas bien, un ave maria ce soir), vous pouvez lire cet article sur le comment d’une installation d’un serveur XEN (dom0) sous une distribution GNU/Linux Debian.

On télécharge NetBSD

On commence notre aventure par le téléchargement des noyaux xenifiers (jenifer ?):

cd /root

mkdir xen

mkdir netbsd

cd /root/xen/netbsd

wget http://ftp.netbsd.org/pub/NetBSD/NetBSD-5.0.1/i386/binary/kernel/netbsd-INSTALL_XEN3PAE_DOMU.gz

wget http://ftp.netbsd.org/pub/NetBSD/NetBSD-5.0.1/i386/binary/kernel/netbsd-XEN3PAE_DOMU.gz

A noter que mon serveur Xen supporte le mode PAE (Physical Address Extension: permet à des processeurs de type x86 de gérer jusqu’à 64 giga-octets de mémoire physique sur des systèmes 32 bits, si le système d’exploitation le supporte), si ce n’est pas le cas, il suffit de récupérer les .gz sans PAE…

On installe le système NetBSD sur notre DomU

Ensuite on passe à la création du fichier de configuration du DomU (/etc/xen/netbsd):

kernel = ‘/root/xen/netbsd/netbsd-INSTALL-XEN3PAE_DOMU’

memory = ‘256’

root = ‘/dev/sda2 ro’

disk = [

‘file:/xen/domains/netbsd/disk.img,sda1,w’,

]

name = ‘netbsddev.alcasat.net’

vif = [ ‘ip=192.168.29.172,mac=00:16:3E:8B:F0:9F’ ]

on_poweroff = ‘destroy’

on_reboot = ‘restart’

on_crash = ‘restart’

On génère l’image disque virtuelle (sous la forme d’un fichier de 3 Go) qui permettra de faire l’installation du système BSD.

cd /xen/domains

mkdir netbsd

cd netbsd

dd if=/dev/zero of=disk.img bs=1024k seek=3000 count=1

On lance l’installation de NetBSD:

xm create -c  /etc/xen/netbsd

Lors de l’installation, il faut choisir une installation réseau via FTP ou HTTP. L’instraller vous demandera alors de configurer votre interface virtuelle (@IP, masque et touti quanti…).

Une fois l’installation terminé, il faut aller dans le menu e: Utility menu et exécuter un shell (/bin/sh). Il faut finaliser l’installation en saisissant les commande suivante:

mount /dev/xbd0a /mnt

cd /mnt/dev

cp -pR /dev/rxbd* .

cp -pR /dev/xbd* .

halt -p

A la suite de cette dernière commande et après quelques secondes, vous voici de retour dans votre maison Dom0.

On démarre notre serveur virtuel NetBSD !

On modifie le fichier de configuration du DomU (/etc/xen/netbsd):

kernel = ‘/root/xen/netbsd/netbsd-XEN3PAE_DOMU’

memory = ‘256’

root = ‘/dev/sda2 ro’

disk = [

‘file:/xen/domains/netbsd/disk.img,sda1,w’,

]

name = ‘netbsddev.alcasat.net’

vif = [ ‘ip=192.168.29.172,mac=00:16:3E:8B:F0:9F’ ]

on_poweroff = ‘destroy’

on_reboot = ‘restart’

on_crash = ‘restart’

On vérifie que le DomU a bien été lancée:

# xm list

Name ID Mem VCPUs State Time(s)

Domain-0 0 1503 2 r—– 8270.2

netbsddev 10 256 1 -b—- 32.0

saurondev 2 256 1 -b—- 19132.7

Ouha c’est beau 🙂 et si on se connecte dessus en ssh:

# ssh root@192.168.29.172

NetBSD/i386 (netbsddev.alcasat.net) (console)

login:

Et voili, bienvenu dans le monde magique de NetBSD.

Vous en voulez plus ?

Coquin va… Vous voulez pouvoir faire mumuse avec le meilleur Firewall open_source (j’ai nommé PF), vous allez un peu déçu car le kernel xenifier n’inclue pas PF par défaut, il va donc falloir recompiler le kernel (mais bon c’est un exercice indispensable pour tout geek *bsd…). Pour vous aider dans cette légère tache, je ne saurais trop vous conseiller la lecture de ce très bon article de GLMF.

Catégories
Open-source Planet-libre Systeme

Installation pas à pas de Xen sous Debian

Le but de ce billet est d’installer un serveur de de virtualisation Xen (Wiki) sur un système GNU/Linux Debian. Ce dernier pourra héberger de manière virtuelle (c’est à dire sur la même machine physique) un nombre important de serveurs, mutualisant ainsi votre hardware.

Installation du serveur Xen

J’ai choisi d’héberger mon serveur de virtualisation Xen (on appelle cette machine le dom0 pour « domaine 0 » dans le jargon Xen) sur la machine suivante:

HP Proliant DL145
AMD Optron 64
2 Go RAM
2 disques durs de 80 Go en RAID 1 (LVM)
Système d’exploitation: GNU/Linux Debian Lenny 5

J’ai effectué une installation standard à partir du CD d’installation de la Debian 5.0 en appelant ma machine virt1 et en installant comme seul et unique service le daemon OpenSSH (pour un accès à distance).

Ensuite, il faut procéder à l’installation de Xen et de ses utilitaires:

aptitude install xen-hypervisor-i386 xen-linux-system-2.6.26-2-xen-686 xen-utils xen-tools xen-shell xenwatch xenstore-utils


On configure ensuite le réseau de la manière à transformer notre machine dom0 en bridge. Pour cela, on édite le fichier /etc/xen/xend-config.sxp et on remplace la ligne:

(network-script network-dummy)
par
(network-script network-bridge)


On reboot notre système pour prendre en compte le noyau supportant Xen:

reboot


Configuration du serveur Xen

Nous allons utiliser xen-tools pour administrer nos serveurs virtuels. Pour cela il faut éditer le fichier de configuration (/etc/xen-tools/xen-tools.conf) de la manière suivante (en gras les options à adapter selon votre configuration):

dir = /xen
install-method = debootstrap
size   = 4Gb      # Disk image size.
memory = 128Mb    # Memory size
swap   = 128Mb    # Swap size
fs     = ext3     # use the EXT3 filesystem for the disk image.
dist   = lenny     # Default distribution to install.
image  = sparse   # Specify sparse vs. full disk images.
gateway   = 192.168.29.1
netmask   = 255.255.255.0

passwd = 1
kernel      = /boot/vmlinuz-`uname -r`
initrd      = /boot/initrd.img-`uname -r`
mirror = http://ftp.lip6.fr/pub/linux/distributions/debian/
ext3_options   = noatime,nodiratime,errors=remount-ro
ext2_options   = noatime,nodiratime,errors=remount-ro
xfs_options    = defaults
reiser_options = defaults
serial_device = hvc0
disk_device = xvda


On pense également à créer le répertoire qui contiendra les domaines hôtes (/xen dans ma configuration):

mkdir /xen


Installation d’un serveur virtuel

Nous allons commencer par ajouter un nouveau serveur virtuel (que l’on appelle domU pour « domaine Users » dans le jargon Xen) à notre configuration. Cette action se fait de manière très simple grâce à la commande suivante (attendre quelques minutes):

# xen-create-image –hostname=servvirt1.mondomaine.com –size=10Gb –swap=512Mb –ip=192.168.29.171 –memory=256Mb –dist=lenny –arch=i386 –role=udev
General Information
——————–
Hostname       :  servvirt1.mondomaine.com
Distribution   :  lenny
Partitions     :  swap            512Mb (swap)
/               10Gb  (ext3)
Image type     :  sparse
Memory size    :  256Mb
Kernel path    :  /boot/vmlinuz-2.6.26-2-xen-686
Initrd path    :  /boot/initrd.img-2.6.26-2-xen-686


Networking Information
———————-
IP Address 1   : 192.168.29.171 [MAC: 00:16:3E:8B:F0:9E]
Netmask        : 255.255.255.0
Gateway        : 192.168.29.1

Xen va alors créer un serveur virtuel disposant d’un disque de 10 Go, d’un taille de swap de 512 Mo et d’une mémoire de 256 Mb. L’adresse IP de ce nouveau serveur virtuel sera 192.168.29.171. Le mot de passe root du système vous sera demandé en fin d’installation.

Un fichier de configuration dédié a ce nouveau serveur a été généré: /etc/xen/servvirt1.mondomaine.com.cfg

Gestion du serveur virtuel

Démarrage du serveur virtuel

Pour lancer le serveur virtuel préalablement créé, il faut saisir la commande:

xm create /etc/xen/servvirt1.mondomaine.com.cfg


Vous pouvez alors vous connecte dessus en SSH:

ssh root@servvirt1.mondomaine.com


Pour automatiser le démarrage de ce serveur virtuel (domU) au lancement de votre serveur hôte (dom0), il faut créer le lien suivant:

ln -s /etc/xen/servvirt1.mondomaine.com.cfg /etc/xen/auto/host1.cfg


Cette commande permet de séquencer le lancement des serveurs domU dans un certain ordre. Cela peut être utile si le service hébérgé sur un serveur virtuel dépend d’un autre…

Autres commandes utiles à l’administration de vos serveurs virtuels

Pour arrêter un serveur virtuel:

xm shutdown servvirt1.mondomaine.com


Pour voir la liste des serveurs virtuelles lancées:

# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1765     2     r—–    106.7
servvirt1.mondomaine.com 1   256     1     -b—-      2.6


Liste des serveurs virtuels créés:

# xen-list-images
Name: servvirt1.mondomaine.com
Memory: 256
IP: 192.168.29.171


Occupation des ressources en temps réel:

xentop


Pour rendre prioritaire un serveur virtuel par rapport à un autre, nous allons utiliser les options du gestionnaire d’allocation des ressources (« Credit scheduler », par défaut dans la version Xen 3.0).
Par exemple, si nous avons deux serveurs virtuels servvirt1 et servvirt2 (domU) hébérgés sur notre serveur hôte (dom0) et que nous souhaitons donner deux fois plus de temps CPU à servvirt2, il suffit de saisir la commande suivante:

xm sched-credit -d servvirt2.mondomaine.com -w 512

PS: par défaut, un serveur virtuel à un poids de 256.

La liste des poids des serveurs virtuels peut être obtenue grâce à la commande:

# xm sched-credit
Name                                ID Weight  Cap
Domain-0                             0    256    0
servvirt1.mondomaine.com 1    256    0
servvirt2.mondomaine.com 1    512    0


Les commandes xm sched-credit sont à lancer (par exemple dans un script shell) au démarrage du serveur hôte.

Conclusion

Xen et la virtualisation en général est un très bon moyen, dans cette période de crise, d’optimiser au mieux les ressources hardware disponibles. Il est bien sûr possible de créer autant de serveurs virtuels que possible sur notre serveur hôte (dans les limites de performances souhaités au niveau des domU).

Quelques sources utiles à la rédaction de ce billet:

Catégories
Systeme

Faire tourner FreeBSD sous Linux

Le sujet de cet article est de faire tourner une instance FreeBSD sur une machine Linux. Nous allons donc parler de Xen, qui est un outil de virtualisation très à la mode de chez nous.

« Faire tourner FreeBSD sous Linux »… drôle d’idée… mais pourquoi faire ?

Bonne question ! Voici une petite liste de besoins qui peuvent expliquer ce fantasme de geek:
– Validation d’un logiciel sur FreeBSD
– Utilisation de couche réseau comme « dummynet » disponible seulement sur cet OS
– Test de cet OS qui est un des plus beau au monde 😉

Dis comment ça marche ?

Xen est un logiciel de paravirtualisation, il permet donc de lancer une machine virtuelle (FreeBSD dans notre cas) sur n’importe quel type de processeur. A la difference des outils de virtualisation, Xen doit utiliser une version spécifique de FreeBSD (« Xenifier ») pour fonctionner. Au lancement du programme Xen, un domaine « host » (ou Dom0 pour les intimes) est créé. C’est à partir de ce domaine que l’on va créer les domaines « guest » (ou DomU encore une fois seulement pour les intimes).

Let’s go Simone ! fait pêter le tutoriel

La première chose à faire est d’installer Xen:

Sur fedora:
# yum install kernel-xen
# yum install xen
# yum virt-manager
# reboot

PS: la version utilisé lors de ce tuto est la 3.0.

Lors du boot, il faut choisir le kernel Xen en le selctionnant dans le menu GRUB. Avant de continuer, il faut d’abord vérifier qu evous êtes sur le bon kernel:

# uname -a
Linux localhost.localdomain 2.6.20-1.2948.fc6xen

On télécharge ensuite la version « Xenifier » de FreeBSD sur votre distribution Linux (j’ai utilisé une Fedora). Pour cela il faut aller sur le site http://www.yuanjue.net/xen/howto.html et télécharger la dernière version disponible.

On doit en fait télécharger deux fichiers:

  • freebsd-XENU_INSTALL (contenant le noyau pour l’installation)
  • freebsd-XENU (contenant le noyau pour le fonctionnement)

Une fois les deux fichiers sur votre disque local, il faut éditer le fichier de configuration /etc/xen/freebsd-install.cfg:

# vi /etc/xen/freebsd-install.cfg
kernel= »/home/simone/freebsd-XENU_INSTALL »
memory=256
name= »freebsd »
disk=[‘file:/usr/share/xen/domains/freebsd/disk.img,hda1,rw’]
extra= »vfs.root.mountfrom=ufs:/dev/md0″

On crée ensuite le fichier « host » de 3 Go:

# mkdir /usr/share/xen/domains/
# mkdir /usr/share/xen/domains/freebsd/
# cd /usr/share/xen/domains/freebsd/
# dd if=/dev/zero of=disk.img bs=1024k seek=3000 count=1

Puis on lance la bête (installation de FreeBSD !)

# xm create -c /etc/xen/freebsd-install.cfg

Il faut dans un pertmier temps choisir une installation par VT.100. Puis changer, le nom de la release à installer (6.0-RELEASE).

Lors de la configuration « fdisk », il faut ficez la geometrie du disque en cliquant sur la lettre « G » puis en entrant la valeur suivante: « 1000/1000/1000 ».

L’installation par FTP devrait se passer sans problème.

A la fin de l’installation, il ne faut pas rebooter la machine tout de suite mais d’abord configurer le TTY en éditant le fichier /etc/ttys:

xc0 "/usr/libexec/getty Pc" vt100 on secure
#ttyv0 "/usr/libexec/getty Pc" cons25 on secure
# Virtual terminals
#ttyv1 "/usr/libexec/getty Pc" cons25 on secure
#ttyv2 "/usr/libexec/getty Pc" cons25 on secure
#ttyv3 "/usr/libexec/getty Pc" cons25 on secure
#ttyv4 "/usr/libexec/getty Pc" cons25 on secure
#ttyv5 "/usr/libexec/getty Pc" cons25 on secure
#ttyv6 "/usr/libexec/getty Pc" cons25 on secure
#ttyv7 "/usr/libexec/getty Pc" cons25 on secure
#ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure

On change alors la configuration de Xen pour pointer sur le kernel de fonctionnement, il faut éditer le fichier de configuration /etc/xen/freebsd.cfg:

# vi /etc/xen/freebsd.cfg
kernel= »/home/simone/freebsd-XENU »
memory=32
name= »freebsd »
disk=[‘file:/usr/share/xen/domains/freebsd/disk.img,hda1,rw’]
extra= »,vfs.root.mountfrom=ufs:/dev/xbd0s1a« 

Puis lancer le tout:

# xm create -c /etc/xen/freebsd.cfg

Vous devriez voir apparaitre devant vos yeux ébahies, le prompt magique:

FreeBSD/i386...
login:

Et hop !