Category Archives: NVR

array('post','marketing','computer','name_of_the_post_type','name_of_the_post_type'))); */ ?>

Virtualiser XPEnology avec Xen pour profiter de Surveillance Station

Dans le choix d’un serveur de vidéo-surveillance (NVR), j’ai longtemps cherché une solution opensource, le premier qui vient, serait ZoneMinder, mais mes tests m’ont permis de le trouver trop lourd, barbant, instable, pas user-friendly.
J’ai continué ma quête du NVR parfait, même dans les freeware et proprio pour un usage habitat. Rien à l’horizon…
Puis je suis tombé sur Surveillance Station disponible sur les NAS Synology, les vidéos Youtube m’ont vendu du rêve (1) (2)

Acheter un NAS Synology pour la vidéo-surveillance, si ça tourne bien, ok…
Mais les NAS « physique » ont des limites de caméras… C’est marqué en petit dans la caractéristique technique de chaque produit de Synology.
Le DS414j par exemple, supporte au maximum 8 caméras.

Documentation technique DS414j

Morceau choisi de la documentation technique DS414j

Je suppose que du nombre de baie découle la puissance de matériel et donc du nombre de caméras possible.
Je compte installer entre 5 et 8 caméras, donc il faut que je compte ~ 300 € TTC sans disque pour acheter le NAS suffisament performant.

XPEnology

Puis j’ai découvert XPEnology, Korben vous fait les présentations.

Etant donné que j’ai déjà un serveur debian pour usage multimédias et domotique, autant virtualiser XPenology sur ce même serveur !

Excusez le manque d’analyse et d’informations de XPenology, DSM, et autre outils relatfis au NAS. J’ai prodé ça le même jour où je l’ai découvert, on peut parler d’un coup de foudre.

Installer Xen sur Debian Wheezy

Les how-to sont nombreux sur la toile, parfois trop complet, alors je vais droit au but :

# apt-get install xen-tools xen-system-amd64 xen-hypervisor-4.1-amd64 bridge-utils

On déplace l’ordre de boot des kernel pour booter sur le kernet Xen.

# mv /etc/grub.d/10_linux /etc/grub.d/50_linux
# update-grub

Humm, avant tout, assurez vous d’avoir un processeur capable de virtualiser :

# egrep 'vmx|svn' /proc/cpuinfo

Si vous avez  au moins une ligne qui ressort avec les flags, c’est que votre CPU supporte la virtualisation.
Cependant, si vous avez pris de l’avance et exécutez cette commande en étant déjà sur un kernel Xen, le résultat attendu ne s’affichera pas.

Après un reboot, vous devriez vous retrouver sur un kernel Xen. Pour s’en assurer, faites appel à l’un de ses services 😉

# xm li
Name ID Mem VCPUs State Time(s)
Domain-0 0 2904 4 r----- 67.2

Point important, c’est bien beau d’avoir un processeur pouvant virtualiser, mais assurez vous que l’option est active dans le BIOS, pour cela executez cette commande :

# cat /sys/hypervisor/properties/capabilities
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

Si la ligne ne fait pas référence à du HVM malgré que vous possédiez un procésseur avec technologie VT-x/AMD-V (flag vmx ou svn), c’est que l’option VT-x/AMD-V est désactivée dans le BIOS (je me suis fait avoir…).
Nous allons faire du HVM (Hardware Virtual Machine), et non de la paravirtualisation, plus de détails sur wikipedia.

Faire de la virtualisation complète, ça permet de ne pas se préoccuper de l’OS sur lequelle XPenology est ‘tiré’, ça a  l’air d’être du FreeBSD, bref je m’en moque.

Xen est installé, un peu de paramétrage, je vous affiche brut ma config :

# egrep -v '^(#|$)' /etc/xen/xend-config.sxp
(network-script network-bridge)
(vif-script vif-bridge)
(dom0-min-mem 196)
(enable-dom0-ballooning yes)
(total_available_memory 0)
(dom0-cpus 0)
(vnc-listen '0.0.0.0')
(vncpasswd '')
(keymap 'fr')

Le fichier de configuration tel quel me permet de fonctionner en mode bridge, et de la possibilité de me connecter en VNC à la machine virtuelle.
De nombreuses possibilités avec Xen, j’adore cet outil, comme dit au début, je vais droit au but, mais sachez qu’il possible de faire énormement avec Xen.

Viritualisation de XPenology

