Gestion des filesystems
Ce service, fourni par Manila, offre l’accès à des systèmes de fichiers partagés. Ces systèmes de fichiers partagés peuvent être utilisés afin de partager des données au sein d’un projet entre les VMs. Au CC-IN2P3 ce stockage est assuré par un cluster Ceph.
Pour utiliser les commandes Manila il est nécessaire d’installer le paquet python3-manilaclient
.
Lister les partages
Pour lister les partages.
% manila list
+---------+-------------+------+-------------+-----------+-----------+-----------------+-------------------+
| ID | Name | Size | Share Proto | Status | Is Public | Share Type Name | Availability Zone |
+---------+-------------+------+-------------+-----------+-----------+-----------------+-------------------+
| [...] | Share-test2 | 40 | CEPHFS | available | False | rad.regular | nova |
| [...] | Share-test | 30 | CEPHFS | available | False | rad.regular | nova |
+---------+-------------+------+-------------+-----------+-----------+-----------------+-------------------+
Lister les types de partages
Les types de share permettent de choisir le type de stockage que l’on souhaite utiliser. Pour lister les types de share disponibles dans un projet.
% manila type-list
+---------+-------------+------------+
| id | name | visibility |
+---------+-------------+------------+
| [...] | ha.regular | private |
| [...] | rad.regular | private |
+---------+-------------+------------+
Pour une infrastructure dédié à de la production le type ha.regular
est recommandé. Quand il s’agit de R&D on lui préfèrera le type rad.regular
.
Par défaut les projets ont uniquement accès au type rad.regular
. N’hésitez pas à nous informer si vous avez besoin du type ha.regular
.
Créer et utiliser un partage
On crée un partage nommé Test_share1
avec le protocole cephfs d’une taille de 10GB et le type rad.regular
.
% manila create --share-type rad.regular --name Test_share1 cephfs 10
+---------------------------------------+--------------------------------+
| Property | Value |
+---------------------------------------+--------------------------------+
| status | creating |
| share_type_name | rad.regular |
| description | None |
| availability_zone | None |
| share_network_id | None |
| share_server_id | None |
| share_group_id | None |
| host | |
| revert_to_snapshot_support | False |
| access_rules_status | active |
| snapshot_id | None |
| create_share_from_snapshot_support | False |
| is_public | False |
| task_state | None |
| snapshot_support | False |
| id | [...] |
| size | 10 |
| source_share_group_snapshot_member_id | None |
| user_id | [...] |
| name | Test_share1 |
| share_type | [...] |
| has_replicas | False |
| replication_type | None |
| created_at | 2021-01-28T09:09:45.000000 |
| share_proto | CEPHFS |
| mount_snapshot_support | False |
| project_id | [...] |
| metadata | {} |
+---------------------------------------+--------------------------------+
Donner les droits d’accès à un partage
Une fois le partage créé il faut spécifier à partir de quel utilisateur on souhaite y accéder. Cet utilisateur n’est pas lié au compte OpenStack, il n’est connu que de Ceph et sera créé automatiquement. Il sera utilisé pour monter le partage dans une VM.
% manila access-allow Test_share1 cephx alice
Pour vérifier les droits et obtenir la clé d’accès qui permettra d’utiliser la partage :
% manila access-list Test_share1
+---------+-------------+----------+--------------+--------+------------------------------------------+
| Id | Access_Type | Acces_To | Access_Level | State | Access_Key |
+---------+-------------+----------+--------------+--------+------------------------------------------+
| [...] | cephx | alice | rw | active | AQA8+ANW/4ZWNRAAOtWJMFPEihBA1unFImJczA== |
+---------+-------------+----------+--------------+--------+------------------------------------------+
Exporter la localisation du partage
Il faut aussi récupérer la localisation du partage. Cette localisation permettra de configurer la VM pour se connecter au partage.
% manila share-export-location-list Test_share1
+---------+--------------------------------------------------------------------------------------------------------------+-----------+
| ID | Path | Preferred |
+---------+--------------------------------------------------------------------------------------------------------------+-----------+
| [...] | 10.0.0.1:6789,10.0.0.2:6789,10.0.0.3:6789:/volumes/recherche/_nogroup/c183cdef-3adc-4c7f-9f4b-741ba6895025 | False |
+---------+--------------------------------------------------------------------------------------------------------------+-----------+
Monter le partage dans une VM
Pour monter un partage dans une VM il va falloir utiliser les informations récoltées précédement, à savoir la clé d’accès ainsi que la localisation du partage. Il existe deux manières de monter un partage, via Fuse ou via le module kernel.
Créez un fichier alice.keyring
dans lequel on place la clé d’accès.
[client.alice]
key = AQA8+ANW/4ZWNRAAOtWJMFPEihBA1unFImJczA==
Ensuite créez un fichier ceph.conf
contenant les adresses du partage.
[client]
client quota = true
mon host = 10.0.0.1:6789,10.0.0.2:6789,10.0.0.3:6789
Pour monter le partage il faut ensuite utiliser la commande ceph-fuse
. Pour cela il faut installer l’utilitaire ceph-fuse
.
Il peut parfois être nécessaire d’ajouter les RPMs de Ceph pour résoudre des conflits de paquet.
% ceph-fuse /mnt --id=alice --conf=./ceph.conf --keyring=./alice.keyring --client-mountpoint=/volumes/recherche/_nogroup/c183cdef-3adc-4c7f-9f4b-741ba6895025
Le partage est maintenant disponible sur la VM. Il suffit de répéter cette étape sur les autres VMs où l’on souhaite monter le partage.
Note
Plus d’information sur la documentations officielle : Fuse.
Avec le module kernel il faut simplement utiliser la commande mount
.
% sudo mount -t ceph 10.0.0.1:6789,10.0.0.2:6789,10.0.0.3:6789:/volumes/recherche/_nogroup/c183cdef-3adc-4c7f-9f4b-741ba6895025 /mnt -o name=alice,secret=AQA8+ANW/4ZWNRAAOtWJMFPEihBA1unFImJczA==
Pour éviter que le secret ne se retrouve dans l’historique il est possible de le placer dans un fichier. Pour cela il faut remplacer le paramètre secret=
par secretfile=
suivi du chemin de fichier.
Note
Plus d’information sur la documentations officielle : le module kernel.
Supprimer un partage
% manila delete Test_share1
Attention
La suppression d’un partage est définitive et entraine la perte de toutes les données.
Autres commandes utiles
Augmenter la taille d’un partage.
% manila extend Test_share1 20
Réduire la taille d’un partage. Les réductions de taille peuvent provoquer des pertes de données.
% manila shrink Test_share1 10
Révoquer les droits d’un utilisateur sur un partage lui interdisant ainsi tout accès.
% manila access-deny Test_share1 alice