Ignorer les liens de navigation
Quitter l'aperu
| Guide d'administration d'Oracle VM Server for SPARC 3.0 Oracle VM Server for SPARC (Français)

Périmètre de la recherche:

- Ce document
- Toute la bibliothque

## Utilisation des fonctions virtuelles SR-IOV PCIe

La prise en charge de la fonction SR-IOV (virtualisation d'E/S à root unique) PCIe (Peripheral Component Interconnect Express) a été ajoutée à la version 2.2 de Oracle VM Server for SPARC.

### Présentation de SR-IOV

L'implémentation SR-IOV est basée sur la version 1.1 de la norme telle que définie par le consortium PCI-SIG. La norme SR-IOV permet le partage efficace de périphériques PCIe entre des machines virtuelles et est implémenté dans le matériel afin d'atteindre des performances d'E/S comparables à des performances natives. La spécification SR-IOV définit une nouvelle norme dans laquelle les nouveaux périphériques créés permettent à la machine virtuelle d'être directement connectée au périphérique d'E/S.

Une ressource d'E/S unique, appelée fonction physique, peut être partagée par plusieurs machines virtuelles. Les périphériques partagés fournissent des ressources dédiées et utilisent également des ressources communes partagées. De cette manière, chaque machine virtuelle a accès à des ressources uniques. Par conséquent, sous réserve de prise en charge par le SE et de matériel approprié, un périphérique PCIe tel qu'un port Ethernet sur lequel la fonction SR-IOV est activée peut apparaître sous la forme de plusieurs périphériques physiques distincts possédant chacun son propre espace de configuration PCIe.

Pour plus d'informations sur SR-IOV, visitez le site Web de PCI-SIG.

La figure suivante illustre la relation entre les fonctions virtuelles et une fonction physique dans un domaine d'E/S.

Figure 6-3 Utilisation de fonctions virtuelles (VF) et d'une fonction physique (PF) dans un domaine d'E/S.

SR-IOV présente les types de fonctions suivants :

- Fonction physique : fonction PCI prenant en charge les fonctionnalités SR-IOV telles que définies dans la norme SR-IOV. Une fonction physique contient la structure des fonctions SR-IOV et gère la fonctionnalité SR-IOV. Les fonctions physiques sont des fonctions PCIe à part entière qui peuvent être découvertes, gérées et manipulées comme n'importe quel autre périphérique PCIe. Les fonctions physiques peuvent être utilisées pour configurer et contrôler un périphérique PCIe.

- Fonction virtuelle : fonction PCI associée à une fonction physique. Une fonction virtuelle est une fonction PCIe allégée qui partage une ou plusieurs ressources physiques avec la fonction physique et avec d'autres fonctions virtuelles associées à la même fonction physique. A la différence d'une fonction physique, une fonction virtuelle peut uniquement configurer son propre comportement.

Chaque périphérique SR-IOV peut avoir une fonction physique et chaque fonction physique peut se voir associer jusqu'à 64 000 fonctions virtuelles. Ce nombre varie en fonction du périphérique SR-IOV concerné. Les fonctions virtuelles sont créées par la fonction physique.

Une fois que SR-IOV est activé dans la fonction physique, l'espace de configuration PCI de chaque fonction virtuelle est accessible via le numéro de bus, de périphérique et de fonction de la fonction physique. Chaque fonction virtuelle dispose d'un espace mémoire PCI utilisé pour mapper son jeu de registres. Les pilotes de périphérique de la fonction virtuelle agissent sur le jeu de registres pour activer sa fonctionnalité et la fonction virtuelle apparaît sous la forme d'un véritable périphérique PCI. Après sa création, vous pouvez directement affecter une fonction virtuelle à un domaine d'E/S. Cette fonctionnalité permet à la fonction virtuelle de partager le périphérique physique et de réaliser des E/S sans surcharge de la CPU et du logiciel hyperviseur.

Les périphériques dotés de fonctionnalités SR-IOV présentent les avantages suivants :

- Performances accrues et latence réduite : accès direct au matériel à partir d'un environnement de machines virtuelles

- Réduction des coûts : réduction des dépenses d'investissement et d'exploitation, notamment :

  - Economies d'énergie

  - Nombre réduit d'adaptateurs

  - Câblage moindre

  - Moins de ports de commutateur

### Configuration matérielle et logicielle requise pour SR-IOV

La prise en charge de la fonction SR-IOV PCIe a été ajoutée à la version 2.2 d'Oracle VM Server for SPARC. Pour plus d'informations sur les versions requises du matériel, des logiciels et du microprogramme, reportez-vous à la section Configuration matérielle et logicielle SR-IOV PCIe du manuel Notes de version d’Oracle VM Server for SPARC 3.0.

Pour créer et supprimer des fonctions virtuelles dans les périphériques des fonctions virtuelles SR-IOV, vous devez commencer par activer la virtualisation d'E/S sur le bus PCIe.

Vous pouvez utiliser la commande `ldm set-io` ou `ldm add-io` pour paramétrer la propriété `iov` sur `on`. Vous pouvez également utiliser la commande `ldm add-domain` ou `ldm set-domain` pour paramétrer la propriété `rc-add-policy` sur `iov`. Reportez-vous à la page de manuel `ldm`(1M).

La réinitialisation du domaine root affecte la fonction SR-IOV. En conséquence, planifiez correctement vos modifications de configuration d'E/S directes pour optimiser les modifications relatives à la fonction SR-IOV sur le domaine root et pour réduire les réinitialisations du domaine root.

### Restrictions actuelles de la fonction SR-IOV

Remarque - Pour réduire le nombre de réinitialisations au strict minimum, réalisez plusieurs opérations au cours d'une même reconfiguration retardée.

Dans cette version, la fonction SR-IOV présente les restrictions suivantes :

- La migration est désactivée pour tout domaine auquel une ou plusieurs fonctions virtuelles sont affectées.

- Vous pouvez uniquement détruire la dernière fonction virtuelle créée pour une fonction physique. Par conséquent, si vous créez trois fonctions virtuelles, la première fonction virtuelle que vous pouvez détruire doit être la troisième.

- Seules les cartes SR-IOV Ethernet sont prises en charge.

- La fonction SR-IOV est uniquement activée pour les cartes SR-IOV installées sur le domaine `primary`. Si une carte SR-IOV est assignée à un domaine par le biais de l'affectation de bus PCIe ou la fonction d'E/S directes (DIO), la fonction SR-IOV n'est pas activée pour cette carte.

- Vous pouvez activer les configurations VLAN de fonctions virtuelles en définissant la propriété `pvid` ou la propriété `vid`. Ces deux propriétés de fonctions virtuelles ne peuvent pas être définies simultanément.

### Planification de l'utilisation de fonctions virtuelles SR-IOV PCIe

Avant de créer et de détruire des fonctions virtuelles, planifiez à l'avance les fonctions virtuelles que vous souhaitez utiliser dans votre configuration. Lors de la création et de la destruction de fonctions virtuelles, le domaine `primary` doit être réinitialisé. Cette réinitialisation a une incidence négative sur tous les domaines d'E/S comportant des extrémités PCIe ou sur lesquels les fonctions virtuelles SR-IOV sont configurées. Il est donc important de réduire au strict minimum le nombre de réinitialisations du domaine `primary`. Déterminez le nombre de fonctions virtuelles dont vous avez besoin à partir des différents périphériques SR-IOV pour satisfaire vos besoins de configuration actuels et à venir.

Pour plus d'informations sur les domaines d'E/S, reportez-vous à la section Lignes directrices pour la création d'un domaine d'E/S.

Procédez aux étapes générales suivantes pour planifier et réaliser la configuration et l'affectation des fonctions virtuelles SR-IOV :

1. Faites l'inventaire des fonctions physiques SR-IOV PCIe disponibles sur votre système et déterminez celles qui répondent le mieux à vos besoins.

   Utilisez les commandes suivantes pour obtenir les informations requises :

   `ldm list-io`

     Identifie les périphériques de fonction physique SR-IOV.

   `prtdiag -v`

     Identifie les cartes SR-IOV PCIe et les périphériques intégrés disponibles.

   `ldm list-io -l` pf-name

     Identifie des informations supplémentaires à propos d'une fonction physique donnée, par exemple le nombre maximum de fonctions virtuelles prises en charge par le périphérique.

   `ldm list-io -d` pf-name

     Identifie les propriétés spécifiques au périphérique prises en charge par le périphérique. Reportez-vous à la section Rubriques SR-IOV avancées.

2. Démarrez une reconfiguration retardée sur le domaine root.

       primary# ldm start-reconf primary

3. Activez les opérations de virtualisation d'E/S pour un bus PCIe.

       primary# ldm set-io iov=on bus

4. Créez le nombre de fonctions virtuelles requises sur la fonction physique SR-IOV spécifiée.

   Utilisez la commande suivante pour créer la fonction virtuelle :

       primary# ldm create-vf pf-name

   Utilisez la commande `ldm create-vf` pour définir les propriétés spécifiques au périphérique et au réseau d'une fonction virtuelle. La propriété `unicast-slots` est spécifique au périphérique. Les propriétés `mac-addr`, `alt-mac-addrs`, `mtu`, `pvid` et `vid` sont spécifiques au réseau.

   Notez que les propriétés spécifiques au réseau `mac-addr`, `alt-mac-addrs` et `mtu` peuvent être modifiées en procédant comme suit :

   - Lorsque la fonction virtuelle est assignée au `domaine` primary : vous devez démarrer une reconfiguration retardée.

   - Lorsque la fonction virtuelle est affectée à un domaine d'E/S actif : une demande de modification de propriété est rejetée car la modification doit être effectuée lorsque le domaine propriétaire est dans l'état inactif ou lié.

   - Lorsque la fonction virtuelle est assignée à un domaine autre que le domaine `primary` et qu'une reconfiguration retardée est déjà en vigueur : une demande de modification de propriété échoue avec affichage d'un message d'erreur.

   Les propriétés spécifiques au réseau `pvid` et `vid` peuvent être modifiées sans restrictions.

   Lors d'une reconfiguration retardée, vous pouvez créer de nouvelles fonctions virtuelles et démarrer le domaine `primary` une seule fois pour appliquer les modifications. Vous n'avez pas besoin de réinitialiser le domaine `primary` après la création de chaque fonction virtuelle.

   Une fonction physique SR-IOV donnée peut prendre en charge un grand nombre de fonctions virtuelles. Créez uniquement les fonctions virtuelles dont vous avez besoin. Pour connaître le nombre de configurations maximal recommandé, reportez-vous à la section Rubriques SR-IOV avancées.

5. Utilisez la commande `ldm add-config` pour enregistrer la configuration sur le processeur de service.

6. Réinitialisez le domaine root pour créer la fonction virtuelle.

7. Vous devez arrêter un domaine actif avant de lui affecter une fonction virtuelle à l'aide de la commande `ldm add-io`. Réduisez au minimum l'indisponibilité des domaines d'E/S en effectuant simultanément toutes les modifications de domaines d'E/S. En procédant ainsi, vous réduisez le nombre de réinitialisations du domaine `primary` requises pour définir de telles configurations.

8. Initialisez les domaines d'E/S et configurez les fonctions virtuelles comme s'il s'agissait de n'importe quel autre périphérique réseau.

   Pour plus d'informations sur les restrictions des fonctions virtuelles, reportez-vous à la section Rubriques SR-IOV avancées.

### Création, modification et destruction de fonctions virtuelles

Cette section décrit la création, la modification et la destruction de fonctions virtuelles.

### Procédure de création d'une fonction virtuelle

1. Identifiez le périphérique de fonction physique.

       primary# ldm list-io

   Notez que le nom de la fonction physique inclut les informations d'emplacement de la carte SR-IOV PCIe ou du périphérique intégré.

2. Démarrez une reconfiguration retardée sur le domaine de contrôle.

       primary# ldm start-reconf primary

3. Activez la virtualisation d'E/S en définissant `iov=on` uniquement s'il n'est pas déjà activé pour le bus qui a la fonction physique.

       primary# ldm set-io iov=on bus

4. Créez une fonction virtuelle à partir d'une fonction physique.

       primary# ldm create-vf [mac-addr=num] [alt-mac-addrs=[auto|num1,[auto|num2,...]]]
         [pvid=pvid] [vid=vid1,vid2,...] [mtu=size] [name=value...] pf-name

   Remarque - Pour les périphériques réseau, l'adresse MAC est automatiquement attribuée.

   Vous pouvez utiliser soit le nom du chemin d'accès, soit le pseudonyme pour indiquer des fonctions virtuelles. Toutefois, il est recommandé d'utiliser le pseudonyme.

Exemple 6-1 Création d'une fonction virtuelle

L'exemple suivant montre des informations sur la fonction physique `/SYS/MB/NET0/IOVNET.PF0` :

- Cette fonction physique est issue d'un périphérique réseau `NET0` intégré.

- La chaîne `IOVNET` indique que la fonction physique est un périphérique réseau SR-IOV.

    primary# ldm list-io
    NAME                                      TYPE   BUS      DOMAIN   STATUS
    ----                                      ----   ---      ------   ------
    niu_0                                     NIU    niu_0    primary
    niu_1                                     NIU    niu_1    primary
    pci_0                                     BUS    pci_0    primary
    pci_1                                     BUS    pci_1    primary
    /SYS/MB/PCIE0                             PCIE   pci_0    primary  OCC
    /SYS/MB/PCIE2                             PCIE   pci_0    primary  OCC
    /SYS/MB/PCIE4                             PCIE   pci_0    primary  OCC
    /SYS/MB/PCIE6                             PCIE   pci_0    primary  EMP
    /SYS/MB/PCIE8                             PCIE   pci_0    primary  EMP
    /SYS/MB/SASHBA                            PCIE   pci_0    primary  OCC
    /SYS/MB/NET0                              PCIE   pci_0    primary  OCC
    /SYS/MB/PCIE1                             PCIE   pci_1    primary  OCC
    /SYS/MB/PCIE3                             PCIE   pci_1    primary  OCC
    /SYS/MB/PCIE5                             PCIE   pci_1    primary  OCC
    /SYS/MB/PCIE7                             PCIE   pci_1    primary  EMP
    /SYS/MB/PCIE9                             PCIE   pci_1    primary  EMP
    /SYS/MB/NET2                              PCIE   pci_1    primary  OCC
    /SYS/MB/NET0/IOVNET.PF0                   PF     pci_0    primary
    /SYS/MB/NET0/IOVNET.PF1                   PF     pci_0    primary
    /SYS/MB/PCIE5/IOVNET.PF0                  PF     pci_1    primary
    /SYS/MB/PCIE5/IOVNET.PF1                  PF     pci_1    primary
    /SYS/MB/NET2/IOVNET.PF0                   PF     pci_1    primary
    /SYS/MB/NET2/IOVNET.PF1                   PF     pci_1    primary

La commande suivante fournit plus d'informations sur la fonction physique spécifiée. La valeur `maxvfs` indique le nombre maximal de fonctions virtuelles pris en charge par le périphérique.

    primary# ldm list-io -l /SYS/MB/NET0/IOVNET.PF0
    NAME                                      TYPE   BUS      DOMAIN   STATUS
    ----                                      ----   ---      ------   ------
    /SYS/MB/NET0/IOVNET.PF0                   PF     pci_0    primary
    [pci@400/pci@1/pci@0/pci@4/network@0]
        maxvfs = 7

Les exemples suivants indiquent comment créer une fonction virtuelle :

- Cet exemple crée une fonction virtuelle sans définir de propriété facultative. Dans ce cas, l'adresse MAC pour une fonction virtuelle de classe réseau est automatiquement attribuée.

      primary# ldm start-reconf primary
      Initiating a delayed reconfiguration operation on the primary domain.
      All configuration changes for other domains are disabled until the primary
      domain reboots, at which time the new configuration for the primary domain
      will also take effect.

      primary# ldm set-io iov=on pci_0

      primary# ldm create-vf /SYS/MB/NET0/IOVNET.PF0
      ------------------------------------------------------------------------------
      Notice: The primary domain is in the process of a delayed reconfiguration.
      Any changes made to the primary domain will only take effect after it reboots.
      ------------------------------------------------------------------------------
      Created new vf: /SYS/MB/NET0/IOVNET.PF0.VF0

- Cet exemple crée une fonction virtuelle tout en définissant la propriété `mac-addr` sur `00:14:2f:f9:14:c0` et la propriété `vid` sur les ID de VLAN `2` et `3`.

      primary# ldm create-vf mac-addr=00:14:2f:f9:14:c0 vid=2,3 /SYS/MB/NET0/IOVNET.PF0

- Cet exemple crée une fonction virtuelle disposant de deux adresses MAC. Une adresse MAC est automatiquement attribuée, tandis que l'autre est explicitement spécifiée comme `00:14:2f:f9:14:c2`.

      primary# ldm create-vf alt-mac-addrs=auto,00:14:2f:f9:14:c2 /SYS/MB/NET0/IOVNET.PF0

### Procédure de modification d'une fonction virtuelle

La commande `ldm set-io` bus modifie la configuration en cours d'une fonction virtuelle en modifiant les valeurs des propriétés ou en définissant de nouvelles propriétés. Cette commande permet de modifier à la fois les propriétés propres au réseau et les propriétés spécifiques au périphérique. Pour plus d'informations sur les propriétés spécifiques aux périphériques reportez-vous à la section Rubriques SR-IOV avancées.

La commande `ldm set-io` permet de modifier les propriétés suivantes :

- `mac-addr`, `alt-mac-addrs` et `mtu`

  Pour modifier ces propriétés de fonction virtuelle, arrêtez tout d'abord le domaine propriétaire de la fonction virtuelle et démarrez une reconfiguration retardée. Vous devez réinitialiser le domaine pour que les changements soient appliqués.

- `pvid` et `vid`

  Vous pouvez modifier ces propriétés de façon dynamique alors que les fonctions virtuelles sont assignées à un domaine. Notez qu'une telle modification peut entraîner un changement du trafic réseau d'une fonction virtuelle active. Plus précisément, la définition de la propriété `pvid` active un VLAN transparent. La configuration de la propriété `vid` de manière à ce qu'elle spécifie des ID de VLAN autorise le trafic VLAN vers les VLAN spécifiés.

- Propriétés spécifiques aux périphériques

  Utilisez la commande `ldm list-io -d` pf-name pour afficher la liste des propriétés spécifiques au périphérique valides. Vous pouvez modifier ces propriétés pour la fonction physique aussi bien que pour la fonction virtuelle. Vous devez lancer une reconfiguration retardée et redémarrer le domaine `primary` pour que les changements soient appliqués. Pour plus d'informations sur les propriétés spécifiques aux périphériques, reportez-vous à la section Rubriques SR-IOV avancées.

- Modifiez une fonction virtuelle.

      primary# ldm set-io name=value [name=value...] vf-name

Exemple 6-2 Modification d'une fonction virtuelle

Les exemples suivants illustrent l'utilisation de la commande `ldm set-io` pour définir les propriétés d'une fonction virtuelle :

- L'exemple suivant modifie la fonction virtuelle indiquée, `/SYS/MB/NET0/IOVNET.PF0.VF0`, et spécifie qu'elle fait partie des VLAN d'ID `2`, `3` et `4` :

      primary# ldm set-io vid=2,3,4 /SYS/MB/NET0/IOVNET.PF0.VF0

  Notez que cette commande modifie de façon dynamique l'association à un VLAN d'une fonction virtuelle. Pour permettre l'utilisation de ces VLAN, les interfaces VLAN dans les domaines d'E/S doivent être configurées à l'aide des commandes de mise en réseau du SE Oracle Solaris appropriées.

- Dans l'exemple suivant, la valeur de la propriété `pvid` est définie sur `2` pour la fonction virtuelle `/SYS/MB/NET0/IOVNET.PF0.VF0`, ce qui attribue de façon transparente la fonction virtuelle au VLAN `2`. C'est-à-dire que la fonction virtuelle ne visualisera aucun trafic VLAN étiqueté.

      primary# ldm set-io pvid=2 /SYS/MB/NET0/IOVNET.PF0.VF0

- L'exemple suivant affecte trois adresses MAC automatiquement attribuées à une fonction virtuelle. Les adresses alternatives permettent la création de cartes d'interface réseau virtuelles (VNIC) Oracle Solaris 11 venant s'ajouter à une fonction virtuelle. Notez que pour utiliser des VNIC, vous devez exécuter le SE Oracle Solaris 11 dans le domaine.

  Remarque - Avant d'exécuter cette commande, arrêtez le domaine propriétaire de la fonction virtuelle.

      primary# ldm set-io alt-mac-addrs=auto,auto,auto /SYS/MB/NET0/IOVNET.PF0.VF0

- Dans l'exemple suivant, la propriété spécifique au périphérique `unicast-slots` est définie sur `12` pour la fonction virtuelle spécifiée. Pour identifier les propriétés spécifiques au périphérique valides pour une fonction physique, utilisez la commande `ldm list-io -d` pf-name.

      primary# ldm set-io unicast-slots=12 /SYS/MB/NET0/IOVNET.PF0.VF0

      All configuration changes for other domains are disabled until the primary
      domain reboots, at which time the new configuration for the primary domain
      will also take effect.

### Procédure de destruction d'une fonction virtuelle

Vous pouvez détruire une fonction virtuelle si elle n'est pas affectée à un domaine. Vous pouvez uniquement supprimer une fonction virtuelle dans le sens inverse de l'ordre séquentiel de création, de sorte à ne supprimer que la dernière fonction virtuelle créée. La configuration résultante est validée par le pilote de la fonction physique. Vous devez démarrer une reconfiguration retardée et redémarrer le domaine pour que les changements soient appliqués.

1. Démarrez une reconfiguration retardée sur le domaine root.

       primary# ldm start-reconf primary

2. Détruisez une fonction virtuelle.

       primary# ldm destroy-vf vf-name

Exemple 6-3 Destruction d'une fonction virtuelle.

L'exemple suivant illustre la destruction de la fonction virtuelle `/SYS/MB/NET0/IOVNET.PF0.VF0` :

    primary# ldm destroy-vf  /SYS/MB/NET0/IOVNET.PF0.VF0

    All configuration changes for other domains are disabled until the primary
    domain reboots, at which time the new configuration for the primary domain
    will also take effect.

### Ajout et suppression de fonctions virtuelles sur des domaines d'E/S

### Procédure d'ajout d'une fonction virtuelle à un domaine d'E/S

La commande suivante ajoute une fonction virtuelle à un domaine logique :

    ldm add-io vf-name ldom

vf-name est le pseudonyme du nom du chemin d'accès de la fonction virtuelle. Il est préférable d'utiliser le pseudonyme. ldom représente le nom du domaine auquel vous ajoutez la fonction virtuelle. L'invité spécifié doit avoir l'état inactif ou lié. Si vous spécifiez le domaine `primary`, vous devez démarrer une reconfiguration retardée.

- Ajoutez une fonction virtuelle.

      primary# ldm add-io vf-name ldom

  Le nom du chemin d'accès du périphérique de la fonction virtuelle dans le domaine est le chemin indiqué dans la sortie `list-io -l`.

Exemple 6-4 Ajout d'une fonction virtuelle.

L'exemple suivant illustre l'ajout de la fonction virtuelle `/SYS/MB/NET0/IOVNET.PF0.VF0` au domaine `ldg1`. Pour que la commande aboutisse, il faut que le domaine spécifié ait l'état inactif ou lié. Si le domaine est le domaine `primary`, vous devez démarrer une reconfiguration retardée.

    primary# ldm add-io /SYS/MB/NET0/IOVNET.PF0.VF0 ldg1

Si la commande s'exécute correctement, la fonction virtuelle est ajoutée au domaine `ldg1`. Si le domaine `ldg1` est déjà associé (ou s'il est associé par la suite), le domaine peut être réinitialisé et le SE invité peut utiliser la fonction virtuelle ajoutée pour les opérations d'E/S.