Voila le vif du sujet !
Du peu que j’ai regardé au sujet de XPenology, c’est qu’il s’installe sur une petite partie d’un disque du NAS, pour ma part, pour plus de souplesse, je préfère dédié un disque au fonctionnement de XPenology. Je commence par lui créer un disque de 8Go, au format fichier:

# dd if=/dev/zero of=/srv/xpenology.img bs=1 count=1 seek=8G

Pourquoi 8Go ? Parce que j’ai lu sur xpenology.com/forum qu’il fallait au minium 5Go. Certains parlent de 100Go.
J’admet ne pas avoir tout suivi sur l’emplacement du system d’XPenoloy, où est-ce qu’il se loge, la place qu’il prend, comment il gère le changement de disque.

Autrement, je dédie un disque physique au XPenology.
Dans mon cas /dev/sdd, un disque de 2To.
Cependant, j’ai constaté que je devais partitionner mon disque pour que DSM puisse créer un volume.
J’ai donc crée une partition primaire de 2To -> /dev/sdd1, non formatée, DSM s’en chargera.

Donc 2 supports :
– 1 disque image pour le système.
– 1 disque (ou partition il faudrait dire) de données pour les enregistrements, etc…

Il faut télécharger et mettre sur le serveur, l’image de boot de XPenology, que l’on trouve ici:
http://www.xpenology.nl/boot-images/
→ Gnoboot-10.5 DSM 5.0-4458 X64
Ou bien :
→ Nanoboot-5.0.3.2 DSM 5.0-45XX X64

Gnoboot :
Il a la réputation d’être stable et performant surtout sous environnement virtualisé.
Aucune mise à jour n’a eu lieu depuis longtemps : Aïe !
Les mises à jour de synology se font avec des pincettes, tant que Gnoboot n’évolue pas, peu de possibilités d’upgrader la version 4558.

Nanoboot :
C’est suivi et recommandé par la communauté.
Normalement performant, mais peu s’améliorer ou se dégrader selon la release utilisée.
Les mises à jour de synology se font généralement sans soucis, attendre quelques jours après une nouvelle release pour voir si un fix/problème fait son apparition.

Je stock l’iso dans /root/

Pour créer une machine virtuelle Xen, il faut crée un fichier .cfg
Ma machine virtuelle s’appelle synocam, mon fichier est donc /etc/xen/synocam.cfg et il contient ceci :

Dans le cas d’utilisation de GnoBoot :

kernel = '/usr/lib/xen-4.1/boot/hvmloader'
builder = 'hvm'
memory = '1024'
device_model='/usr/lib/xen-4.1/bin/qemu-dm'
# Disks
disk = [ 'file:/srv/xpenology.img,hda,w','phy:/dev/sdd1,hdb,w','file:/root/gnoboot_105_xpenology_5.0-4458_bootloader_X64_by_Poechi.iso,hdc:cdrom,r' ]
# Hostname
name = 'synocam'
# Networking
vif = [ 'mac=00:11:11:76:75:74,bridge=eth0' ]
# Behaviour
boot='dc'
# VNC
vnc=1
vncviewer=1
vncpasswd=''
sdl=0
usbdevice='tablet'
# Misc
localtime=1
# On fail
on_poweroff='destroy'
on_reboot='restart'
on_crash='restart'

Dans le cas d’une utilisation de NanoBoot, la configuration du domU change un peu :

kernel = '/usr/lib/xen-4.1/boot/hvmloader'
builder = 'hvm'
memory = '1024'
device_model='/usr/lib/xen-4.1/bin/qemu-dm'
vcpu=2
# Disks
disk = [ 'file:/srv/xpenology.img,hda,w','phy:/dev/sdd1,hdb,w','file:/root/NB_x64_5032_DSM_50-4528_Xpenology_nl.iso,hdc:cdrom,r' ]
# Hostname
name = 'synocam'
# Networking
vif = [ 'model=e1000,bridge=xenbr0,mac=00:11:11:76:75:74']
# Behaviour
boot='dc'
# VNC
vnc=1
vncviewer=1
vncpasswd=''
sdl=0
usbdevice='tablet'
# Misc
acpi = '1'
apic = '1'
localtime=1
viridian=1
xen_platform_pci=1
# On fail
on_poweroff='destroy'
on_reboot='restart'
on_crash='restart'

