Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
18 janvier 2015

htmlpdflatexmanmd




nbd-server

nbd-server

Dessert un fichier comme périphérique block à d'autre machine.

Description

   Avec NBD, un client peut utiliser un fichier, exporté sur le réseaux depuis un serveur, comme périphérique block. NBD peut être utile pour les clients léger sans disques qui ont besoin d'espace swap, mais on peut également y créer un système de fichier et l'utiliser comme système de fichier local.

   nbd-server implémente un peut de sécurité via un fichier appelé /etc/nbd-server/allow. Ce fichier doit lister les adresse IP ou les masques réseaux des client qui sont autorisés à se connecter. S'il n'existe pas, tous les clients sont capable de se connecter. Si le fichier est vide, aucun client ne peut se connecter.

   Noter que bien que la ligne de commande permet de spécifier un export, l'utilisation de cette option est dépréciée. Il est préférable d'utiliser le fichier de configuration.

   Bien que nbd-server fonctionne, les nouveaux exports peuvent être ajoutés en ré-écrivant le fichier de configuration puis en envoyant un SIGHUP au serveur, ce qui le force à relire sa configuration.

OPTIONS

ip L'addresse ip d'écoute du service. Peut être une IPv4 ou une IPv6 ou un nom d'hôte. Dans le dernier cas, nbd-serveur fait une recherche de nom et écoute sur la première adresse qui lui est retournée. Non spécifié, nbd-server écoute sur toutes les interfaces.
port Le port d'écoute du service. Si 0 est spécifié, nbd-server va écouter sur stdin.
filename Le nom du fichier qui devrait être exporté. Cela peut être tout fichier, incluant des périphériques block réel (ex: depuis /dev). Si le nom du fichier inclus la chaîne %s, elle sera substituée avec l'adresse IP du client.
size La taille du périphérique block côté client. Utile en conjonction avec l'option -m
-r Export le fichier en lecture seule. Si un client tente d'y écrire, il recevra une erreur mais restera connecté.
-m Travail avec plusieurs fichiers. Cela peut être utilisé pour exporter des périphériques block plus grand que la taille de fichier maximum permise dans le système de fichier. Pour utiliser cette options, il faut créer des fichiers avec les noms au format name.X où name est donné en argument filename, et X est un nombre commençant à 0.
-c Copy on write. Les opérations d'écritures ne sont pas faite sur le fichier exporté, mais dans un fichier séparé. Ce fichier est supprimé quand la connexion est terminée. Cela ralentis le service.
-C Spécifier le fichier de configuration. Défaut: /etc/nbd-server/config.
-M Spécifie le nombre maximum de connexions ouverte. Non spécifié, aucune limite n'est définie.
-d Ne fork pas.
host list filename Cet argument devrait contenir un liste d'IP pour les hôtes qui peuvent se connecter au serveur. les wildcards ne sont pas permis. Si le fichier n'existe pas, il est ignoré ( et tous les hôte peuvent se connecter ); si le fichier existe, mais est vide, aucun hôte ne peut se connecter. Par défaut, le nom nbd_server.allow est utilisé, et recherché dans le répertoire courant, sauf si nbd-server est compilé en service, auquel cas il le recherche dans "/".
section name Si -o est donné, nbd-server affiche la section du fichier de configuration avec cet argument en en-tête qui est fonctionnellement équivalent à d'autres options spécifiés sur la ligne de commande, et quitte.

Exemples

Exporter un fichier /export/nbd/exp-bl-dev sur le port 2000:
nbd-server 2000 /export/nbd/exp-bl-dev
Exporter le même fichier en lecture seule:
nbd-server 2000 /export/nbd/exp-bl-dev -r
Exporter le même fichier en r/w, mais en s'assurant que les changements seront perdu au redémarrage:
nbd-server 2000 /export/nbd/exp-bl-dev -c
^
18 janvier 2015

htmlpdflatexmanmd




nbd-server.config

nbd-server.config

Fichier de configuration pour ndb-server

Description

   Un en-tête de section est un nom unique qui est entre [ et ], et dénote le début d'un section; une section continue jusqu'à ce qu'une autre section commence ou la fin du fichier. La première section doit s'appeler generic et est utilisée pour les option globales qui s'appliques à plus d'un export et doit toujours être présent. Chaque autre section maintient un export; les noms de ces section ne sont pas important excepté qu'ils doivent être unique.

Options pour la section generic