### Procédure de suppression d'une fonction virtuelle d'un domaine d'E/S

La commande suivante supprime une fonction virtuelle SR-IOV d'un domaine logique :

    ldm remove-io vf-name ldom

vf-name est le pseudonyme du nom du chemin d'accès de la fonction virtuelle. Il est préférable d'utiliser le pseudonyme du périphérique. ldom représente le nom du domaine duquel vous supprimez la fonction virtuelle. L'invité spécifié doit avoir l'état inactif ou lié. Si vous spécifiez le domaine `primary`, vous devez démarrer une reconfiguration retardée.

Remarque - Avant de supprimer la fonction virtuelle du domaine, assurez-vous qu'elle n'est pas indispensable à l'initialisation du domaine.

- Supprimez une fonction virtuelle.

      primary# ldm rm-io vf-name ldom

Exemple 6-5 Suppression d'une fonction virtuelle

L'exemple suivant illustre la suppression de la fonction virtuelle `/SYS/MB/NET0/IOVNET.PF0.VF0` du domaine `ldg1` :

    primary# ldm rm-io /SYS/MB/NET0/IOVNET.PF0.VF0 ldg1

Si la commande s'exécute correctement, la fonction virtuelle est supprimée du domaine `ldg1`. Lorsque `ldg1` est redémarré, la fonction virtuelle spécifiée n'apparaît plus dans le domaine.

