Les opérations liées aux systèmes de fichiers répertorient et gèrent les partages de systèmes de fichiers. Toutes les commandes sont configurées pour porter sur un pool de stockage ou un projet donné.
service_uri/pools/pool/project/project
|
Chaque système de fichiers contient des propriétés liées au projet ainsi que les propriétés spécifiques au système de fichiers suivantes.
|
La commande d'énumération des systèmes de fichiers affiche tous les systèmes de fichiers dans un pool ou un projet donné.
Paramètres de requête : filter – simple filtre de correspondance de chaîne nécessitant une propriété au sein du projet pour contenir la même chaîne de filtre par rapport à sa valeur.
La commande list filesystems utilise les paramètres URI suivants :
Nom du pool de stockage
Nom de projet
Exemple de demande :
GET /api/storage/v1/pools/p1/projects/proj-01/filesystems HTTP/1.1 Host: zfs-storage.example.com:215 Accept: application/json
Une demande traitée avec succès renvoie un code de statut HTTP 200 (OK) ainsi qu'un tableau contenant les propriétés du système de fichiers au format JSON.
Exemple de résultat :
HTTP/1.1 200 OK Content-Type: application/json { "filesystems": [{ "name": "filesystem-01", "project": "proj-01", "pool": "p1", ... }, { "name": "filesystem-02", "project": "proj-01", "pool": "p1", ... }] }
Une liste de tous les systèmes de fichiers contenus dans tous les pools et projets est également prise en charge. Dans ce cas, l'URI serait /api/storage/v{1|2}/filesystems.
Exemple de demande d'obtention de tous les systèmes de fichiers dont les propriétés contiennent la chaîne "abcd" :
GET /api/storage/v1/filesystems?filter=abcd HTTP/1.1 Host: zfs-storage.example.com:215 Accept: application/json
La commande d'obtention des systèmes de fichiers renvoie les propriétés d'un système de fichiers unique dans un pool ou un projet donné. Les paramètres URI suivants sont utilisés :
Nom du pool de stockage
Nom de projet
Nom de système de fichiers
Exemple de demande pour répertorier le projet nommé proj-01 :
GET /api/storage/v1/pools/p1/projects/proj-01 HTTP/1.1 Host: zfs-storage.example.com:215 Accept: application/json
En cas de succès de la commande get, un statut HTTP 200 (OK) est renvoyé ainsi qu'un tableau des propriétés du système de fichiers au format JSON.
Exemple de résultat :
HTTP/1.1 200 OK Content-Type: application/json { "filesystem": { "logbias": "latency", "creation": "20130423T21:30:34", "nodestroy": false, "dedup": false, "sharenfs": "on", "sharesmb": "off", "mountpoint": "/export/mnt1", "snaplabel": "", "id": "424ca2ec-b3fa-df86-0000-000000000000", "readonly": false, "rrsrc_actions": [], "compression": "off", "sharetftp": "", "source": { "logbias": "default", "dedup": "default", "sharenfs": "inherited", "sharesmb": "off", "mountpoint": "inherited", "rrsrc_actions": "local", "compression": "default", "sharetftp": "inherited", "snapdir": "default", "aclmode": "default", "copies": "default", "aclinherit": "default", "shareftp": "inherited", "readonly": "default", "secondarycache": "default", "exported": "inherited", "vscan": "default", "reservation": "local", "atime": "default", "recordsize": "default", "checksum": "inherited", "sharesftp": "inherited", "nbmand": "default", "rstchown": "default" }, "snapdir": "hidden", "aclmode": "discard", "copies": 1, "aclinherit": "restricted", "shareftp": "", "canonical_name": "p1/local/default/mnt1", "recordsize": 131072.0, "usage": { "available": 880395477504.0, "loading": false, "quota": 0.0, "snapshots": 18432.0, "compressratio": 100.0, "reservation": 0.0, "total": 50176.0, "data": 31744.0 }, "secondarycache": "all", "collection": "local", "exported": true, "vscan": false, "reservation": 0.0, "shadow": "none", "atime": true, "pool": "p1", "quota_snap": true, "name": "mnt1", "checksum": "fletcher4", "project": "default", "sharesftp": "", "nbmand": false, "reservation_snap": true, "sharedav": "", "rstchown": true, "root_acl": { "owner@:cC:fd:deny", "everyone@:rw:fd:allow", "user:admin1:rw:allow", } "smbshareacl": { "owner@:cC:fd:deny", "everyone@:rw:fd:allow", "user:admin1:rw:allow", } }
La commande de création de système de fichiers crée un système de fichiers avec un nom donné situé dans le pool de stockage ou projet donné. Le nouveau système de fichiers avec les propriétés par défaut est renvoyé.
Les paramètres URI suivants sont utilisés :
Nom du pool de stockage
Nom de projet
Nom de système de fichiers
Paramètres de demande :
nom : le nom du système de fichiers doit être renseigné pour créer un nouveau système de fichiers.
Propriétés du système de fichiers : chaque propriété répertoriée dans les propriétés du système de fichiers peut être définie en tant que valeur initiale.
Exemple de demande de création d'un système de fichiers nommé share-01 et dont l'utilisateur admin1 est le propriétaire :
POST /api/storage/v1/pools/p1/projects/proj-01/filesystems HTTP/1.1 Host: zfs-storage.example.com:215 Content-Type: application/json Accept: application/json { "name": "share-01", "root_user": "admin1" }
Une création réussie renvoie un statut HTTP 201 (Created) dont l'en-tête d'emplacement contient l'URI du nouveau système de fichiers. Le corps contient toutes les propriétés du système de fichiers au format JSON.
Exemple de résultat :
HTTP/1.1 201 Created Content-Type: application/json Location: /api/storage/v1/pools/p1/projects/proj-01/filesystems/share-01 { "filesystem": { "name": "share-01", "pool": "p1", "collection": "local", "project": "proj-01", "root_user": "admin1" ... } }
La commande de modification d'un système de fichiers modifie les attributs d'un système de fichiers existant. Une réponse obtenue avec succès renvoie le code de statut HTTP 202 (Accepted) et répertorie toutes les propriétés du système de fichiers.
Les paramètres URI suivants sont utilisés :
Nom du pool de stockage
Nom de projet
Nom de système de fichiers
Paramètres de demande, propriétés de système de fichiers : chaque propriété du système de fichiers ou projet peut être modifiée.
Exemple de demande de modification d'un nom de système de fichiers share-01 en new-name et de modification de l'utilisateur en nobody :
PUT /api/storage/v1/pools/p1/projects/proj-01/filesystems/share-01 HTTP/1.1 Host: zfs-storage.example.com:215 Content-Type: application/json Accept: application/json { "name": "new-name", "root_user": "nobody", }
Exemple de résultat :
HTTP/1.1 202 Accepted Content-Type: application/json Location: http://zfs-storage.example.com:215/pools/p1/projects/proj-01/filesystems/share-01 { "filesystem": { "name": "new-name", "pool": "p1", "collection": "local", "project": "proj-01", "root_user": "nobody" ... } }
La commande de suppression de système de fichiers supprime un système de fichiers unique dans un pool ou projet donné.
Les paramètres URI suivants sont utilisés :
Nom du pool de stockage
Nom de projet
Nom de système de fichiers
Pour surveiller l'espace à récupérer dans le pool de stockage, saisissez la commande GET pour pools/pool. Notez l'espace pour la propriété async_destroy_reclaim_space. Lorsque l'opération est terminée, un 0 (zéro) s'affiche.
Exemple de demande :
DELETE /api/storage/v1/pools/p1/projects/proj-01/filesystems/share-01 HTTP/1.1 Host: zfs-storage.example.com:215 Accept: application/json
Une suppression réussie renvoie le code HTTP 204 (No Content).
Exemple de résultat :
HTTP/1.1 204 No-Content
Les quotas d'utilisateur ou de groupe peuvent être créés ou modifiés respectivement avec les demandes POST et PUT. Les demandes GET liées aux ressources d'utilisation de système de fichiers peuvent être utilisées pour obtenir les données d'utilisation par utilisateur ou par groupe associé au projet.