allowlist (bool,optionnel) permet au client de rechercher une liste d'exports depuis ce serveur. nbd-client -l permet d'avoir cette liste.
group (string,optionnel) Le nom du groupe sous lequel le service fonctionne. Non spécifié le serveur ne tente pas de changer son GID.
includedir (string,optionnel) Répertoire contenant les fichiers avec l'extension '.conf' qui contiennent d'autres directives de configuration. la section [generic] ne peut pas être dans un de ces fichiers.
listenaddr (string,optionnel) Contient l'IP local sur laquelle le service écoute.
oldstyle (bool,optionnel) à true, le serveur exporte tous les exports sur un port séparé. Dans ce cas, l'option port pour les exports individuels est mandatoire.
port (string,optionnel) port d'écoute du serveur. Défaut: 10809.
user (string,optionnel) le nom du l'utilisateur sous lequel le service fonctionne. Non spécifié le serveur ne tente pas de changer son UID.

Options pour les sections d'export

authfile (string,optionnel) Le nom du fichier d'autorisation pour cet export. Ce fichier devrait contenir une ligne par adresse IP, ou par réseau en notation CIDR. Si le fichier n'existe pas, tout le monde est autorisé à se connecter. Si le fichier existe mais vide, aucun client n'est autorisé à se connecter.
copyonwrite (bool,optionnel) Spécifie si l'export est copy-on-write, qui n'écrit pas dans le fichier maître, mais dans un fichier séparé, qui est supprimé à la déconnexion.
exportname (string,requis) le nom du fichier qui sera exporté. Doit être pleinement qualifié. Utilisé en conjonction avec temporary, spécifie un template pour le fichier temporaire concerné, et donc peut être utilisé pour contrôler le répertoire dans lequel il est créé.
filesize (entier,optionnel) désactive l'autodétection de la taille du fichier ou du périphérique block. Doit être spécifié en octets. Si l'option multifile est présent, cette option spécifie la taille de tout l'export, pas les fichiers individuels.
flush (bool,optionnel) à true, le serveur informe le client qu'il supporte et souhaite envoyer des requêtes flush quand la couche élévateur les reçois, ce qui cause un fdatasync() ou fsync() si l'option sync est présente dans le stockage. Cela augmente la fiabilité dans le cas des shutdown non propre au prix d'un dégradation des performances.
fua (bool,optionnel) à true, le serveur informe le client qu'il supporte et souhaite envoyer des commandes fua (force specified commands) quand la couche élévateur les reçois, ce qui cause la commande spécifiée d'être synchronisée sur le stockage avec sync_file_range(), ou fdatasync(). Cela augmente la fiabilité dans le cas des shutdown non propre au prix d'un dégradation des performances.
listenaddr (string,optionnel) Adresse IP d'écoute pour cet export, si ordstyle est spécifié dans la section generic
maxconnections (entier,optionnel) Limite le nombre de connections ouverte pour cet export
multifile (bool,optionnel) à true, le serveur recherche les fichiers sous la forme exportname.integer, où exportname est le nom du fichier, suivi d'un nombre unique commençant à 0.
port (integer) requis si oldstyle est spécifié dans la section generic, pour d'écoute pour cet export.
postrun (string,optionnel) si spécifié, assume que c'est une commande qui sera lancée quand un client sera déconnecté. Peut être utile pour nettoyer ce que prerun a définis, ou logger quelque chose. le code de sortie de postrun est ignoré.
prerun (string,optionnel) si spécifié, cette commande sera exécutée après que le client se soit connecté au serveur, mais avant que le serveur commence à desservir . Si la commande contient %s, cette chaîne sera remplacée par le nom du fichier qui est exporté. Si la commande se termine avec un status autre que 0, le serveur assume que l'export a échoué et refuse de le desservir.
readonly (bool,optionnel) Quand cette option est activée, le serveur informe le client qu'il préférerai envoyer des requêtes dans l'order de l'élévateur. Seulement requis quand le serveur n'utilise par l'algorithme d'élévateur, ou cet algorithme est neutralisé.
sdp (bool,optionnel) à true, le serveur utilise SDP ( Socket Direct Protocol) pour desservir l'export, au lieu de simplement l'IP. C'est plus rapide, mais nécessite un hardware spécial ( comme InfiniBand).
sparse_cow (bool,optionnel) à true, le serveur utilise les fichiers sparses pour implémenter l'option copy-on-write. De tels fichiers prennent moins d'espace qu'ils apparaissent, ce qui permet au serveur de manipuler des fichiers plus grands que n'est le périphériques block.
sync (bool,optionnel) Quand cette option est activée, le serveur va appeler un fsync() après chaque écriture au backend. Cela augmente la fiabilité dans le cas des shutdown non propre au prix d'un dégradation des performances.
temporary (bool,optionnel) Créé un export temporaire avec un nom basé sur le nom de l'export. L'export ne persistera par entre les invocations du serveur. Incompatible avec l'option multifile
timeout (string,optionnel) Nombre de secondes qu'une connexion peut être en attente pour cet export. Quand une connexion attend trop longtemps, le serveur force la déconnexion. Désactivé à 0.
transactionlog (string,optionnel) Si spécifié, ce chemin est utilisé pour générer un log de transaction. Ce log est un fichier binaire qui consiste de requêtes envoyés et des réponses reçus par le serveur, mais en excluant les données.
trim (bool,optionnel) quand cette option est activée, le serveur annonce qu'il support la commande NBD_CMD_TRIM pour l'export, cette commande permet au serveur d'annuler la donnée du disque, mais ne l'oblige pas à le faire.
virtstyle (string,optionnel) Définis le style de virtualisation. La virtualisation permet de créer un export qui va desservir un fichier différent en fonction de l'adresse IP qui se connecte. Quand la virtualisation est active, le paramètre exportname nécessite de contenir la chaine %s, qui sera remplacé par l'adresse IP du client. Le résultat de cette transformation est utilisé comme nom de fichier à ouvrir. Il y a 4 type de virtualisation supportés:

        ipliteral %s est remplacé par l'adresse IP du client. (ex: exporname = /export/%s et le client est 192.168.1.100, le serveur tente de desservir /export/192.168.1.100; pour une IPv6, /export/2001:6f8:32f:0:0:0:0:39)
        iphash idem, mais remplace les point par des "/" ( ex /export/192/168/1/100 )
        cidrhash Nécessite d'ajouter un espace et un nombre après lui, qui sera utilisé comme masque réseau. (ex pour un cidrhash = 16, tente d'ouvrir /export/192.168.0.0/192.168.1.100).

