Dans les versions précédentes d'OpenStack sans prise en charge du réseau de stockage (SAN), le service de volume Cinder devait être configuré pour s'exécuter sur l'hôte cible si le pilote iSCSI ZFS était utilisé.
Grâce à la prise en charge des réseaux de stockage (SAN) dans Cinder, vous pouvez utiliser SSH pour configurer plusieurs back-ends hôte de stockage et définir leur type de volume. Dans ce type de déploiement, le package Cinder ainsi que l'ensemble des services Cinder sont installés uniquement sur l'hôte de l'initiateur, qui est généralement l'hôte faisant également office de noeud de calcul.
Il n'est pas nécessaire d'installer le package OpenStack sur les hôtes cible distants. Ces hôtes fournissent simplement les disques LUN à l'hôte de l'initiateur basé sur COMSTAR.
Pour déployer correctement des systèmes distants pour le stockage, vous devez respecter les exigences suivantes :
Configuration du fichier /etc/cinder/cinder.conf.
Octroi du profil de droits approprié à l'utilisateur désigné.
Installation manuelle de packages supplémentaires.
Les sections suivantes présentent ces exigences en détail.
Après l'installation du package Cinder sur l'hôte de l'initiateur, modifiez la section [DEFAULT] du fichier /etc/cinder/cinder.conf.
Reportez-vous à l'exemple suivant pour comprendre les définitions figurant dans le fichier de configuration.
[DEFAULT] my_ip = localhost osapi_volume_workers = 1 auth_strategy = keystone #num_volume_device_scan_tries = 6 os-volume-api-version = 2 scheduler_driver=cinder.scheduler.filter_scheduler.FilterScheduler enabled_backends=zfsdriver-1, zfsdriver-2, zfsdriver-3, zfsdriver-4, zfsdriver-5 [zfsdriver-1] volume_group=zvolumes-1 volume_driver=cinder.volume.drivers.solaris.zfs.ZFSVolumeDriver volume_backend_name=ZFS_LOCAL zfs_volume_base = rpool/cinder san_is_local = True debug=true verbose=true [zfsdriver-2] volume_group=zvolumes-2 volume_driver=cinder.volume.drivers.solaris.zfs.ZFSISCSIDriver volume_backend_name=ZFS_REMOTE zfs_volume_base = rpool/cinder san_ip = 10.134.13.38 san_login = user-name san_password = password debug=true verbose=true [zfsdriver-3] volume_group=zvolumes-3 volume_driver=cinder.volume.drivers.solaris.zfs.ZFSFCDriver volume_backend_name=ZFS_REMOTE_FC zfs_volume_base = rpool/fc san_ip = 10.134.13.38 san_login = user-name san_password = password debug=true verbose=true [zfsdriver-4] volume_group=zvolumes-4 volume_driver=cinder.volume.drivers.solaris.zfs.ZFSISCSIDriver volume_backend_name=ZFS_REMOTE zfs_volume_base = rpool/cinder/zq san_ip = 10.134.13.38 san_login = user-name san_password = password debug=true verbose=true [zfsdriver-5] volume_group=zvolumes-5 volume_driver=cinder.volume.drivers.solaris.zfs.ZFSISCSIDriver volume_backend_name=ZFS_REMOTE zfs_volume_base = rpool/zq san_ip = 10.134.63.182 san_login = user-name san_password = password debug=true verbose=true
Répertorie les hôtes back-end activés. Dans cet exemple, 5 hôtes back-end sont définis.
Les hôtes back-end utilisent 3 pilotes ZFS (ZFSVolumeDriver, ZFSISCSIDriver, ZFSFCDriver) sur 3 hôtes. Parmi ces hôtes, l'un est local (localhost) tandis que les autres sont distants (10.134.13.38 et 10.134.63.182).
Définit un type de volume avec le nom indiqué. Ce paramètre identifie le type de volume. Toutefois, vous devez créer le type de volume manuellement à l'aide des commandes suivantes :
# cinder type-create vol-type # cinder type-key vol-type set volume_backend_name=backend-name # cinder create --display-name display --volume-type vol-type
Ces commandes exécutent respectivement les actions suivantes :
Création d'un type de volume.
Affectation du nom de back-end au nouveau type de volume.
Création d'un volume en fonction du nouveau type de volume.
D'après l'exemple de fichier de configuration Cinder précédent, vous devez saisir les commandes suivantes :
# cinder type-create type-remote # cinder type-key type-remote set volume_backend_name=ZFS_REMOTE # cinder create --display-name t1 --volume-type type-remote
La dernière commande crée le volume t1 sur l'un des back-ends avec le nom ZFS_REMOTE en fonction des règles de filtrage.
Vous devez exécuter le même ensemble de commandes pour créer des types de volume pour ZFS_LOCAL et ZFS_REMOTE_FC.
Spécifie l'ensemble de données de base pour les nouveaux volumes ZFS sur chaque back-end de volume.
Paramètres du pilote SAN sur lesquels sont basés tous les pilotes ZFS. Ces paramètres doivent être définis pour activer l'exécution de commandes sur un hôte back-end localement ou à distance avec SSH.
Pour chaque back-end, définissez les paramètres SAN de l'une des deux façons suivantes :
Définissez uniquement san_is_local = True
Définissez san_ip, san_login et san_password ensemble.
Ne définissez pas les quatre paramètres SAN.
Paramètres facultatifs pour le débogage. Vous pouvez omettre la configuration de ces paramètres.
Une fois que Cinder est correctement configuré, la liste des services affiche l'état de chaque service.
# cinder service-list +------------+--------------+------+---------+-------+--------------------+----------+ | Binary | Host | Zone | Status | State | Updated_at | Disabled | | | | | | | | Reason | +------------+--------------+------+---------+-------+--------------------+----------+ | cinder- | | | | | 2015-10-13 | | | backup | host-2 | nova | enabled | up | T19:22:45.000000 | None | | | | | | | | | | cinder- | | | | | 2015-10-13 | | | scheduler | host-2 | nova | enabled | up | T19:22:43.000000 | None | | | | | | | | | | cinder- | | | | | 2015-10-13 | | | volume | host-2 | nova | enabled | down | T18:31:41.000000 | None | | | | | | | | | | cinder- | host-2 | | | | 2015-10-13 | | | volume | @zfsdriver-1 | nova | enabled | up | T19:22:46.000000 | None | | | | | | | | | | cinder- | host-2 | | | | 2015-10-13 | | | volume | @zfsdriver-2 | nova | enabled | up | T19:22:47.000000 | None | | | | | | | | | | cinder- | host-2 | | | | 2015-10-13 | | | volume | @zfsdriver-3 | nova | enabled | up | T19:22:48.000000 | None | | | | | | | | | | cinder- | host-2 | | | | 2015-10-13 | | | volume | @zfsdriver-4 | nova | enabled | up | T19:22:47.000000 | None | | | | | | | | | | cinder- | host-2 | | | | 2015-10-13 | | | volume | @zfsdriver-5 | nova | enabled | up | T19:22:48.000000 | None | | | | | | | | | | cinder- | host-2 | | | | 2015-10-13 | | | volume | @zfsdriver-6 | nova | enabled | down | T18:32:55.000000 | None | +------------+--------------+------+---------+-------+--------------------+----------+
Pour que l'utilisateur défini par san_login puisse utiliser les cibles distantes, il doit disposer d'un profil de droits approprié. L'exemple suivant illustre la création du profil de droits pour l'utilisateur.
# useradd -s /usr/bin/pfbash -m jdoe # passwd jdoe password # profiles -p "Cinder Storage management" profiles:Cinder Storage management> set desc="Cinder Storage management on target host" profiles:Cinder Storage management> add profiles="File System Management" profiles:Cinder Storage management> add auths="solaris.smf.modify.stmf" profiles:Cinder Storage management> add cmd=/usr/sbin/itadm profiles:Cinder Storage management:itadm> set euid=0 profiles:Cinder Storage management:itadm> end profiles:Cinder Storage management> add cmd=/usr/sbin/fcadm profiles:Cinder Storage management:itadm> set privs=file_dac_read,sys_devices profiles:Cinder Storage management:itadm> end profiles:Cinder Storage management> add cmd=/usr/sbin/fcinfo profiles:Cinder Storage management:itadm> set privs=file_dac_read,sys_devices profiles:Cinder Storage management:itadm> end profiles:Cinder Storage management> add cmd=/usr/sbin/stmfadm profiles:Cinder Storage management:stmfadm> set euid=0 profiles:Cinder Storage management:stmfadm> end profiles:Cinder Storage management> add cmd=/usr/lib/rad/module/mod_zfsmgr.so.1 profiles:Cinder Storage management:mod_zfsmgr.so.1> set privs={zone}:/system/volatile/*, \ sys_config,sys_mount profiles:Cinder Storage management:mod_zfsmgr.so.1> end profiles:Cinder Storage management> add cmd=/usr/sbin/zfs profiles:Cinder Storage management:zfs> set priv=sys_config,sys_mount profiles:Cinder Storage management:zfs> end profiles:Cinder Storage management> exit # usermod -P "Cinder Storage management" jdoe
Pour plus d'informations sur les profils et les droits, reportez-vous au manuel Sécurisation des utilisateurs et des processus dans Oracle Solaris dans la bibliothèque correspondant à votre version d'Oracle Solaris dans la Operating Systems Documentation.
Pour activer l'hôte distant en tant que cible, effectuez les étapes suivantes :
Installez le package group/feature/storage-server sur les hôtes distants.
# pkg install storage-server
Activez les services suivants à la fois sur l'initiateur et les hôtes distants :
svc:/system/stmf:default
svc:/network/iscsi/target:default
svc:/system/rad:remote
Par exemple :
remote-host# svcadm enable stmf remote-host# svcadm enable -r svc:/network/iscsi/target:default remote-host# svcadm enable rad
Initialisez et configurez la liste de contrôle d'accès (ACL) pour le paramètre zfs_volume_base défini.
Par exemple, supposons que la définition zfs_volume_base=rpool/fc figure dans le fichier de configuration. Vous devez ensuite exécuter les commandes suivantes :
# chmod A+user:cinder:add_subdirectory:allow /rpool/fc # zfs allow cinder clone,create,destroy,mount,snapshot rpool/fc