Config XEN3 sur RAID1 Soft

Intro

Mon but était d'avoir un NetBSD 5 en dom0 avec Xen3 le tout sur du raid1 software.

Materiel : Intel i7 8cores, ~12G de ram, 2×1.5T SATA, kvm-ip pour l'installation, IP pour le dom0 et un subnet en /27.

Installation

On contacte le support d'Hetzner, on leur file une iso et ils bootent la machine sur un cédérom fraichement gravé, et te donnent accès au KVM-IP (LARA).

J'ai installé tout simplement avec une swap de genre 512Mb ou 1Gb et tout le reste en /, sur un seul disque, wd0 dans mon cas.

Après le reboot j'ai config normalement les bases de la machine :

% cat /etc/rc.conf
hostname=chouffe
defaultroute="42.42.42.42"
wscons=YES

sshd=YES
rtclocaltime=YES

# NTP Time
ntpdate=YES
ntpdate_hosts="pool.ntp.org"

# Obligatoire, sinon tap0 risque fort de ne pas être créer avant le bridge
# Et donc, fatalement, ben, ça ne marche pas. *lalalala*
auto_ifconfig=NO
net_interfaces="re0 tap0 bridge0"
# Of course on active la PouFfe
pf=YES

% cat /etc/ifconfig.re0
up
media autoselect
123.123.123.123 netmask 255.255.255.255 media autoselect


% cat /etc/hosts
::1                     localhost localhost. chouffe
127.0.0.1               localhost localhost. chouffe


% cat /etc/resolv.conf
nameserver 42.42.42.42
nameserver 42.42.42.43

Voila, pour la partie installation, tout à fait standard donc.

Xen3

Après avoir installé une NetBSD j'ai donc décidé de poser Xen 3.3 dessus.

Déjà on checkout pkgsrc, puis on fait ça (tiré de wiki.netbsd.se):

# cd /usr/pkgsrc/sysutils/xentools33
# make install clean

# cd /usr/pkgsrc/sysutils/xenkernel3
# make install clean

# cp /usr/pkg/xen3-kernel/xen.gz /
...
etc... je te laisse suivre la doc du wiki.netbsd.se ;)

Et PAS besoin de Grub, ça fonctionne très bien avec le bootloader par defaut !

Aussi, on recompilera la quenelle pour ajouter le support de Packet Filter, cf docs toussa.

Une fois l'install de Xen terminée, et rebootée en Xen :

On configure le XEN :

# cat /etc/rc.conf
xend=YES
xenbackendd=YES
xendomains=YES

Puis on start à la main ou un petit reboot pour la route.

RAID1 Software

On a un NetBSD sur wd0, donc on va créer un raid1 sur wd1, puis recopier le système de wd0 vers wd1, rebooter puis passer wd0 dans le raid nouvellement créé.

Dans mon cas cette partie à été un peut mouvementée, j'avais NetBSD sur wd0, j'ai créer un RAID sur wd1 puis rebooté dessus, mais à genre 40% de la reconstruction, wd1 avait des erreurs smartctl… J'ai donc du construire un RAID sur wd0 et rebooter dessus pour faire changer wd1, tout s'est bien passé à l'exception d'un s/raid0/raid1/ a éffectuer dans le /etc/fstab ⇒ reboot avec kvm, modification et zoo.

Je ne vais pas détailler ici toute la procédure, celle ci étant quasi identique a ce super howto éxcépté que j'ai une swap de 1.3G et le reste en /.

Les DOMU

Je vais ici parler de mon setup avec un /27 dédié aux domUs et utilisation du dom0 en tant que gateway du /27.

On créer par example un /kernels/ avec dedans :

On créer notre fichier de conf du domU, par example :

# cat /usr/pkg/etc/xen/servietteorange
kernel = "/kernels/netbsd-INSTALL_XEN3_DOMU.gz"
memory = 512
name = "servietteorange"
vif = [ 'bridge=bridge0' ]
disk = [ 'file:/usr/xen/servietteorange.img,xbd0a,w', 'file:/usr/xen/isos/amd64cd-5.0.1.iso,xbd1d,r' ]
root = "xbd0a"

# mkdir /usr/xen && cd /usr/xen
# dd if=/dev/zero of=servietteorange.img bs=1m count=100k
# mkdir isos
# cd isos
# ftp ftp://blahblah/amd64cd-5.0.1.iso

On configure le réseau :

Note : ici on utilise les IPs du /27, pas celle du dom0.

# cat /etc/ifconfig.bridge0
create
!brconfig $int add re0 up
!brconfig $int add tap0 up
# cat /etc/ifconfig.tap0
create
inet 42.42.42.02 netmask 255.255.255.0 broadcast 42.42.42.254