Exemples

Configuration simple:
[generic]
[export]
exportname = /export/blkdev
Pour plus de sécurité, on peut créer un fichier d'autorisation:
[generic]
user = nbd
group = nbd
[export]
exportname = /export/blkdev
authfile = /etc/nbd-server/allow
Et le fichier /etc/nbd-server/allow:
127.0.0.1
192.168.0.0/8
192.168.1.1
Pour être compatible avec les anciens clients:
[generic]
oldstyle = true
[export]
exportname = /export/blkdev
port = 12345
^
18 janvier 2015

htmlpdflatexmanmd




nbd-trdump

nbd-trdump

Traduit un log de transaction nbd sous forme human readable

Sortie

Une demande du client au serveur
Une réponse du serveur au client
H Le handle du packet
C La commande envoyée
O L'offset depuis le début du disque
L La longueur de la donnée
E L'erreur retournée
^
19 janvier 2015

htmlpdflatexmanmd




xnbd-bgctl

xnbd-bgctl

Permet de se connecter au canal de contrôle d'un serveur xnbd-server et de le piloter.

OPTIONS

--cache-all Si le serveur distant agit comme proxy, l'instruit de cacher tous les blocks et ses blocks disques associés. Une fois terminé, l'instance maintient toutes les données depuis l'instances originale, et il n'est plus nécessaire d'agir comme proxy.
--cache-all2 Idem, mais détache le processus du terminal et utilise une connexion dédiée pour le transfert de données.
--query Récupère des données statistiques de l'instance proxy.
--reconnect Récupère une connexion perdue avec le serveur originale.
--switch Stop le proxy et le redémarre en mode target. toutes les sessions client sont préservés
--exportname NAME Si le serveur supporte l'accès aux périphériques par identifiant, utilise NAME pour demander l'accès à un volume particulier. Utile avec xnbd-wrapper.
--progress Affiche une barre de progression sur stderr.
--force Ignore les risques.

Arguments positionnels

CONTROL_SOCKET Socket UNIX sur lequel xnbd-server écoute.
^
19 janvier 2015

htmlpdflatexmanmd




xnbd-register

xnbd-register

Restaure les sessions xNBD au boot basés sur un fichier de configuration.

OPTIONS

--start Démarre les périphériques configurés dans les fichiers de configuration.
--status Récupère le statut de wrapper depuis une commande xnbd-wrapper en cours de fonctionnement.
--stop Stop toutes les connexions xnbd.
--restart Relance les instances xnbd.
--config FILE Emplacement du fichier de configuration. Défaut: /etc/xnbd.conf
--quiet mode silencieux

