¿Cómo enviar una instantánea del sistema de archivos ZFS de un solo padre y la misma instantánea de todos sus descendientes a un nuevo grupo?

¿Cómo enviar una instantánea del sistema de archivos ZFS de un solo padre y la misma instantánea de todos sus descendientes a un nuevo grupo?

Si zfs snapshot -r tank@20220129, todos los subsistemas de archivos también obtienen esa instantánea.

¿Cómo enviar esa única instantánea del tanque con todos los sub-fs a un nuevo grupo (sin base histórica de instantáneas)?

Si bien zfs send -R tank@20220129 enviará todos los sub-fs, también enviará todas las instantáneas.

(Más tarde podríamos eliminar todas esas instantáneas, pero eso podría representar una gran cantidad de envíos adicionales solo para eliminarlas al finalizar).

Parece que no hay ninguna funcionalidad zfs send -r.

Respuesta1

Edición final: tienes razón, no puedes recurrir a la recursividad, no se maneja bien (¡nota para clones! Cada uno en el árbol debe crearse por separado) Entiendo la afirmación de que la función de herencia se está replicando en lugar del valor actual de la herencia, pero tengo problemas. con casos de uso donde este es el valor más deseado. Haré una solicitud de función. Cuando cualquier propiedad modificable cambia de la predeterminada, todos los elementos secundarios cambian automáticamente a herencia. Tengo una raíz de cifrado y una clave gen ds con muchos valores no predeterminados para los niños activos. Los padres y los hijos deben tener una propiedad para poder optar por no recibir o transmitir la herencia de todas o de un conjunto de propiedades. Entonces zfs send -R -p actuaría de la manera esperada. Su caso necesita una función ascendente, a menudo solo las instantáneas individuales desean un envío recursivo y lo mismo para crear clones de forma recursiva a partir de una instantánea creada de forma recursiva es una opción esperada que me sorprendió encontrar que no estaba presente.

Estoy bastante seguro de que podría hacer un clon de zfs o algo como esto a continuación, no mi original "Si aparecen instantáneas, simplemente zfs las destruye todas; entonces su zfs envía | zfs recv del clon sin ninguna instantánea". Lo cual fue poco elegante, no investigado y vago, y no es necesario clonar de todos modos, solo un bucle for como este.

for ds in $(zfs list -Ho name -r rpool); do \
zfs send ${ds}@20220129 | zfs recv -d newpool; done

Pero un clon también funcionaría, con un nuevo zfs snap -r y zfs send -R como una sola instantánea en el nuevo clon. Pero no puedes clonar de forma recursiva, por lo que de todos modos necesitarías un bucle for similar. O sincronícelo con un grupo receptor limpio y agradable y conjuntos de datos montados con las propiedades deseadas si no le importa perder todo el historial de zfs.

Así que estoy ampliando mi solución porque no es tan fácil ni tan segura y pronto lo haré en un sistema activo pero no crítico. En mi caso, también dividiré mis vdevs espejo y haré algunos cambios en las propiedades del grupo y de zfs en zfs recv.

A las operaciones recursivas de Zpool y zfs les vendría bien mejorar, siempre han sido un problema. Y no hay mejores prácticas claras con múltiples zsys bootfs, zfs-mount-generator, zfs-zed.service (¡que no se reinicia después de un ciclo de suspensión systemctl!), montajes de conjuntos de datos persistentes que no reflejan el estado de zfs-list.cache/pool en el arranque. Cananoical parece haber terminado su impulso para zfs en la usabilidad de root y zsys. No ha terminado sólo porque es una opción de instalación de Ubuntu.

for zp in rpool bpool vault; do \
zpool trim -w $zp; zpool scrub -w $zp; \
zfs snap -r ${zp}@b4split; \
done
for zp in rpool bpool vault; do \
zpool attach -w $zp /dev/sda /dev/sde; \
zpool attach -w $zp /dev/sdc /dev/sdf; \
zpool split -w $zp ${zp}-offbakup /dev/sdg /dev/sdh; \
zpool initialize -w ${zp}-offbakup; \
zpool scrub -w ${zp}-offbakup; \
zpool export ${zp}-offbakup; \
done; rest

cat << EOF >> /etc/motd
> IMPORTANT NOTE TO SELF. Pool on zfc-receive with encryption, zstd, new dataset struction for boot enivironments \
Out with ubuntu, snapd!!!, grub, ext4, btrfs, lz4, snapd, systemd, docker, x|X* \
> IN like RSYNC void-linux-install, build zfsbootmenu AND s6 from source \
> wayland lxc libvirt pcie passthrough to stripped win11 for mah Civ-6 and Steam 
> EOF

