XEN - Conversion machine physique

bonjour
J’ai installé XEN sur une wheezy64
J’ai créé 2 VM : tout est OK
J’ai converti une machine vmware2 en Xen ( image vmdk en img ) : Tout est ok.

Mon problème
J’ai un vieux serveur redhat sur lequel tourne une appli propriétaire que je veux virtualiser sous XEN.
mais il a un disque de 250Go sur lequel il y a 3 partitions ( /, /donnees, swap )
L’ensemble ( système et appli ) n’utilise que 15Go.
En faisant une image du disque complet avec dd, que je mets sur le serveur xen, cela fonctionne, mais j’ai un fichier img de 250Go ( pour 15Go utilisé, c’est fou… )

Comment réduire ce fichier ?
La commande resize2fs -fM ( pour réduire le filesystem )ne fonctionne pas, car il y a plusieurs partitions dans cette image disque.

Si je fais une image, uniquement des partitions, on ne peut pas booter dessus.

Après plusieurs tests, je suis un peu sec sur ce problème.

Si quelqu’un a une petite idée, je suis bien sûr preneur.

En vous remerciant
Cordialement

Calvin

Qu’est-ce qui coince au boot ? xen ? grub de la machine ? grub de la machine virtualisée ? Linux du système cloné ?
Quel contexte ? Quels symptomes ? Quel message d’erreur ?

Essaye partimage pour restaurer le système.

Contenant et contenu .
Tu auras beau vider l’eau (contenu)de la piscine, la piscine (contenant) ne se réduira en dimension.
Tu cherches à reduire le contenu (les partitions,données dans l’image disque). Le contenant (l’image de 250 Go) sera toujours du même volume qu’au départ : 250 Go.
Il te faut une $AUTRE-PISCINE.

Dans ton approche brute de clonage par dd, je pense que tu peux te dispenser de dd (alias destructeur de données) pour reproduire les partitions /home et swap.
Il serait intéressant de connaître le découpage et la répartition des données entre la racine du système /, /home et si détaché, /var.

Tu lances le système. Commande :
$ df -hT
Voici une suggestion sans dd pas spécifique à xen.

Aux côtés du disque cloné, tu crées $AUTRE-DISQUE avec des tailles de partitions plus restreintes.
Pour estimer la taille de cet $AUTRE-DISQUE, tu te réfères aux valeurs obtenues par [mono]$ df[/mono]
Tu ajoutes à cette valeur plancher l’estimation des données futures qui viendront s’ajouter.
Ex :
$NOUVELLE-RACINE = $DONNÉES-RACINE + 5Go

  • $NOUVEL-HOME = $DONNÉES-HOME + 15Go
  • $SWAP :taille égale ou créer une nouvelle partition de taille différente qu’on rattachera au système.

Tu crées les partitions $NOUVELLE-RACINE, $NOUVEL-HOME, $SWAP aux tailles voulues.
Tu montes les partitions de $NOUVELLE-RACINE,$NOUVEL-HOME.
Tu transfères les données par simple copie. Tu le rends démarrable en installant grub sur le MBR de $AUTRE-DISQUE.
Tu retouches son /etc/fstab pour refléter les montages de $AUTRE-DISQUE et effacer les montages de l’ancien disque.
Tu détaches l’ancien disque avant de démarrer sur $AUTRE-DISQUE.

Merci pour ta réponse.
En fait, quand je démarre la VM à partir de l’image img du disque complet, cela fonctionne.
Mais quand je démarre la VM sur l’image img uniquement de la partition /, il répond No Boot disk. ce qui me parait normal, vu qu’il n’y a que la partition et pas de MBR.

Ton approche est donc totalement différente.
Si j’ai bien compris.
Je crée une image disque img vide.
A l’intérieur, j’y créé 3 filesystem - Un /, Un /donnees, un swap
( avec les tailles désirées )
je monte cette image disk avec mount loop…etc…
j’y copie les donnees correspondant à chaque partition.

Par contre, je ne sais pas comment rendre ce fichier img bootable.

Encore merci

Cordialement

Calvin

Je n’ai que peu pratiqué xen. Ma connaissance de xen est superficielle.
En bonne feignasse, voici comment je m’y prendrais : je réglerais son ancien *.cfg où je remplacerais le nom de l’ancien fichier image par le nom du nouveau ou bien, encore plus économique, je renommerais le nouveau fichier image du nom de l’ancienne image sans rien toucher de son *.cfg.

Tiens un guide propre à xen où on transfère un système depuis une partition vers un fichier image.
virtuatopia.com/index.php/Bu … e_Guest_OS

Dans ce guide il est procédé autrement que par disque entier. Chaque partition a sa propre image.
La racine et swap sont contenus dans deux contenants, en deux fichiers images séparés.

Creating_a_Xen_Configuration_File

[quote]
Finally the disk = directive is used to map the disk images we have created to guest operating system devices. The following lines map the root and swap images to /dev/xvda1 and /dev/xvda2 respectively and define the root filesystem as /dev/xvda:

disk = [‘tap:aio:/xen/XenGuest1.img,xvda1,w’, ‘tap:aio:/xen/XenGuest1.swap,xvda2,w’]
root = “/dev/xvda1 ro”[/quote]

Encore MERCI beaucoup pour toutes ces infos

Je vais regarder tout çà et éventuellement continuer des recherches dans cette direction.

Encore Merci

Cordialement

Calvin

Perso, j’utiliserais rsync.

Live-cd sur la red-hat et rsync vers ta VM, en excluant les /proc /dev /sys

+1 avec AnatomicJC
Le plus simple est de copier tous les fichiers dans un lv (formaté) puis d’en faire une vm pv (paravirtualisée). Soit tu utilises le noyau de ton dom0, soit tu utilises un noyau xénifié dans ton domU (pas forcement celui de ta redhat) (avec pygrub). Tu auras de très bonnes performances et une faible consommation de ressources. Il faudra sans doute faire quelques retouches (que tu fais simplement dans un chroot) si ta vm ne démarre pas.
Inspire-toi :