Dans le didacticiel précédent, nous avons appris à créer un zpool et un système de fichiers ou un ensemble de données ZFS. Dans ce didacticiel, je vais vous montrer étape par étape comment utiliser les instantanés, les clones et la réplication ZFS. Instantané, clone. et la réplication sont les fonctionnalités les plus puissantes du système de fichiers ZFS.
Instantanés ZFS - un aperçu
L'instantané est l'une des fonctionnalités les plus puissantes de ZFS, un instantané fournit une copie ponctuelle en lecture seule d'un système de fichiers ou d'un volume qui ne consomme pas d'espace supplémentaire dans le pool ZFS. L'instantané utilise uniquement de l'espace lorsque les références de bloc sont modifiées. Les instantanés préservent l'espace disque en enregistrant uniquement les différences entre l'ensemble de données actuel et une version précédente.
Un exemple typique d'utilisation d'un instantané est d'avoir un moyen rapide de sauvegarder l'état actuel du système de fichiers lorsqu'une action risquée comme une installation de logiciel ou une mise à niveau du système est effectuée.
Création et destruction d'un instantané ZFS
Les instantanés de volumes ne sont pas accessibles directement, mais ils peuvent être clonés, sauvegardés et restaurés. Créer et détruire un instantané ZFS est très simple, nous pouvons utiliser les commandes zfs snapshot et zfs destroy pour cela.
Créez un pool appelé datapool.
# zpool create datapool mirror /dev/sdb /dev/sdc
# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
datapool 1.98G 65K 1.98G - 0 % 0 % 1,00 x EN LIGNE -
Maintenant, nous avons un pool appelé datapool, nous devons ensuite créer un système de fichiers ZFS pour simuler la fonctionnalité d'instantané.
# zfs create datapool/docs -o mountpoint=/docs
# zfs list -r datapool
NOM UTILISÉ DISPONIBLE RÉFÉRER POINT DE MONTAGE
datapool 93.5K 1.92G 19K /datapool
datapool/docs 19K 1.92G 19K /docs
Pour créer un instantané du système de fichiers, nous pouvons utiliser la commande zfs snapshot en spécifiant le pool et le nom de l'instantané. Nous pouvons utiliser l'option -r si nous voulons créer un instantané de manière récursive. Le nom de l'instantané doit satisfaire aux exigences de dénomination suivantes :
[email protected][email protected]
# zfs snapshot datapool/[email protected]
# zfs list -t snapshot
NAME UTILISÉ AVAIL REFER MOUNTPOINT
datapool/[email protected] 0 - 19.5K -
Un instantané pour datapool/docs est créé.
Pour détruire l'instantané, nous pouvons utiliser la commande zfs destroy comme d'habitude.
# zfs destroy datapool/[email protected]
# zfs list -t snapshot
aucun jeu de données disponible
Annuler un instantané
Pour la simulation, nous devons créer un fichier de test dans le répertoire /docs.
# echo "version 1"> /docs/data.txt
# cat /docs/data.txt
version 1
# zfs snapshot datapool/[email protected]
# zfs list -t snapshot
NAME UTILISÉ AVAIL REFER MOUNTPOINT
datapool/[email protected] 9K - 19,5K -
Maintenant, nous modifions le contenu de /docs/data.txt
# echo "version 2"> /docs/data.txt
# cat /docs/data.txt
version 2
Nous pouvons revenir complètement à un ancien instantané qui nous donnera la copie du moment où l'instantané a été pris.
# zfs list -t snapshot
NOM UTILISÉ AVAIL UTILISÉ DISPONIBLE REFER POINT DE MONTAGE
datapool/[email protected] 9.50K - 19.5K -
# zfs rollback datapool/[email protected]
# cat /docs/data.txt
version 1
Comme nous pouvons le voir, le contenu de data.txt est revenu au contenu précédent.
Si nous voulons renommer l'instantané, nous pouvons utiliser la commande zfs rename.
# zfs rename datapool/[email protected] datapool/[email protected]
# zfs list -t snapshot
NOM UTILISÉ AVAIL REFER MOUNTPOINT
datapool/[email protected] 9.50K - 19 500 -
Remarque :un ensemble de données ne peut pas être détruit s'il existe des instantanés de cet ensemble de données, mais nous pouvons utiliser l'option -r pour remplacer cela.
# zfs destroy datapool/docs
impossible de détruire 'datapool/docs' :le système de fichiers a des enfants
utilisez '-r' pour détruire les ensembles de données suivants :
datapool/[email protected]# zfs destroy -r datapool/docs
# zfs list -t snapshot
aucun jeu de données disponible
Présentation des clones ZFS
Un clone est un volume inscriptible ou un système de fichiers dont le contenu initial est le même que l'ensemble de données à partir duquel il a été créé.
Création et destruction d'un clone ZFS
Les clones ne peuvent être créés qu'à partir d'un instantané et un instantané ne peut pas être supprimé tant que vous n'avez pas supprimé le clone basé sur cet instantané. Pour créer un clone, utilisez la commande zfs clone.
# zfs create datapool/docs -o mountpoint=/docs
# zfs list -r datapool
NOM UTILISÉ DISPONIBLE RÉFÉRER POINT DE MONTAGE
datapool 93.5K 1.92G 19K /datapool
datapool/docs 19K 1.92G 19K /docs# mkdir /docs/dossier{1..5}
# ls /docs/
dossier1 dossier2 dossier3 dossier4 dossier5# zfs snapshot datapool/[email protected]
# zfs list -t snapshot
NAME UTILISÉ DISPONIBLE REFER MOUNTPOINT
datapool/[email protected] 0 - 19K -Nous créons maintenant un clone à partir du pool de données d'instantanés/[email protected]
# zfs clone datapool/[email protected] datapool/pict
# zfs list
NOM UTILISÉ AVA UTILISÉ POINT DE MONTAGE
datapool 166 K 1,92 G 19 K /datapool
datapool/docs 19 K 1.92G 19K /docs
datapool/pict 1K 1.92G 19K /datapool/pictLe processus de clonage est terminé, le pool de données d'instantané/[email protected] a été cloné vers /datapool/pict. Lorsque nous vérifions le contenu du répertoire /datapool/pict, le contenu doit être identique à /datapool/docs.
# ls /datapool/pict
dossier1 dossier2 dossier3 dossier4 dossier5Une fois que nous avons cloné un instantané, l'instantané ne peut pas être supprimé tant que vous n'avez pas supprimé l'ensemble de données.
# zfs destroy datapool/[email protected]
impossible de détruire 'datapool/[email protected]' :l'instantané a des clones dépendants
utilisez '-R' pour détruire les ensembles de données suivants :
pool de données/image# zfs détruit le pool de données/l'imageEnfin, nous pouvons détruire l'instantané.
# zfs destroy datapool/[email protected]
# zfs list -t snapshot
aucun jeu de données disponible
Présentation de la réplication ZFS
La base de cette réplication ZFS est un instantané, nous pouvons créer un instantané à tout moment, et nous pouvons créer autant d'instantanés que nous le souhaitons. En créant, transférant et restaurant continuellement des instantanés, vous pouvez fournir une synchronisation entre une ou plusieurs machines. ZFS fournit une fonctionnalité de sérialisation intégrée qui peut envoyer une représentation de flux des données vers la sortie standard.
Configurer la réplication ZFS
Dans cette section, je souhaite vous montrer comment répliquer un ensemble de données d'un pool de données à un pool de sauvegarde, mais il est possible non seulement de stocker les données sur un autre pool connecté au système local, mais également de les envoyer via un réseau vers un autre système. Les commandes utilisées pour répliquer les données sont zfs send et zfs receive.
Créez un autre pool appelé pool de sauvegarde.
# zpool create backuppool mirror sde sdf
# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
backuppool 1.98G 50K 1.98G - 0 %
pool de données 1.98G 568K 1.98G - 0 % 0 % 1.00x EN LIGNE -Vérifiez l'état du pool :
# zpool status
pool :datapool
état :ONLINE
analyse :aucune demande
config :
NAME STATE READ WRITE CKSUM
Datapool en ligne 0 0 0
miroir-0 en ligne 0 0 0
sdb en ligne 0 0 0
sdc en ligne 0 0 0
Erreurs:aucune erreur de données connuepool :pool de sauvegarde
:
état :EN LIGNE
analyse :aucune requête
config :
NOM ÉTAT READ WRITE CKSUM
pool de sauvegarde EN LIGNE 0 0 0
mirror-0 EN LIGNE 0 0 0
sde EN LIGNE 0 0 0
sdf EN LIGNE 0 0 0
erreurs de données connuesCréez un ensemble de données que nous répliquerons.
# zfs snapshot datapool/[email protected]
# zfs list -t snapshot
NAME UTILISÉ DISPONIBLE REFER MOUNTPOINT
datapool/[email protected] 0 - 19K -
# ls /docs/
dossier1 dossier2 dossier3 dossier4 dossier5Il est temps de faire la réplication.
# zfs send datapool/[email protected] | zfs reçoit le pool de sauvegarde/sauvegarde
# liste zfs
NOM UTILISÉ DISPONIBLE REFER POINT DE MONTAGE
pool de sauvegarde 83 K 1,92 G 19 K /pool de sauvegarde
pool de sauvegarde/sauvegarde 19 K 1,92 G /pool de sauvegarde 19 K >datapool 527K 1.92G 19K /datapool
datapool/docs 19K 1.92G 19K /docs# ls /backuppool/backup
dossier1 dossier2 dossier3 dossier4 dossier5L'ensemble de données datapool/[email protected] a été répliqué avec succès vers backuppool/backup.
Pour répliquer un jeu de données sur une autre machine, nous pouvons utiliser la commande ci-dessous :
# zfs send datapool/[email protected] | ssh autre serveur zfs recv pool de sauvegarde/sauvegardeTerminé.
Conclusion
L'instantané, le clonage et la réplication sont les fonctionnalités les plus puissantes de ZFS. Les instantanés sont utilisés pour créer des copies ponctuelles de systèmes de fichiers ou de volumes, le clonage est utilisé pour créer un ensemble de données en double, et la réplication est utilisée pour répliquer un ensemble de données d'un pool de données vers un autre pool de données sur la même machine ou pour répliquer des pools de données entre différents machines.