Si le domaine qui a la fonction virtuelle est le domaine `primary`, vous devez démarrer une reconfiguration retardée.

### SR-IOV : réinitialisation du domaine root

Faites très attention lorsque vous réinitialisez le domaine `primary`. Reportez-vous à la section Réinitialisation du domaine root. Comme pour les emplacements PCIe dans le domaine d'E/S, les points évoqués dans cette section s'appliquent également aux fonctions virtuelles assignées à un domaine d'E/S.

### Utilisation d'une fonction virtuelle SR-IOV pour créer un domaine d'E/S

La procédure suivante décrit la création d'un domaine d'E/S incluant des fonctions virtuelles SR-IOV PCIe.

### Procédure de création d'un domaine d'E/S par affectation d'une fonction virtuelle SR-IOV

Planifiez à l'avance le nombre de réinitialisations du domaine `primary` pour réduire les indisponibilités.

1. Identifiez une fonction physique SR-IOV à partager avec un domaine d'E/S utilisant la fonctionnalité SR-IOV.

       primary# ldm list-io

2. Obtenez des informations détaillées sur la fonction physique que vous souhaitez partager.

       primary# ldm list-io -l pf-name

3. Démarrez une reconfiguration retardée sur le domaine root.

       primary# ldm start-reconf primary

