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 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.

Avec Fuse

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.

Avec le module kernel

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 les deux méthodes dans leurs documentations respectives : Fuse et le module kernel

Supprimer un partage

Suppression d’un partage.

manila delete Test_share1

Warning

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

Il est possible de révoquer les droits d’un utilisateur sur un partage lui interdisant ainsi tout accès.

manila access-deny Test_share1 alice