Une bonne façon de créer un zfs à partir d'un répertoire existant?

9

Disons que j'ai un rpool avec etc / en tant que répertoire normal et que je veux maintenant créer un zfs rpool / etc séparé, héritant évidemment de toutes les données que j'avais dans l'original / etc.

Quelle serait la manière la plus appropriée et la plus sûre de le faire?

Yurii Rashkovskii
la source

Réponses:

4

Il n'est pas pris en charge pour se transformer /etcen son propre système de fichiers zfs.

La raison en est que cela /etcest nécessaire pendant les premières étapes du démarrage, avant que (Open) Solaris ne commence à monter les systèmes de fichiers zfs, il serait donc vide si vous le modifiez.

Je suppose que vous voulez prendre des instantanés /etc, mais vous pouvez simplement prendre des instantanés du système de fichiers racine à la place:

zfs snapshot rpool/ROOT/opensolaris

Vous devrez peut-être remplacer opensolarispar le nom de l'environnement de démarrage actuel (exécutez beadm listpour savoir lequel)

Martin
la source
2
ok, qu'en est-il de tout autre répertoire, alors? disons, rpool / zones / myzone / export / home / git? :)
Yurii Rashkovskii
1
Si vous voulez transformer votre répertoire git en un système de fichiers zfs, il vous suffit de faire une archive tar du contenu actuel, puis "rm -rf" le répertoire git, après cela lancez "zfs create -o mountpoint = / path / to / git rpool / chemin / vers / quoi que ce soit / git "et enfin décompressez les fichiers enregistrés.
Martin
2
oh, ok, c'est ce que je pensais ... mais j'espérais secrètement qu'il y avait un moyen transparent de diviser zfs :)
Yurii Rashkovskii
8

Il n'existe pas de méthode intégrée ou automatisée pour créer un nouveau DataSet et y migrer les données existantes. Pour ce faire, vous devrez créer l'ensemble de données et manuellement (par exemple rsync) les données.

Supposons que vous ayez un ensemble de données nommé tank\setavec un répertoire nommé folder. Vous souhaitez «promouvoir» le dossier pour qu'il soit un jeu de données enfant nommé tank\set\folder:

mv /mnt/tank/set/folder /mnt/tank/set/folder-backup # move this out of the way so the new dataset doesn't mount on top of it
zfs create tank/set/folder
rsync -aAX /mnt/tank/set/folder-backup/ /mnt/tank/set/folder # bring over all the old data including acls and attributes

Vérifiez ensuite que les données semblent bonnes; prenez un instantané de l'ensemble de données parent au cas où, et supprimez le folder-backuprépertoire.

STW
la source