4. Activez la virtualisation d'E/S pour un bus PCIe.

       primary# ldm set-io iov=on bus

5. Créez une ou plusieurs fonctions virtuelles pour la fonction physique.

       primary# ldm create-vf pf-name

   Vous pouvez exécuter cette commande pour chaque fonction virtuelle que vous souhaitez créer. Si vous exécutez ces commandes en batch, vous ne devez réinitialiser qu'une seule fois le domaine `primary`.

6. Arrêtez tous les domaines d'E/S auxquels une fonction virtuelle ou un périphérique d'extrémité PCIe est affecté.

       primary# ldm stop ldom

7. Réinitialisez le domaine root

       primary# reboot

8. Affichez la liste des fonctions virtuelles disponibles sur le domaine `primary`.

       primary# ldm list-io

9. Affectez la fonction virtuelle à un domaine.

       primary# ldm add-io vf-name ldom

10. Associez et démarrez le domaine.

        primary# ldm bind ldom
        primary# ldm start ldom

11. Vérifiez que la fonction virtuelle est disponible sur le domaine d'E/S.

    La commande Oracle Solaris 11 suivante affiche la disponibilité de la fonction virtuelle :

        guest# dladm show-phys

Exemple 6-6 Création d'un domaine d'E/S par affectation d'une fonction virtuelle SR-IOV