On restart le réseau ou reboot, au choix.

Et on ajoute net.inet.ip.forwarding=1 dans /etc/sysctl.conf.

On lance notre domU :

# xm create -c /usr/pkg/etc/xen/servietteorange

Lors de l'install le lecteur CD est *xbd1d*, et on installe normalement.

Une fois installé on 'halt' la VM, puis *xm destroy servietteorange*.

On supprime l'iso de sa conf, et lui met en kernel :

Note : Le kernel est aussi un kernel recompilé, juste un XEN3_DOMU avec support de Packet Filter.

kernel  = "/kernels/netbsd-XEN3_DOMU_PF.gz"

Et on relance le domU :

# xm create -c /usr/pkg/etc/xen/servietteorange

La config du domU est assez simple :

# cat /etc/rc.conf
hostname=servietteorange.i_am_god.eu
sshd=YES
powerd=YES
ifconfig_xennet0="inet 42.42.42.03 netmask 255.255.255.0 broadcast 42.42.42.254"
defaultroute="42.42.42.02" # notre 'gateway'
rtclocaltime=YES

On commente les screen dans /etc/wscons.conf et on garde que la console on dans /etc/ttys.

On peux rebooter le domU et voilaaaa!

Por^WPacket Filter

C'est toujours mieux avec le pf.conf quivabien, donc voila celui du dom0 :

% cat /etc/pf.conf
ext_if  =       "re0"
int_if  =       "lo0"
xen_if  =       "bridge0"
tap_if  =       "tap0"

host_ip 	=    "123.123.123.123"
gateway_ip      =    "42.42.42.02"
domU_range      =    "42.42.42.00/27"

icmp_types = "echoreq"

# Manual bans
table   <bans>          persist
# SSHGuard bans
table   <sshguard>      persist
# Watching IPs
table   <watching>      persist

set optimization normal
set block-policy drop

# Normalization
scrub in all fragment reassemble

# Antispoofing
antispoof for lo0

# Block and log all
block log (all)

# Bans
block in log (all) quick from { <bans>, <sshguard> }

# Out traffic for main host
pass out quick on $ext_if inet from $host_ip to any

# Ping
pass in on $ext_if inet proto icmp

pass in on $ext_if proto tcp from any to $host_ip port ssh flags S/SA

pass quick on $tap_if
pass quick on $ext_if from any to $domU_range
pass quick on $ext_if from $domU_range to any

Conclusion

Les limitations du dom0 sont :

  • Le changement de memoire a la volée ne se fait qu'avec le support d'un driver baloon
  • Ça fonctionne

Le reste fonctionne pas mal, voila quelques infos sur mon XEN33 :

 __  __            _____  _____  ____  
 \ \/ /___ _ __   |___ / |___ / |___ \ 
  \  // _ \ '_ \    |_ \   |_ \   __) |
  /  \  __/ | | |  ___) | ___) | / __/ 
 /_/\_\___|_| |_| |____(_)____(_)_____|
                                       
(XEN) Xen version 3.3.2 (root@) (gcc version 4.1.3 20080704 prerelease (NetBSD nb2 20081120)) Sun Oct 11 12:30:22   CEST 2009 
(XEN) Command line: dom0_mem=512M -s
(XEN) System RAM: 12279MB (12573816kB)
(XEN) Xen heap: 14MB (14472kB)
(XEN) HVM: Hardware Assisted Paging detected.
(XEN) CPU0: Intel(R) Core(TM) i7 CPU         920  @ 2.67GHz stepping 05
(XEN) Total of 8 processors activated.

total_memory           : 12279
free_memory            : 3395
xen_major              : 3
xen_minor              : 3
xen_extra              : .2
xen_caps               : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64 
xen_scheduler          : credit
xen_pagesize           : 4096

# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   512     1     r----- 105547.9
brokk                                        5  1024     1     -b----  47687.5
diplodhesif                                 11  1536     1     -b----  52680.1
hedwig                                       4  1024     1     -b----  48362.7
orwell                                       8   512     1     -b----  12448.8
pacifix                                      3  1024     1     -b----  25874.2
rm-fr                                        9  1024     1     -b----  28069.5
satan                                        1   512     1     -b---- 101797.0
spongebob                                    2   512     1     -b----  19989.1
statistix                                   13  1024     1     -b---- 133185.1

Petit tipaz convi, avec cette version, et que tu veux un domU HVM OpenBSD utilise :

  • vif = [ 'type=ioemu, bridge=bridge0, model=e1000' ]

Et tu aura une carte réseau gigabit au lieu de l'autre !@#1@# en 10MBps :)

Liens divers

netbsd/setup_xen3_raidframe.txt · Last modified: 2010/09/11 18:40 by rhaamo