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

## Assignation de bus PCIe

Vous pouvez utiliser le logiciel Oracle VM Server for SPARC pour assigner un bus PCIe entier (également appelé root complex) à un domaine. Un bus PCIe entier est composé du bus PCIe lui-même et de tous ses commutateurs et périphériques PCI. Les bus PCIe présents sur un serveur sont identifiés par des noms tels que `pci@400` (`pci_0`). Un domaine d'E/S configuré avec un bus PCIe entier est également appelé root domain.

Le schéma suivante représente un système avec deux bus PCIe (`pci_0`et `pci_1`). Chaque bus est assigné à un domaine différent. Ainsi, le système est configuré avec deux domaines d'E/S.

Figure 6-1 Assignation d'un bus PCIe à un domaine d'E/S

Le nombre maximum de domaines d'E/S que vous pouvez créer avec des bus PCIe dépend du nombre de bus PCIe disponibles sur le serveur. Par exemple, si vous utilisez un serveur Oracle Sun SPARC Enterprise T5440, vous pouvez avoir jusqu'à quatre domaines d'E/S.

Remarque - Certains serveurs UltraSPARC ne peuvent avoir qu'un seul bus PCIe. Dans ce cas, vous pouvez créer un domaine d'E/S en assignant un périphérique d'extrémité PCIe (ou un périphérique pouvant être associé à des E/S directes) à un domaine. Reportez-vous à la section Assignation des périphériques d'extrémité PCIe. Si le système a une unité d'interface réseau (NIU), vous pouvez également assigner une NIU à un domaine pour créer un domaine d'E/S.

Lorsque vous assignez un bus PCIe à un domaine d'E/S, tous les périphériques sur ce bus sont détenus par le domaine d'E/S. Vous n'êtes pas autorisé à assigner l'un des périphériques d'extrémité PCIe sur ce bus à d'autres domaines. Seuls les périphériques d'extrémité PCIe sur les bus PCIe qui sont assignés au domaine `primary` peuvent être assignés à d'autres domaines.

Si un serveur est configuré dès le départ dans un environnement Logical Domains ou utilise la configuration `factory-default`, le domaine `primary` a accès à toutes les ressources du périphérique physique. Cela signifie que le domaine `primary` est le seul domaine d'E/S configuré sur le système et qu'il possède tous les bus PCIe.

## Procédure de création d'un domaine d'E/S par assignation d'un bus PCIe

Cet exemple de procédure montre comment créer un nouveau domaine d'E/S à partir de la configuration initiale dans laquelle plusieurs bus sont détenus par le domaine `primary`. Par défaut, le domaine `primary` détient tous les bus présents sur le système. L'exemple suivant concerne le serveur SPARC T4-2. Cette procédure peut également être utilisée sur d'autres serveurs. Les instructions pour les différents serveurs peuvent varier légèrement de celles-ci, mais vous pouvez obtenir les principales de base à partir de cet exemple.

En premier lieu, vous devez conserver le bus ayant le disque d'initialisation du domaine `primary`. Supprimez ensuite un autre bus du domaine `primary` et assignez-le à un autre domaine.

| Attention - Tous les disques internes sur les serveurs pris en charge peuvent être connectés à un seul bus PCIe. Si un domaine est démarré à partir d'un disque interne, ne supprimez pas de bus du domaine. Vérifiez également que vous n'êtes pas en train de supprimer un bus avec des périphériques (notamment des ports réseau) utilisés par un domaine. Si vous supprimez le mauvais bus, le domaine risque de ne pas pouvoir accéder aux périphériques requis et peut devenir inutilisable. Pour supprimer un bus qui a des périphériques utilisés par un domaine, reconfigurez ce domaine pour qu'il utilise des périphériques d'autres bus. Par exemple, vous devrez peut-être reconfigurer le domaine pour qu'il utilise un port réseau intégré différent ou une carte PCIe d'un emplacement PCIe différent.

Dans cet exemple, le domaine `primary` n'utilise qu'un pool ZFS (`rpool` (`c0t1d0s0`)) et une interface réseau (`igb0`). Si le domaine `primary` utilise plusieurs périphériques, répétez les étapes 2 à 4 pour chaque périphérique afin de vous assurer qu'aucun ne soit situé sur le bus qui va être supprimé.

1. Vérifiez que le domaine `primary` détient plusieurs bus PCIe.

       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

2. Déterminez le chemin du périphérique du disque d'initialisation qui doit être conservé.
   - Pour les systèmes de fichiers UFS, exécutez la commande `df /` pour déterminer le chemin de périphérique du disque d'initialisation.

         primary# df /
         /                  (/dev/dsk/c0t5000CCA03C138904d0s0):22755742 blocks  2225374 files

   - Pour les systèmes de fichiers ZFS, exécutez d'abord la commande `df /` pour déterminer le nom de pool. Puis exécutez la commande `zpool status` pour déterminer le chemin de périphérique du disque d'initialisation.

         primary# zpool status rpool
           pool: rpool
          state: ONLINE
           scan: none requested
         config:

                 NAME                       STATE     READ WRITE CKSUM
                 rpool                      ONLINE       0     0     0
                   c0t5000CCA03C138904d0s0  ONLINE       0     0     0