L'exemple suivant décrit la création d'une fonction virtuelle, `/SYS/MB/NET0/IOVNET.PF0.VF0`, pour une fonction physique, `/SYS/MB/NET0/IOVNET.PF0`, et l'assignation de la fonction virtuelle au domaine `ldg1`.

La sortie `ldm list-io` suivante indique que la fonction physique `/SYS/MB/NET0/IOVNET.PF0` est disponible :

    primary# ldm list-io
    NAME                                      TYPE   BUS      DOMAIN   STATUS
    ----                                      ----   ---      ------   ------
    niu_0                                     NIU    niu_0    primary
    niu_1                                     NIU    niu_1    primary
    pci_0                                     BUS    pci_0    primary
    pci_1                                     BUS    pci_1    primary
    /SYS/MB/PCIE0                             PCIE   pci_0    primary  OCC
    /SYS/MB/PCIE2                             PCIE   pci_0    primary  OCC
    /SYS/MB/PCIE4                             PCIE   pci_0    primary  OCC
    /SYS/MB/PCIE6                             PCIE   pci_0    primary  EMP
    /SYS/MB/PCIE8                             PCIE   pci_0    primary  EMP
    /SYS/MB/SASHBA                            PCIE   pci_0    primary  OCC
    /SYS/MB/NET0                              PCIE   pci_0    primary  OCC
    /SYS/MB/PCIE1                             PCIE   pci_1    primary  OCC
    /SYS/MB/PCIE3                             PCIE   pci_1    primary  OCC
    /SYS/MB/PCIE5                             PCIE   pci_1    primary  OCC
    /SYS/MB/PCIE7                             PCIE   pci_1    primary  EMP
    /SYS/MB/PCIE9                             PCIE   pci_1    primary  EMP
    /SYS/MB/NET2                              PCIE   pci_1    primary  OCC
    /SYS/MB/NET0/IOVNET.PF0                   PF     pci_0    primary
    /SYS/MB/NET0/IOVNET.PF1                   PF     pci_0    primary
    /SYS/MB/PCIE5/IOVNET.PF0                  PF     pci_1    primary
    /SYS/MB/PCIE5/IOVNET.PF1                  PF     pci_1    primary
    /SYS/MB/NET2/IOVNET.PF0                   PF     pci_1    primary
    /SYS/MB/NET2/IOVNET.PF1                   PF     pci_1    primary

