Les sections suivantes décrivent l'utilisation d'un système de fichiers ZFS sur un système avec des zones Oracle Solaris :
Pour plus d'informations sur la configuration de zones d'un système de fichiers ZFS racine migré ou auquel des patchs ont été appliqués à l'aide de Solaris Live Upgrade, reportez-vous à la section Utilisation d'Oracle Solaris Live Upgrade pour migrer ou mettre à jour un système comportant des zones (Solaris 10 10/08) ou Utilisation d'Oracle Solaris Live Upgrade pour migrer ou mettre à jour un système avec zones (version Solaris 5 10/09 ou supérieure).
Tenez compte des points suivants lors de l'association de jeux de données à des zones :
Il est possible d'ajouter un système de fichiers ou un clone ZFS à une zone non globale en déléguant ou non le contrôle administratif.
Vous pouvez ajouter un volume ZFS en tant que périphérique à des zones non globales.
L'association d'instantanés ZFS à des zones est impossible à l'heure actuelle.
Dans les sections suivantes, le terme jeu de données ZFS fait référence à un système de fichier ou à un clone.
L'ajout d'un jeu de données permet à la zone non globale de partager l'espace avec la zone globale, mais l'administrateur de zone ne peut pas contrôler les propriétés ou créer de nouveaux systèmes de fichiers dans la hiérarchie de systèmes de fichiers sous-jacents. Cette opération est identique à l'ajout de tout autre type de système de fichiers à une zone. Effectuez-la lorsque vous souhaitez simplement partager de l'espace commun.
ZFS autorise également la délégation de jeux de données à une zone non globale, ce qui permet à l'administrateur de zone de contrôler parfaitement le jeu de données et ses enfants. L'administrateur de zone peut créer et détruire les systèmes de fichiers ou les clones au sein de ce jeu de données et modifier les propriétés des jeux de données. L'administrateur de zone ne peut pas affecter des jeux de données qui n'ont pas été ajoutés à la zone, y compris ceux qui dépassent les quotas de niveau supérieur du jeu de données délégué.
Tenez compte des points suivants lorsque vous utilisez un système de fichiers ZFS dans un système sur leque des zones Oracle Solaris sont installées :
La propriété mountpoint d'un système de fichiers ZFS ajouté à une zone non globale doit être définie sur legacy.
En raison du problème 6449301, n'ajoutez pas de jeu de données ZFS à une zone non globale lorsque celle-ci est configurée. Ajoutez plutôt un jeu de données ZFS une fois la zone installée.
Lorsqu'un emplacement source zonepath et l'emplacement cible zonepath résident tous deux dans un système de fichiers ZFS et se trouvent dans le même pool, la commande zoneadm clone utilise dorénavant automatiquement le clone ZFS pour cloner une zone. La commande zoneadm clone crée un instantané ZFS de la source de l'emplacement zonepath et configure l'emplacement zonepath cible. Vous ne pouvez pas utiliser la commande zfs clone pour cloner une zone. Pour plus d'informations, reportez-vous à la Partie II, Zones du Guide d’administration système : Gestion des ressources des conteneurs et des zones Oracle Solaris.
Si vous déléguez un système de fichiers ZFS à une zone non globale, vous devez supprimer ce système de fichiers de la zone non globale avant d'utiliser Oracle Solaris Live Upgrade. Sinon, l'opération Oracle Solaris Live Upgrade échoue en raison d'une erreur de système de fichier en lecture seule.
Vous pouvez ajouter un système de fichiers ZFS en tant que système de fichiers générique lorsqu'il s'agit simplement de partager de l'espace avec la zone globale. La propriété mountpoint d'un système de fichiers ZFS ajouté à une zone non globale doit être définie sur legacy.
La sous-commande add fs de la commande zonecfg permet d'ajouter un système de fichiers ZFS à une zone non globale.
Dans l'exemple suivant, un système de fichiers ZFS est ajouté à une zone non globale par un administrateur global de la zone globale :
# zonecfg -z zion zonecfg:zion> add fs zonecfg:zion:fs> set type=zfs zonecfg:zion:fs> set special=tank/zone/zion zonecfg:zion:fs> set dir=/export/shared zonecfg:zion:fs> end |
Cette syntaxe permet d'ajouter le système de fichiers ZFS tank/zone/zion à la zone zion déjà configurée et montée sur /export/shared. La propriété mountpoint du système de fichiers doit être définie sur legacy et le système de fichiers ne peut pas être déjà monté à un autre emplacement. L'administrateur de zone peut créer et détruire des fichiers au sein du système de fichiers. Le système de fichiers ne peut pas être remonté à un autre emplacement, tout comme l'administrateur ne peut pas modifier les propriétés suivantes du système de fichiers : atime, readonly, compression, etc. L'administrateur de zone globale est chargé de la configuration et du contrôle des propriétés du système de fichiers.
Pour plus d'informations sur la commande zonecfg et les types de configuration de la commande zonecfg, reportez-vous à a la Partie II, Zones du Guide d’administration système : Gestion des ressources des conteneurs et des zones Oracle Solaris.
Si l'objectif principal est de déléguer l'administration du stockage d'une zone, le système de fichiers ZFS prend en charge l'ajout de jeux de données à une zone non globale à l'aide de la sous-commande add dataset de la commande zonecfg.
Dans l'exemple suivant, un système de fichiers ZFS est délégué à une zone non globale par un administrateur global dans la zone globale.
# zonecfg -z zion zonecfg:zion> add dataset zonecfg:zion:dataset> set name=tank/zone/zion zonecfg:zion:dataset> end |
Contrairement à l'ajout d'un système de fichiers, cette syntaxe entraîne la visibilité du système de fichiers ZFS tank/zone/zion dans la zone zion déjà configurée. L'administrateur de zone peut définir les propriétés de système de fichiers, et créer des systèmes de fichiers descendants. En outre, l'administrateur de zone peut créer des instantanés ainsi que des clones, et contrôler la totalité de la hiérarchie du système de fichiers.
Si vous utilisez Oracle Solaris Live Upgrade pour mettre à niveau l'environnement d'initialisation du système de fichiers ZFS avec des zones non globales, supprimez au préalable tous les jeux de données délégués. Sinon, l'opération Oracle Solaris Live Upgrade échoue en raison d'une erreur de système de fichier en lecture seule. Exemple :
zonecfg:zion> zonecfg:zion> remove dataset name=tank/zone/zion zonecfg:zion1> exit |
Pour de plus amples informations relatives aux actions autorisées au sein des zones, reportez-vous à la section Gestion de propriétés ZFS au sein d'une zone.
Les volumes ZFS ne peuvent pas être ajoutés à une zone non globale à l'aide de la sous-commande add dataset de la commande zonecfg. Il est cependant possible d'ajouter des volumes à une zone à l'aide de la sous-commande add device de la commande zonecfg.
Dans l'exemple suivant, un volume ZFS est ajouté à une zone non globale par un administrateur global de la zone globale :
# zonecfg -z zion zion: No such zone configured Use 'create' to begin configuring a new zone. zonecfg:zion> create zonecfg:zion> add device zonecfg:zion:device> set match=/dev/zvol/dsk/tank/vol zonecfg:zion:device> end |
Cette syntaxe ajoute le volume tank/vol à la zone zion . Notez que l'ajout d'un volume brut à une zone comporte des risques de sécurité implicites, même si le volume ne correspond pas à un périphérique physique. L'administrateur risque notamment de créer des systèmes de fichiers non conformes qui généreraient des erreurs graves dans le système en cas de tentative de montage. Pour de plus amples informations sur l'ajout de périphériques à de zones et les risques de sécurités associés, reportez-vous à la section Explication de la propriété zoned.
Pour savoir comment ajouter des périphériques à des zones, reportez-vous à la Partie II, Zones du Guide d’administration système : Gestion des ressources des conteneurs et des zones Oracle Solaris.
Il est impossible de créer ou de modifier des pools de stockage ZFS au sein d'une zone. Le modèle d'administration délégué centralise le contrôle de périphériques de stockage physique au sein de la zone globale et le contrôle du stockage virtuel dans les zones non globales. Bien qu'un jeu de données au niveau du pool puisse être ajouté à une zone, toute commande modifiant les caractéristiques physiques du pool, comme la création, l'ajout ou la suppression de périphériques est interdite au sein de la zone. Même si les périphériques physiques sont ajoutés à une zone à l'aide de la sous-commande add device de la commande zonecfg, ou si les fichiers sont utilisés, la commande zpool n'autorise pas la création de nouveaux pools au sein de la zone.
Après avoir délégué un jeu de données à une zone, l'administrateur de zone peut contrôler les propriétés spécifiques au jeu de données. Lorsqu'un jeu de données est délégué à une zone, tous les ancêtres s'affichent en tant que jeux de données en lecture seule, alors que le jeu de données lui-même, ainsi que tous ses descendants, est accessible en écriture. Considérez par exemple la configuration suivante :
global# zfs list -Ho name tank tank/home tank/data tank/data/matrix tank/data/zion tank/data/zion/home |
En cas d'ajout de tank/data/zion à une zone, chaque jeu de données dispose des propriétés suivantes :
Jeu de données |
Visible |
Accessible en écriture |
Propriétés immuables |
---|---|---|---|
tank |
Oui |
Non |
- |
tank/home |
Non |
- |
- |
tank/data |
Oui |
Non |
- |
tank/data/matrix |
Non |
- |
- |
tank/data/zion |
Oui |
Oui |
sharenfs, zoned, quota, reservation |
tank/data/zion/home |
Oui |
Oui |
sharenfs, zoned |
Notez que chaque parent de tank/zone/zion est visible en lecture seule, que tous les descendants sont accessibles en écriture et que les jeux de données qui ne font pas partie de la hiérarchie parent sont invisibles. L'administrateur de zone ne peut pas modifier la propriété sharenfs car les zones non globales ne peuvent pas faire office de serveurs ZFS. L'administrateur de zone ne peut pas modifier la propriété zoned car cela entraînerait un risque de sécurité, tel que décrit dans la section suivante.
Les utilisateurs privilégiés dans la zone peuvent modifier toute autre propriété paramétrable, à l'exception des propriétés quota et reservation. Ce comportement permet à un administrateur de zone globale de contrôler l'espace disque occupé par tous les jeux de données utilisés par la zone non globale.
En outre, l'administrateur de zone globale ne peut pas modifier les propriétés sharenfs et mountpoint après la délégation d'un jeu de données à une zone non globale.
Lors qu'un jeu de données est délégué à une zone non globale, il doit être marqué spécialement pour que certaines propriétés ne soient pas interprétées dans le contexte de la zone globale. Lorsqu'un jeu de données est délégué à une zone non globale sous le contrôle d'un administrateur de zone, son contenu n'est plus fiable. Comme dans tous les systèmes de fichiers, cela peut entraîner la présence de binaires setuid, de liens symboliques ou d'autres contenus douteux qui pourraient compromettre la sécurité de la zone globale. De plus, l'interprétation de la propriété mountpoint est impossible dans le contexte de la zone globale. Dans le cas contraire, l'administrateur de zone pourrait affecter l'espace de noms de la zone globale. Afin de résoudre ceci, ZFS utilise la propriété zoned pour indiquer qu'un jeu de données a été délégué à une zone non globale à un moment donné.
La propriété zoned est une valeur booléenne automatiquement activée lors de la première initialisation d'une zone contenant un jeu de données ZFS. L'activation manuelle de cette propriété par un administrateur de zone n'est pas nécessaire. Si la propriété zoned est définie, le montage ou le partage du jeu de données est impossible dans la zone globale. Dans l'exemple suivant, le fichier tank/zone/zion a été délégué à une zone, alors que le fichier tank/zone/global ne l'a pas été :
# zfs list -o name,zoned,mountpoint -r tank/zone NAME ZONED MOUNTPOINT tank/zone/global off /tank/zone/global tank/zone/zion on /tank/zone/zion # zfs mount tank/zone/global /tank/zone/global tank/zone/zion /export/zone/zion/root/tank/zone/zion |
Notez la différence entre la propriété mountpoint et le répertoire dans lequel le jeu de données tank/zone/zion est actuellement monté. La propriété mountpoint correspond à la propriété telle qu'elle est stockée dans le disque et non à l'emplacement auquel est monté le jeu de données sur le système.
Lors de la suppression d'un jeu de données d'une zone ou de la destruction d'une zone, la propriété zoned n'est pas effacée automatiquement. Ce comportement est dû aux risques de sécurité inhérents associés à ces tâches. Dans la mesure où un utilisateur qui n'est pas fiable dispose de l'accès complet au jeu de données et à ses enfants, la propriété mountpoint risque d'être configurée sur des valeurs erronées ou des binaires setuid peuvent exister dans les systèmes de fichiers.
Afin d'éviter tout risque de sécurité, l'administrateur global doit effacer manuellement la propriété zoned pour que le jeu de données puisse être utilisé à nouveau. Avant de configurer la propriété zoned sur off, assurez-vous que la propriété mountpoint du jeu de données et de tous ses enfants est configurée sur des valeurs raisonnables et qu'il n'existe aucun binaire setuid, ou désactivez la propriété setuid.
Après avoir vérifié qu'aucune vulnérabilité n'existe au niveau de la sécurité, vous pouvez désactiver la propriété zoned à l'aide de la commande zfs set ou zfs inherit. Si la propriété zoned est désactivée alors que le jeu de données est en cours d'utilisation au sein d'une zone, le système peut se comporter de façon imprévue. Ne modifiez la propriété que si vous êtes sûr que le jeu de données n'est plus en cours d'utilisation dans une zone non globale.