3. Déterminez le bus PCIe auquel est connecté le disque d'initialisation.
   1. Recherchez le port initiateur vers lequel le disque est connecté.

          primary# mpathadm show lu /dev/rdsk/c0t5000CCA03C138904d0s0
          Logical Unit:  /dev/rdsk/c0t5000CCA03C138904d0s2
                  mpath-support:  libmpscsi_vhci.so
                  Vendor:  HITACHI
                  Product:  H106030SDSUN300G
                  Revision:  A2B0
                  Name Type:  unknown type
                  Name:  5000cca03c138904
                  Asymmetric:  no
                  Current Load Balance:  round-robin
                  Logical Unit Group ID:  NA
                  Auto Failback:  on
                  Auto Probing:  NA

                  Paths:
                          Initiator Port Name:  w50800200014100c8
                          Target Port Name:  w5000cca03c138905
                          Override Path:  NA
                          Path State:  OK
                          Disabled:  no

                  Target Ports:
                          Name:  w5000cca03c138905
                          Relative ID:  0

   2. Déterminez sur quel bus PCIe le port initiateur est présent.

          primary# mpathadm show initiator-port w50800200014100c8
          Initiator Port:  w50800200014100c8
                  Transport Type:  unknown
                  OS Device File:  /devices/pci@400/pci@2/pci@0/pci@e/scsi@0/iport@1

4. Déterminez l'interface réseau qui est utilisée par le système.

   Identifiez l'interface du réseau principal qui est “raccordé” à l'aide de la commande `ifconfig`.

   - Oracle Solaris 10.

         primary# ifconfig -a
         lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
                 inet 127.0.0.1 netmask ff000000
         igb0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 index 3
                 inet 10.129.241.135 netmask ffffff00 broadcast 10.129.241.255
                 ether 0:10:e0:e:f1:78

   - Oracle Solaris 11.

         primary# ifconfig -a
         lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
                 inet 127.0.0.1 netmask ff000000
         net0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 index 3
                 inet 10.129.241.135 netmask ffffff00 broadcast 10.129.241.255
                 ether 0:10:e0:e:f1:78

         primary# dladm show-phys net0
         LINK              MEDIA                STATE      SPEED  DUPLEX    DEVICE
         net0              Ethernet             up         1000   full      igb0

5. Déterminez le périphérique physique auquel l'interface réseau est connectée.

   La commande suivante utilise l'interface réseau `igb0` :

       primary# ls -l /dev/igb0
       lrwxrwxrwx   1 root     root          46 Oct  1 10:39 /dev/igb0  ->
       ../devices/pci@500/pci@0/pci@c/network@0:igb0

   Dans cet exemple, le périphérique physique utilisé par le domaine `primary` se trouve sous le bus `pci@500`, qui correspond à la liste précédente de `pci_1`. Par conséquent, les deux autres bus, `pci_2` (`pci@600`) et `pci_3` (`pci@700`), peuvent être assignés à d'autres domaines en toute sécurité, car ils ne sont pas utilisés par le domaine `primary`.

   Si l'interface réseau utilisée par le domaine `primary` se trouvait sur un bus que vous voulez assigner à un autre domaine, le domaine `primary` devrait être reconfiguré pour utiliser une interface réseau différente.

6. Supprimez le bus qui ne contient pas le disque d'initialisation ou l'interface réseau du domaine `primary`.

   Dans cet exemple, le bus `pci_1` est supprimé du domaine `primary`. Vous devez également lancer une reconfiguration retardée.

       primary# ldm start-reconf primary
       primary# ldm remove-io pci_1 primary

7. Enregistrez cette configuration sur le processeur de service.

   Dans cet exemple, la configuration est `io-domain`.

       primary# ldm add-config io-domain

   Cette configuration, `io-domain`, est également définie comme la configuration suivante devant être utilisée après la réinitialisation.

8. Réinitialisez le domaine root afin que les modifications soient appliquées.

       primary# shutdown -i6 -g0 -y

9. Arrêtez le domaine auquel vous souhaitez ajouter le bus PCIe.

   L'exemple suivant arrête le domaine `ldg1` :

       primary# ldm stop ldg1

10. Ajoutez le bus disponible au domaine ayant besoin d'un accès direct.

    Le bus disponible est `pci_1` et le domaine est `ldg1`.

        primary# ldm add-io pci_1 ldg1

11. Redémarrez le domaine afin que les modifications soient appliquées.

    Les commandes suivantes redémarre le domaine `ldg1` :

        primary# ldm start ldg1

12. Confirmez que le bus correct est toujours assigné au domaine `primary` et que le bus correct est assigné au domaine `ldg1`.

        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    ldg1
        /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    ldg1     OCC
        /SYS/MB/PCIE3                             PCIE   pci_1    ldg1     OCC
        /SYS/MB/PCIE5                             PCIE   pci_1    ldg1     OCC
        /SYS/MB/PCIE7                             PCIE   pci_1    ldg1     EMP
        /SYS/MB/PCIE9                             PCIE   pci_1    ldg1     EMP
        /SYS/MB/NET2                              PCIE   pci_1    ldg1     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    ldg1
        /SYS/MB/PCIE5/IOVNET.PF1                  PF     pci_1    ldg1
        /SYS/MB/NET2/IOVNET.PF0                   PF     pci_1    ldg1
        /SYS/MB/NET2/IOVNET.PF1                   PF     pci_1    ldg1

    Cette sortie confirme que le bus PCIe `pci_0` et ses périphériques sont toujours assignés au domaine `primary`. Elle confirme également que le bus PCIe `pci_1` et ses périphériques sont assignés au domaine `ldg1`.

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