La commande suivante affiche des détails supplémentaires sur la fonction physique `/SYS/MB/NET0/IOVNET.PF0`, notamment le nombre maximal de fonctions virtuelles pouvant être créées :

    primary# ldm list-io -l /SYS/MB/NET0/IOVNET.PF0
    NAME                                      TYPE   BUS      DOMAIN   STATUS
    ----                                      ----   ---      ------   ------
    /SYS/MB/NET0/IOVNET.PF0                   PF     pci_0    primary
    [pci@400/pci@1/pci@0/pci@4/network@0]
        maxvfs = 7

La commande suivante crée une fonction virtuelle appelée `/SYS/MB/NET0/IOVNET.PF0.VF0` pour la fonction physique `/SYS/MB/NET0/IOVNET.PF0` :

    primary# ldm start-reconf primary
    primary# ldm set-io iov=on pci_0
    primary# ldm create-vf /SYS/MB/NET0/IOVNET.PF0

    ------------------------------------------------------------------------------
    Notice: The primary domain is in the process of a delayed reconfiguration.
    Any changes made to the primary domain will only take effect after it reboots.
    ------------------------------------------------------------------------------
    Created new vf: /SYS/MB/NET0/IOVNET.PF0.VF0

Etant donné que le domaine d'E/S `ldg1` comporte un périphérique d'extrémité PCIe créé à l'aide de la fonction DIO, vous devez arrêter le domaine `ldg1` et réinitialiser le domaine `primary` en procédant comme suit :

    primary# ldm stop ldg1
    primary# reboot

