Attribuer un disque dur physique à une machine virtuelle sur Proxmox

Il y a quelques semaines, j'ai décidé de changer la façon de gérer mes services. Après réflexion, la mise en place d'un serveur de virtualisation s'est imposé comme le meilleur choix pour y accueillir l’ensemble des serveurs dont j'ai et aurai besoin à l'avenir. Je ferai un article à ce sujet bientot. Ce serveur fonctionne donc sous Proxmox VE 3 dont vous trouverez une description sur le wiki de HomeServer-DIY. Détail auquel je n'avais pas pensé au départ: comment utiliser mes disques durs sur lesquels sont mes fichiers personnels sur un serveur virtualisé ? Proxmox propose une solution relativement simple, bien qu'un peu bancale.

Pour ce faire, il faut commencer par lister les disques durs physiques présents sur votre serveur. Donc on se connecte au serveur proxmox en SSH (pas à la VM, mais bien le serveur de virtualisation), et on lance un petit :

fdisk -l

Ce qui donne chez moi un gros pavé que j'ai raccourcis (un peu) pour garder un minimum de lisibilité:

Disk /dev/sda: 640.1 GB, 640135028736 bytes
255 heads, 63 sectors/track, 77825 cylinders, total 1250263728 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00099fe1

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1048575      523264   83  Linux
/dev/sda2         1048576  1250263039   624607232   8e  Linux LVM

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000f101

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63  1953520064   976760001   83  Linux

Disk /dev/sdc: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc50a76a3

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1              63  3907024064  1953512001   83  Linux

On y voit 2 disques en plus du disque sur lequel proxmox est installé: /dev/sdb et /dev/sdc, et la présence de partition sur chacun d'eux /dev/sdb1 et /dev/sdd1.

Pour dédier ces disques à une VM, une simple ligne de commande suffit. Toujours en ssh:

qm set 104 -ide1 /dev/sdb

Les variables de cette commandes sont relativement simples:

104 est l'id de la VM

  • -ide1 est le numéro de port IDE sur lequel la VM verra le disque branché. Sur proxmox les ports IDE vont de 0 à 4 (ide0, etc) J'ai aussi testé avec succès l'attribution d'un port sata via la variable -sata0.
  • /dev/sdb est l'emplacement du disque physique sur votre serveur. J'ai réussi le montage d'une partition sur une VM en remplaçant /dev/sdb par /dev/sdb1.

Une fois votre commande entrée votre disque dur physique sera attribué à votre VM à son prochain démarrage. Cette attribution est persistante, pas besoin de recommencer la manip. Il est par contre nécessaire d'arrêter complètement la VM pour que ce soit pris en compte.

J'ai dit en introduction que cette solution est bancale. En effet, si la première attribution d'un disque sur le port ide1 n'a poser aucun soucis, je n'ai pas réussi ensuite à faire pareil pour un deuxième disque sur le port ide2 ou un autre. J'avais systématiquement le message:

unable to change media type

La seule solution que j'ai trouvée a été d'attribuer ce deuxième disque à un port sata par la variable -sata0. D'autres on ce même problème d’après mes rapides recherches, mais je n'ai pas eu le temps d'approfondir la question.

Source.