¿Forma correcta de crear un zfs a partir de un directorio existente?

9

Digamos que tengo un rpool con etc / como un directorio regular dentro de él y ahora quiero crear un zfs rpool / etc separado, obviamente heredando todos los datos que tenía en / etc original.

¿Cuál sería la forma más adecuada y segura de hacerlo?

Yurii Rashkovskii
fuente

Respuestas:

4

No es compatible para convertirse /etcen su propio sistema de archivos zfs.

La razón es que /etces necesaria durante las primeras etapas del arranque, antes de que (Open) Solaris comience a montar sistemas de archivos zfs, por lo que estaría vacío si lo cambia.

Supongo que desea tomar instantáneas de /etc, pero en su lugar puede tomar instantáneas del sistema de archivos raíz:

zfs snapshot rpool/ROOT/opensolaris

Puede que tenga que reemplazar opensolariscon el nombre del entorno de arranque actual (ejecutar beadm listpara averiguar cuál)

Martín
fuente
2
ok, ¿qué pasa con cualquier otro directorio, entonces? digamos, rpool / zones / myzone / export / home / git? :)
Yurii Rashkovskii
1
Si desea convertir su directorio git en un sistema de archivos zfs, solo necesita hacer un archivo tar de los contenidos actuales, luego "rm -rf" el directorio git, después de eso ejecute "zfs create -o mountpoint = / path / to / git rpool / path / to / whatever / git "y finalmente descomprimir los archivos guardados.
Martin
2
Oh, bueno, eso es lo que pensaba ... pero secretamente esperaba que hubiera una manera transparente para ZFS divididas :)
Yurii Rashkovskii
8

No hay una forma integrada o automatizada de crear un nuevo DataSet y migrar los datos existentes a él. Para hacerlo, deberá crear el conjunto de datos y manualmente (por ejemplo, rsync) los datos.

Digamos que tiene un conjunto de datos llamado tank\setcon un directorio llamado folder. Desea 'promover' la carpeta para que sea un conjunto de datos secundario llamado 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

Luego revise que los datos se vean bien; tome una instantánea del conjunto de datos padre por si acaso y elimine el folder-backupdirectorio.

STW
fuente