Fichiers

/etc/xnbd.conf Fichier de configuration pour xnbd-register.
^
19 janvier 2015

htmlpdflatexmanmd




xnbd-server

xnbd-server

Dessert un périphérique block à d'autre machines via le protocole NBD

Description

   xnbd-server est un service NBD. Il exporte un fichier image aux clients nbd sur le réseau. Un client peut accéder au fichier exporté viar une interface block-level I/O; il est possible de créer des aires de swap dessus ou de créer des systèmes de fichier.

   xNBD offre des avantages supplémentaires par rapport à l'implémentation NBD originale. xNBD offre de meilleurs performances, supporte le copy-on-write (distribué), les snapshots, migration à chaud pour les machines virtuelles, et l'IPv6.

xnbd-server peut opérer en 3 modes: le mode target, le mode target copy-on-write, et le mode proxy.
xnbd-server --target exporte des images disques aux clients
xnbd-server --cow-target exporte des images disque de base aux clients. Les opérations d'écriture ne sont pas envoyés sur le disque de base, mais dans un fichier séparé, qui est supprimé à la déconnexion du client.
xnbd-server --proxy agit comme proxy pour un serveur xnbd-server distant. Le serveur proxy reçoit les requêtes de lecture/écriture les clients comme un serveur d'image fait normalement, mais cache les blocks disque, et récupère les blocks depuis le serveur distant si nécessaire. Aucune opération d'écriture ne se produit sur le serveur distant. Il peut être utilisé pour accélérer les accès distants, partages une image disque lecture-seule, et répliquer une image exportée à un autre nœud de manière transparente. Il fonctionne également pour la migration à chaud.

   Attention: plusieurs clients peut accéder simultanément à une seule instance du serveur. xnbd-server n'offre pas de mécanisme de lock ou de synchronisation. Dans ces cas, vous devez utiliser un système de fichier clusterisé dans les images disque exportés pour éviter tout dommage à vos données.

OPTIONS

--daemonize Lance le service en tâche de fond
--inetd Lance le service via inetd
--logpath FILE Log les messages dans le fichier au lieu de stderr/syslog
--syslog Log les messages dans syslog
--lport PORT Écoute les connexions entrante sur le port donné. Défaut: 8520.
--readonly Export le fichier image en lecture seule. Si une opération d'écriture est reçu du client, il est déconnecté. Si utilisé en mode proxy, xnbd-server rejète les requêtes d'écriture.
--connected-fd NUMBER Utilise le descripteur de fichier NUMBER comme canal bi-directionnel, pré-négocié pour un simple client. Utilisé avec xnbd-wrapper à l'invocation de xnbd-server, en interne.

Options du mode proxy

--target-exportname NAME Définis le nom de l'export pour requêter puis une cible xnbd-wrapper
--clear-bitmap Efface le fichier bitmat existant. Par défaut, l'état précédent est ré-utilisé
--max-queue-size NUMBER Limite le nombre total de requêtes en file d'attente. Si ce nombre est atteins, le serveur retarde la reception des nouvelles requêtes. Défaut: 0 (pas le limitation)
--max-buf-size NUMBER Limite l'utilisation du tampon interne à approximativement NUMBER octets. Si cette limite est atteinte, le serveur retarde les nouvelles requêtes. Défaut: 0 (pas le limitation)

Signaux

SIGUSR1 Prend un snapshot du fichier image. Seulement en mode target
SIGUSR2 Change le mode proxy en mode target. Utiliser xnbd-bgctl --switch au lieu d'utiliser ce signal.
^
19 janvier 2015

htmlpdflatexmanmd




xnbd-wrapper

xnbd-wrapper

Gère plusieurs fichiers à exporter comme périphérique block à d'autre machines.

Description

   xnbd-wrapper est un super-serveur pour xnbd-server. Son but est de gérer plusieurs images exportés en une fois. Un client peut se connecter à ce super-serveur et il sera redirigé vers le serveur xnbd fournissant la ressource demandée.

   xnbd-wrapper est utile si vous désirez exporter plusieurs fichiers ou périphériques block sur un hôte. Au lieu de démarrer plusieurs instances de xnbd-server et de se rappeler des ports exportés pour chacun, xnbd-wrapper recherche le fichier automatiquement et le mappe au serveur correspondant.

OPTIONS