for zp in rpool bpool vault; do \
zfs snap -r $zp@pre-b4move; \
zpool set localhost:PROPERTY-orig $(zpool list -Ho PROPERTY $zp); \
zpool checkpoint $zp;
zpool upgrade $zp (!);
done

for ds in $(zfs -Ho name -r rpool bpool vault); do \
echo "record some original properties for reuse - inherited props belong to parent dataset so revert on recv even with send -R or -p"; \
zfs set localhost:[PROPERTY]_orig=$(zfs -Ho [PROPERTY] $ds); \
done

Descubra cómo instalar void linux y zfsbootmenu en este truco y todos los montajes automáticos de zsys y systemd zfs después de una nueva recursividad de envío/recepción de zfs. Tener herencia consistente y -o deseado en zfs es muy importante.

─# zlsz
bpool/BOOT/garuda              com.ubuntu.zsys:last-used           1665060644
bpool/BOOT/kinetic             com.ubuntu.zsys:last-used           1664996078
bpool/BOOT/pve30-cli           com.ubuntu.zsys:last-used           1664973489
bpool/BOOT/pve30-gnm           com.ubuntu.zsys:last-used           1665060644
rpool/ROOT/garuda              com.ubuntu.zsys:last-used           1665060644
rpool/ROOT/garuda              com.ubuntu.zsys:last-booted-kernel  vmlinuz-linux-lts
rpool/ROOT/garuda              com.ubuntu.zsys:bootfs              yes
rpool/ROOT/garuda/root         com.ubuntu.zsys:last-used           1665060644
rpool/ROOT/garuda/root         com.ubuntu.zsys:last-booted-kernel  vmlinuz-linux-lts
rpool/ROOT/garuda/root         com.ubuntu.zsys:bootfs              no
rpool/ROOT/garuda/srv          com.ubuntu.zsys:last-used           1665060644
rpool/ROOT/garuda/srv          com.ubuntu.zsys:last-booted-kernel  vmlinuz-linux-lts
rpool/ROOT/garuda/srv          com.ubuntu.zsys:bootfs              no
rpool/ROOT/garuda/var          com.ubuntu.zsys:last-used           1665060644
rpool/ROOT/garuda/var          com.ubuntu.zsys:last-booted-kernel  vmlinuz-linux-lts
rpool/ROOT/garuda/var          com.ubuntu.zsys:bootfs              no
rpool/ROOT/garuda/var/cache    com.ubuntu.zsys:last-used           1665060644
rpool/ROOT/garuda/var/cache    com.ubuntu.zsys:last-booted-kernel  vmlinuz-linux-lts
rpool/ROOT/garuda/var/cache    com.ubuntu.zsys:bootfs              no
rpool/ROOT/garuda/var/lib      com.ubuntu.zsys:last-used           1665060644
rpool/ROOT/garuda/var/lib      com.ubuntu.zsys:last-booted-kernel  vmlinuz-linux-lts
rpool/ROOT/garuda/var/lib      com.ubuntu.zsys:bootfs              no
rpool/ROOT/garuda/var/log      com.ubuntu.zsys:last-used           1665060644
rpool/ROOT/garuda/var/log      com.ubuntu.zsys:last-booted-kernel  vmlinuz-linux-lts
rpool/ROOT/garuda/var/log      com.ubuntu.zsys:bootfs              no
rpool/ROOT/garuda/var/tmp      com.ubuntu.zsys:last-used           1665060644
rpool/ROOT/garuda/var/tmp      com.ubuntu.zsys:last-booted-kernel  vmlinuz-linux-lts
rpool/ROOT/garuda/var/tmp      com.ubuntu.zsys:bootfs              no
rpool/ROOT/kinetic             com.ubuntu.zsys:last-used           1664996078
rpool/ROOT/kinetic             com.ubuntu.zsys:last-booted-kernel  vmlinuz-5.19.0-18-generic
rpool/ROOT/kinetic             com.ubuntu.zsys:bootfs              yes
rpool/ROOT/pve30-cli           com.ubuntu.zsys:last-used           1664973489
rpool/ROOT/pve30-cli           com.ubuntu.zsys:last-booted-kernel  vmlinuz-5.15.53-1-pve
rpool/ROOT/pve30-cli           com.ubuntu.zsys:bootfs              yes
rpool/ROOT/pve30-gnm           com.ubuntu.zsys:last-used           1665060644
rpool/ROOT/pve30-gnm           com.ubuntu.zsys:last-booted-kernel  vmlinuz-5.15.60-1-pve
rpool/ROOT/pve30-gnm           com.ubuntu.zsys:bootfs              yes
rpool/USERDATA/garuda          com.ubuntu.zsys:last-used           1665060644
rpool/USERDATA/garuda          com.ubuntu.zsys:bootfs-datasets     rpool/ROOT/garuda
rpool/USERDATA/kinetic         com.ubuntu.zsys:last-used           1664996078
rpool/USERDATA/kinetic         com.ubuntu.zsys:bootfs-datasets     rpool/ROOT/kinetic
rpool/USERDATA/pve30-cli       com.ubuntu.zsys:last-used           1664973489
rpool/USERDATA/pve30-cli       com.ubuntu.zsys:bootfs-datasets     rpool/ROOT/pve30-cli
rpool/USERDATA/pve30-gnm       com.ubuntu.zsys:last-used           1665060644
rpool/USERDATA/pve30-gnm       com.ubuntu.zsys:bootfs-datasets     rpool/ROOT/pve30-gnm
                           -