La commande suivante permet de vérifier que la nouvelle fonction virtuelle `/SYS/MB/NET0/IOVNET.PF0.VF0` existe :

    primary# ldm list-io
    NAME                                      TYPE   BUS      DOMAIN   STATUS
    ----                                      ----   ---      ------   ------
    niu_0                                     NIU    niu_0    primary
    niu_1                                     NIU    niu_1    primary
    pci_0                                     BUS    pci_0    primary  IOV
    pci_1                                     BUS    pci_1    primary
    /SYS/MB/PCIE0                             PCIE   pci_0    primary  OCC
    /SYS/MB/PCIE2                             PCIE   pci_0    primary  OCC
    /SYS/MB/PCIE4                             PCIE   pci_0    primary  OCC
    /SYS/MB/PCIE6                             PCIE   pci_0    primary  EMP
    /SYS/MB/PCIE8                             PCIE   pci_0    primary  EMP
    /SYS/MB/SASHBA                            PCIE   pci_0    primary  OCC
    /SYS/MB/NET0                              PCIE   pci_0    primary  OCC
    /SYS/MB/PCIE1                             PCIE   pci_1    primary  OCC
    /SYS/MB/PCIE3                             PCIE   pci_1    primary  OCC
    /SYS/MB/PCIE5                             PCIE   pci_1    primary  OCC
    /SYS/MB/PCIE7                             PCIE   pci_1    primary  EMP
    /SYS/MB/PCIE9                             PCIE   pci_1    primary  EMP
    /SYS/MB/NET2                              PCIE   pci_1    primary  OCC
    /SYS/MB/NET0/IOVNET.PF0                   PF     pci_0    primary
    /SYS/MB/NET0/IOVNET.PF1                   PF     pci_0    primary
    /SYS/MB/PCIE5/IOVNET.PF0                  PF     pci_1    primary
    /SYS/MB/PCIE5/IOVNET.PF1                  PF     pci_1    primary
    /SYS/MB/NET2/IOVNET.PF0                   PF     pci_1    primary
    /SYS/MB/NET2/IOVNET.PF1                   PF     pci_1    primary
    /SYS/MB/NET0/IOVNET.PF0.VF0               VF     pci_0

La commande suivante ajoute la fonction virtuelle `/SYS/MB/NET0/IOVNET.PF0.VF0` au domaine `ldg1` :

    primary# ldm add-io /SYS/MB/NET0/IOVNET.PF0.VF0 ldg1

Les commandes suivantes associent et redémarrent le domaine `ldg1` :

    primary# ldm bind ldg1
    primary# ldm start ldg1

La commande suivante vérifie que la fonction virtuelle est disponible et peut être utilisée :

    guest# dladm show-phys
    LINK              MEDIA                STATE      SPEED  DUPLEX    DEVICE
    net0              Ethernet             up         0      unknown   vnet0
    net1              Ethernet             up         1000   full      igbvf0

### Rubriques SR-IOV avancées

Cette section décrit plusieurs éléments à prendre en compte lorsque vous utilisez des périphériques prenant en charge la fonction SR-IOV PCIe.

- Initialisation d'un domaine d'E/S à l'aide d'une fonction virtuelle SR-IOV. Une fonction virtuelle SR-IOV offre le même type de fonctionnalités que n'importe quel autre périphérique PCIe, notamment la possibilité d'utiliser une fonction virtuelle en tant que périphérique d'initialisation d'un domaine logique. Une fonction virtuelle de réseau par exemple peut être utilisée pour lancer l'initialisation via le réseau afin d'installer le SE Oracle Solaris dans un domaine d'E/S.

  Remarque - Lors de l'initialisation du SE Oracle Solaris à partir d'une fonction virtuelle, assurez-vous que le SE Oracle Solaris en cours de chargement prend en charge les périphériques de fonction virtuelle. Si tel est le cas, vous pouvez poursuivre l'installation comme prévu.

- Nombre maximal de domaines d'E/S et de fonctions virtuelles pris en charge. Les périphériques d'extrémité PCIe et les fonctions virtuelles SR-IOV d'un bus PCIe donné peuvent être affectés à 15 domaines au maximum. Les ressources PCIe telles que les vecteurs d'interruption de chaque bus PCIe sont réparties entre le domaine root et les domaines d'E/S. De ce fait, le nombre de périphériques pouvant être affectés à un domaine d'E/S particulier est également limité. Soyez donc attentif à ne pas affecter un grand nombre de fonctions virtuelles à un même domaine d'E/S. Pour une description des problèmes liés à SR-IOV, reportez-vous au manuel Notes de version d’Oracle VM Server for SPARC 3.0.

#### Propriétés SR-IOV spécifiques aux périphériques

Les pilotes de périphérique d'une fonction physique SR-IOV peuvent exporter des propriétés spécifiques aux périphériques Celles-ci peuvent être utilisées pour régler l'allocation des ressources de la fonction physique ainsi que celle de ses fonctions virtuelles. Pour plus d'informations sur les propriétés, reportez-vous à la page de manuel relative au pilote de la fonction physique, comme par exemple les pages de manuel `igb`(7D) et `ixgbe`(7D).

La commande `ldm list-io -d` affiche les propriétés spécifiques au périphérique exportées par le pilote de périphérique de la fonction physique spécifiée. Chaque propriété possède un nom, une brève description, une valeur par défaut, des valeurs maximales et un ou plusieurs des indicateurs suivants :