--daemonize Lance le service en tâche de fond
--imgfile IMAGE Export le fichier image via xnbd-wraper. Peut être spécifié plusieurs fois
--laddr ADDRESS L'adresse d'écoute du wrapper.
--logpath FILE Log les messages dans le fichier au lieu de stderr/syslog
--syslog Log les messages dans syslog
--lport PORT Écoute les connexions entrante sur le port donné. Défaut: 8520.
--socket PATH le wrapper peut être contrôlé via un socket de contrôle. Défaut: /var/run/xnbd-wrapper.ctl
--xnbd-bgctl COMMAND Spécifie le chemin de l'exécutable xnbd-bgctl. La commande peut être un nom de fichier ou une commande pour résoudre le nom du fichier.
--xnbd-server COMMAND Spécifie le chemin de l'exécutable xnbd-server.
--cow Invoque xnbd-server --cow-target
--readonly invoke xnbd-server --readonly
--max-queue-size NUMBER Paramètre transféré au mode proxy à l'invocation
--max-buf-size Paramètre transféré au mode proxy à l'invocation
^
19 janvier 2015

htmlpdflatexmanmd




xnbd-wrapper-ctl

xnbd-wrapper-ctl

Permet de se connecter au canal de contrôle de xnbd-wrapper et de le piloter.

OPTIONS

--add-target FILE instruit xnbd-wrapper d'ajouter le fichier donné comme périphérique exporté.
--add-proxy TARGET_HOST TARGET_PORT CACHE_IMAGE BITMAP_IMAGE CONTROL_SOCKET_PATH instruit xnbd-wrapper d'ajouter un proxy au serveur cible donné
--list|-l Liste les noms de fichier exportés
--remove-by-file FILE instruit xnbd-wrapper de supprimer le volume exporté comme fichier de la liste des périphériques exportés.
--remove-by-exportname NAME instruit xnbd-wrapper de supprimer le volume exporté comme nom de la liste des périphériques exportés.
--socket|-s SOCKETPATH Se connecte au socket. Défaut: /var/run/xnbd-wrapper.ctl
--target-exportname NAME Définis le nom de l'export de requête depuis la cible xnbd-wrapper proxifié. Utilisé seulement avec --add-proxy et --bgctl-reconnect
--bgctl-cache-all
--bgctl-query
--bgctl-reconnect REMOTE_HOST REMOTE_PORT
--bgctl-switch Voir xnbd-bgctl pour les détails.

Arguments positionnels

FILE L'emplacement du fichier disque
LOCAL_EXPORTNAME Export le nom au procéssus xnbd-wrapper en cours de fonctionnement
REMOTE_HOST Hôte cible de connexion.
REMOTE_PORT Port TCP de connexion.
CACHE_IMAGE Emplacement du fichier disque (cache)
BITMAP_IMAGE Emplacement du fichier bitmap d'état du cache
CONTROL_SOCKET_PATH Socket UNIX sur lequel xnbd-server écoute.
^
19 janvier 2015

htmlpdflatexmanmd




xnbd.conf

xnbd.conf

Fichier de configuration pour xnbd-register

Description

   Ce fichier est une configuration semi-structurée, décrivant les connexions client/wrapper qui sont supposés être restorés au démarrage du système. La syntaxe de ce fichier est une structure de données JSON. 2 types d'objets sont reconnus: les volumes xnbd et une instance wrapper. les volumes xnbd sont indexés par le nom des périphériques supposé. C'est à dire, pour restaurer /dev/nbd° un objet nommé nbd0 doit être configuré. Les arguments valides sont les hôte, noms et port. Donc par exemple, pour configurer /dev/nbd0 en se connectant à localhost sur le port 8520. Si présent, identifie le périphérique partagé par le nom logique configuré:


"nbd0": {
    "host": "127.0.0.1",
    "port": 8520,
    "name": "name"
}

   Similairement, une instance wrapper configure un xnbd-wrapper. Les options valides sont:

address Adresse d'écoute
port Port d'écoute
socket socket pour les canaux de contrôle
logpath chemin pour la redirection des log
volumes Un mappage de volumes qui sont exportés. Les clés de mappage sont les noms d'export, les valeurs de mappage sont les chemin des images disque.


"wrapper": {
    "address": "127.0.0.1",
    "port": 8520,
    "socket": "/var/run/xnbd.ctl",
    "logpath": "/var/log/xnbd.log",
    "volumes": {
        "one": "/dev/volume",
        "two": "/dev/sdb1",
        "three": "/var/lib/image.file",
    }
}