La conf est sortie d’un tiroir, d’un serveur Xen en prod virtualisant du Windows 2008 R2.
L’adresse MAC est modifiée pour simuler un NAS Synology sur le réseau afin d’être détecté par l’assistant Synology.
Le driver virtuel e1000 est utilisé par nanoboot, car le driver par defaut realtek r8169 n’est pas compilé dans nanoboot.
Elle doit commencer par 00:11:11:    . Le reste est inventé.
file:/srv/xpenology.img,hda,w correspond à mon disque image de 8Go, en tant que disque primaire, accès en écriture.
phy:/dev/sdd1,hdb,w correspond à mon disque/partition de 2To, en tant que disque secondaire, accès en écriture.
file:/root/gnoboot_105_xpenology_5.0-4458_bootloader_X64_by_Poechi.iso,hdc:cdrom,r correspond au bootloader de Xpenology, simulé dans un lecteur CD, accès en lecteur seul.
boot=’dc’ permet à la machine virtuelle de booter sur le CD.
memory = ‘1024’ peut être augmenté.
Le nombre de CPU dédié à cette machine est de 1, le nombre peut être adapté avec l’option vcpus=2 pour 2 CPUs dédiés par exemple.
Pour le disque dédié également, vous aurez la possibilité de jongler entre disques physiques, raid soft, raid hard, LVM, laisser DSM gérer ou ajoutant simplement des disques, ou gérer vous en amont les disques que vous incluez dans la machine virtuelle. Voir même le tromper en montant un partage d’une autre machine. J’apprécie cette souplesse !

Voila pour l’essentiel de la config de la machine virtuelle.

Installation de XPenology

A  ce stade, la configuration de Xen et le fichier de configuration de la machine virtuelle devraient permettre de démarrer celle-ci sans erreur.
Si quelque chose manque, Xen vous le fera très vite savoir, c’est tout bon ou rien. Préparez votre client VNC, ça va aller très vite.

Pour démarrer la VM :

# xm create synocam.cfg

Puis ouvrez vite votre client VNC pour vous connecter au serveur, en indiquant le nom où l’ip du serveur Xen.
Vous devriez voir assez rapidement le menu de selection du bootloader GnoBoot.

Menu grub de Gnoboot

Menu grub de Gnoboot

Sélectionnez la seconde ligne Install/Upgrade.
Laissez booter, souriez, ça avance !

Boot de GnoBoot

Boot de GnoBoot

Lorsque le boot est installé, lancez sur votre PC l’utilitaire Synology Assistant.
Il devrait voir votre faux NAS, faite un clic droit > Installer.
Un wizzard vous guide dans l’installation et vous demande un fichier .pat.
Vous pourrez télécharger le  fichier .pat sur le support de Synology :
http://download.synology.com/download/DSM/5.0/4458/
URL et fichier PAT à adapter selon la version que vous cherchez à installer, en rapport avec GnoBoot.
Dans notre cas DSM 5 version 4458 pour le NAS DS3612xs.

Installation en cours par Synology Assistant

Installation en cours par Synology Assistant

♫ Et ça continue encore et encore, c’est que le début d’accord d’accord  ♫

Installation terminez ! Enjoy !

Installation terminez ! Enjoy !

Connectez-vous dés à présent en HTTP à votre nouveau NAS entièrement virtualisé sous XEN.
DSM vous aura crée un volume sur votre petit disque de 8Go, vous pourrez supprimer ce volume pour n’utiliser que le disque dédié.
Gérez vos volumes, changez votre mot de passe, le nom de machine, installez vos paquets : Surveillance Station.

Capture d'écran de DSM sous Xen

Capture d’écran de DSM sous Xen

Pour terminer

J’utilise le SNMP sur DSM pour les graphs munin, sur DSM : Panneau de configuration > Terminal & SNMP; SNMP v2 avec communauté « public« .
Un petit retour sur notre Debian.
Ajout d’un node munin :

# munin-node-configure --shell -snmp synocam

Executez ce que vous avez envie de grapher.
synocam étant le hostname de mon NAS Synology sur mon réseau, à adapter.

Vous pourrez voir l’utilisation des ressources de votre XEN grâce à la commande xm top.

xm top pour voir l'utilisation des ressources

« xm top » pour voir l’utilisation des ressources

Démarrage automatique de la VM avec le serveur Xen :

# mkdir /etc/xen/auto/
# cd /etc/xen/auto/
# ln -s /etc/xen/synocam.cfg .

Pour éteindre votre NAS :

# xm shutdown synocam

Et voila, une très bonne solution à bon gout pour profiter de Surveillance Station.
Je n’ai pas lancé de benchmark sur le bouzin, mon benchmark va surtout se faire au fur et à mesure des ajouts de caméras.

Posté dans NVR, Sysadmin, Web, Xen | 8 Commentaires