`P`

  Concerne une fonction physique

`V`

  Concerne une fonction virtuelle

`R`

  Paramètre en lecture seule ou à caractère informatif uniquement

    primary# ldm list-io -d pf-name

Utilisez la commande `ldm create-vf` ou la commande `ldm set-io` pour définir les propriétés de lecture-écriture d'une fonction physique ou virtuelle. Notez que, pour définir une propriété spécifique au périphérique, vous devez démarrer une reconfiguration retardée.

L'exemple suivant montre les propriétés spécifiques au périphérique exportées par le périphérique SR-IOV Intel 1Gbit/s intégré :

    primary# ldm list-io -d /SYS/MB/NET0/IOVNET.PF0
    Device-specific Parameters
    --------------------------
    max-config-vfs
        Flags = PR
        Default = 7
        Descr = Max number of configurable VFs
    max-vf-mtu
        Flags = VR
        Default = 9216
        Descr = Max MTU supported for a VF
    max-vlans
        Flags = VR
        Default = 32
        Descr = Max number of VLAN filters supported
    pvid-exclusive
        Flags = VR
        Default = 1
        Descr = Exclusive configuration of pvid required
    unicast-slots
        Flags = PV
        Default = 0 Min = 0 Max = 24
        Descr = Number of unicast mac-address slots

Dans l'exemple suivant, la propriété `unicast-slots` est définie sur `8` :

    primary# ldm create-vf unicast-slots=8 /SYS/MB/NET0/IOVNET.PF0

#### Configuration réseau avancée pour les fonctions virtuelles

- Les fonctions virtuelles SR-IOV peuvent uniquement utiliser les adresses MAC affectées par Logical Domains Manager. Si vous utilisez d'autres commandes réseau du SE Oracle Solaris pour modifier l'adresse MAC du domaine d'E/S, les commandes risquent d'échouer ou de ne pas fonctionner correctement.

- A l'heure actuelle, le groupement de liaisons des fonctions virtuelles réseau SR-IOV dans le domaine d'E/S n'est pas prise en charge. Si vous tentez de créer un groupement de liaisons, il risque de ne pas fonctionner comme prévu.

- Vous pouvez créer des services d'E/S virtuels et les affecter à des domaines d'E/S. Ces services d'E/S virtuels peuvent être créés sur la fonction physique même à partir de laquelle les fonctions virtuelles sont créées. Par exemple, vous pouvez utiliser un périphérique réseau 1 Gbit/s intégré (`net0` ou `igb0`) en tant que périphérique backend réseau pour un commutateur virtuel et créer des fonctions virtuelles à partir de ce même périphérique de fonction physique.

##### Création de cartes d'interface réseau virtuelles (VNIC) sur des fonctions virtuelles SR-IOV

La création de VNIC Oracle Solaris 11 est prise en charge sur les fonctions virtuelles SR-IOV. Cependant, le nombre de VNIC pris en charge est limité au nombre d'adresses MAC alternatives (propriété `alt-mac-addrs`) attribuées à la fonction virtuelle. Veillez donc à affecter un nombre suffisant d'adresses MAC alternatives lorsque vous utilisez des VNIC sur la fonction virtuelle. Utilisez la commande `ldm create-vf` ou la commande `ldm set-io` pour définir les adresses MAC alternatives à l'aide de la propriété `alt-mac-addrs`.

L'exemple suivant illustre la création de quatre cartes d'interface réseau virtuelles sur une fonction virtuelle SR-IOV. La première commande affecte des adresses MAC alternatives au périphérique de fonction virtuelle. Cette commande utilise la méthode d'allocation automatique pour allouer quatre adresses MAC alternatives au périphérique de fonction virtuelle `/SYS/MB/NET0/IOVNET.PF0.VF0` :

    primary# ldm set-io alt-mac-addrs=auto,auto,auto,auto /SYS/MB/NET0/IOVNET.PF0.VF0

La commande suivante démarre et initialise le SE Oracle Solaris 11 dans le domaine d'E/S. Dans cet exemple, `ldg1` est le domaine d'E/S :

    primary# ldm start ldg1

La commande suivante utilise la commande `dladm` d'Oracle Solaris 11 dans le domaine invité pour créer quatre VNIC. Notez que toute tentative de créer plus de carte d'interface réseau virtuelles que spécifié en ayant recours à des adresses MAC alternatives est vouée à l'échec.

    guest# dladm show-phys
    LINK              MEDIA                STATE      SPEED  DUPLEX    DEVICE
    net0              Ethernet             up         0      unknown   vnet0
    net1              Ethernet             up         1000   full      igbvf0
    guest# dladm create-vnic -l net1 vnic0
    guest# dladm create-vnic -l net1 vnic1
    guest# dladm create-vnic -l net1 vnic2
    guest# dladm create-vnic -l net1 vnic3
    guest# dladm show-link
    LINK                CLASS     MTU    STATE    OVER
    net0                phys      1500   up       --
    net1                phys      1500   up       --
    vnic0               vnic      1500   up       net1
    vnic1               vnic      1500   up       net1
    vnic2               vnic      1500   up       net1
    vnic3               vnic      1500   up       net1

Copyright © 2007, 2013, Oracle et/ou ses affiliés. Tous droits réservés. Notice légale |