└─# zfs list -o name,used,dedup,secondarycache,sharesmb,acltype,overlay,compression,encryption,canmount,mountpoint,mounted
NAME                            USED  DEDUP          SECONDARYCACHE  SHARESMB  ACLTYPE   OVERLAY  COMPRESS        ENCRYPTION   CANMOUNT  MOUNTPOINT               MOUNTED
bpool                          1.94G  on             metadata        off       off       off      lz4             off          off       /bpool                   no
bpool/BOOT                     1.92G  on             metadata        off       off       on       lz4             off          off       none                     no
bpool/BOOT/garuda               250M  on             metadata        off       off       off      zstd-3          off          noauto    /boot                    no
bpool/BOOT/kinetic              782M  on             metadata        off       off       on       lz4             off          noauto    /boot                    no
bpool/BOOT/pve30-cli            273M  on             metadata        off       off       on       lz4             off          noauto    /boot                    no
bpool/BOOT/pve30-gnm            658M  on             metadata        off       off       on       lz4             off          noauto    /boot                    no
bpool/grub                     5.37M  on             metadata        off       off       on       lz4             off          noauto    /boot/grub               no
rpool                           176G  off            metadata        off       posix     off      lz4             off          off       /rpool                   no
rpool/LINUX                     772M  off            metadata        off       posix     off      lz4             off          off       /                        no
rpool/LINUX/opt                 765M  off            metadata        off       posix     off      lz4             off          noauto    /opt                     no
rpool/LINUX/usr-local          6.95M  off            metadata        off       posix     on       lz4             off          noauto    /usr/local               no
rpool/ROOT                     42.4G  off            metadata        off       posix     off      lz4             off          noauto    /rpool/ROOT              no
rpool/ROOT/garuda              19.7G  off            metadata        off       posix     off      zstd-3          off          noauto    /                        no
rpool/ROOT/garuda/root         3.56G  off            metadata        off       posix     off      zstd-3          off          noauto    /root                    no
rpool/ROOT/garuda/srv           208K  off            metadata        off       posix     off      zstd-3          off          noauto    /srv                     no
rpool/ROOT/garuda/var          5.49G  off            metadata        off       posix     off      zstd-3          off          off       /var                     no
rpool/ROOT/garuda/var/cache    5.46G  off            metadata        off       posix     off      zstd-3          off          noauto    /var/cache               no
rpool/ROOT/garuda/var/lib       192K  off            metadata        off       posix     off      zstd-3          off          off       /var/lib                 no
rpool/ROOT/garuda/var/log      10.1M  off            metadata        off       posix     off      zstd-3          off          noauto    /var/log                 no
rpool/ROOT/garuda/var/tmp      15.5M  off            metadata        off       posix     off      zstd-3          off          noauto    /var/tmp                 no
rpool/ROOT/kinetic             7.26G  off            metadata        off       posix     off      lz4             off          noauto    /                        no
rpool/ROOT/pve30-cli           6.18G  off            metadata        off       posix     off      lz4             off          noauto    /                        no
rpool/ROOT/pve30-gnm           9.28G  off            metadata        off       posix     off      lz4             off          noauto    /                        no
rpool/USERDATA                 13.8G  off            metadata        off       posix     on       lz4             off          off       none                     no
rpool/USERDATA/garuda          11.3G  off            metadata        off       posix     off      lz4             off          noauto    /home                    no
rpool/USERDATA/kinetic          791M  off            metadata        off       posix     on       lz4             off          noauto    /home                    no
rpool/USERDATA/pve30-cli       3.43M  off            metadata        off       posix     on       lz4             off          noauto    /home                    no
rpool/USERDATA/pve30-gnm       1.76G  off            metadata        off       posix     on       lz4             off          noauto    /home                    no
rpool/data                     98.9G  off            metadata        off       posix     off      lz4             off          on        /data                    yes
rpool/data/media               4.01G  off            metadata        off       posix     off      lz4             off          on        /data/media              yes
rpool/data/temp                 192K  off            metadata        off       posix     off      lz4             off          on        /data/temp               yes
rpool/data/vm-300-disk-0       29.9G  off            metadata        -         -         -        lz4             off          -         -                        -
rpool/data/vm-300-disk-1        312K  off            metadata        -         -         -        lz4             off          -         -                        -
rpool/data/vm-300-disk-2        128K  off            metadata        -         -         -        lz4             off          -         -                        -
rpool/data/zvol                65.0G  off            metadata        off       posix     off      lz4             off          on        /data/zvol               yes
rpool/data/zvol/vm-101-disk-0  3.15M  off            metadata        -         -         -        lz4             off          -         -                        -
rpool/data/zvol/vm-101-disk-1  65.0G  off            metadata        -         -         -        lz4             off          -         -                        -
rpool/data/zvol/vm-101-disk-2  6.12M  off            metadata        -         -         -        lz4             off          -         -                        -
rpool/pve                      20.2G  off            metadata        off       posix     off      lz4             off          off       /                        no
rpool/pve/var-lib-pve-cluster   912K  off            metadata        off       posix     on       lz4             off          noauto    /var/lib/pve-cluster     no
rpool/pve/var-lib-vz           16.4G  off            metadata        off       posix     on       lz4             off          on        /var/lib/vz              yes
rpool/pve/zfsys                3.73G  off            metadata        off       posix     off      lz4             off          on        /zfsys                   yes
vault                           759G  off            all             off       off       off      lz4             off          off       /vault                   no
vault/devops                    306G  off            all             off       off       off      lz4             off          off       /                        no
vault/devops/PVE               84.1G  off            all             off       off       off      lz4             off          off       /var/lib                 no
vault/devops/PVE/vz            84.1G  off            all             off       off       off      lz4             off          on        /var/lib/vvz             yes
vault/devops/vm                 222G  off            all             off       off       off      lz4             off          off       /vm                      no
vault/devops/vm/vm-502-disk-0    88K  off            all             -         -         -        lz4             off          -         -                        -
vault/devops/vm/vm-502-disk-1  12.7G  off            all             -         -         -        lz4             off          -         -                        -
vault/devops/vm/vm-502-disk-2    64K  off            all             -         -         -        lz4             off          -         -                        -
vault/devops/vm/vm-510-disk-0  3.08M  off            all             -         -         -        lz4             off          -         -                        -
vault/devops/vm/vm-510-disk-1   209G  off            all             -         -         -        lz4             off          -         -                        -
vault/devops/vm/vm-510-disk-2  6.07M  off            all             -         -         -        lz4             off          -         -                        -
vault/media                     453G  off            all             off       off       off      lz4             off          off       /vault/media             no
vault/media/APP                 192G  off            all             off       off       off      lz4             off          off       /share                   no
vault/media/APP/downloads      15.8G  off            all             off       off       off      lz4             off          on        /share/downloads         yes
vault/media/APP/library_pc      176G  off            all             off       off       off      lz4             off          on        /share/library_pc        yes
vault/media/DOCS               26.6G  off            all             off       off       off      lz4             off          off       /share                   no
vault/media/DOCS/personal      26.6G  off            all             off       off       off      lz4             off          noauto    /share/personal          no
vault/media/DOCS/reference       96K  off            all             off       off       off      lz4             off          noauto    /share/reference         no
vault/media/LINUX              1.29G  off            all             off       off       off      lz4             off          off       /share                   no
vault/media/LINUX/lxsteam      1.29G  off            all             off       off       on       lz4             off          on        /home/mike/.local/Steam  yes
vault/media/MUSIC               167G  off            all             off       off       off      lz4             off          off       /share                   no
vault/media/MUSIC/dj_bylabel    167G  off            all             off       off       off      lz4             off          on        /share/dj_bylabel        yes
vault/media/PHOTO               288K  off            all             off       off       off      lz4             off          off       /share                   no
vault/media/PHOTO/albums         96K  off            all             off       off       off      lz4             off          noauto    /share/albums            no
vault/media/PHOTO/public         96K  off            all             off       off       off      lz4             off          noauto    /share/public            no
vault/media/video              66.2G  off            all             off       off       off      lz4             off          off       /share                   no
vault/media/video/library      66.2G  off            all             off       off       off      lz4             off          on        /share/library           yes

información relacionada