Como enviar um instantâneo do sistema de arquivos ZFS de pai único e o mesmo instantâneo de todos os seus descendentes para um novo pool?

Como enviar um instantâneo do sistema de arquivos ZFS de pai único e o mesmo instantâneo de todos os seus descendentes para um novo pool?

Se zfs snapshot -r tank@20220129, todos os subsistemas de arquivos também obterão esse instantâneo.

Como enviar aquele único instantâneo do tanque com todos os sub-fs para um novo pool (sem base histórica de instantâneos)?

Embora zfs send -R tank@20220129 envie todos os sub-fs, ele também enviará todos os instantâneos.

(Posteriormente, poderíamos excluir todos esses instantâneos, mas isso poderia representar uma enorme quantidade de envio extra apenas para excluir após a conclusão.)

Parece não haver funcionalidade zfs send -r.

Responder1

Edição final: você está correto, você não pode recursão não tratada bem (nota para clones!! Cada um na árvore precisa ser feito separadamente) Eu entendo a afirmação de que a herança da função está sendo replicada em vez do valor atual da herança, mas tenho dificuldade com casos de uso em que este é o valor mais desejado. Estarei fazendo uma solicitação de recurso. Quando qualquer propriedade modificável muda do padrão, todos os filhos mudam automaticamente para herdados. Eu tenho uma criptografia e uma chave gen ds com muitos padrões não padronizados para os filhos ativos. Pais e filhos devem ter uma propriedade para poder optar por não receber ou transmitir herança para todas ou algumas propriedades. Então zfs send -R -p agiria da maneira esperada. Seu caso precisa de um recurso upstream, muitas vezes apenas snaps únicos desejam envio recursivo e ser o mesmo para criar clones recursivamente a partir de um snap criado recursivamente é uma opção esperada que fiquei surpreso ao descobrir que não estava presente.

Tenho certeza que você poderia fazer um clone do zfs ou algo assim abaixo, não meu original "Se os instantâneos aparecerem, apenas o zfs destruirá todos eles; então faça o seu zfs enviar | zfs recv do clone sem nenhum instantâneo." O que foi deselegante, não pesquisado e preguiçoso e você não precisa clonar de qualquer maneira, apenas um loop for assim

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

Mas um clone também funcionaria, com um novo zfs snap -r e zfs send -R como apenas um instantâneo no novo clone. Mas você não pode clonar recursivamente, então precisaria de um loop for semelhante de qualquer maneira. Ou sincronize-o novamente com um pool de recebimento limpo e agradável e conjuntos de dados montados com as propriedades desejadas, se você não se importar em perder todo o histórico do zfs.

Então, estou expandindo minha solução porque não é tão fácil ou seguro e farei isso em um sistema ativo, mas não crítico em breve. No meu caso, também dividirei meus vdevs espelhados e farei algumas alterações nas propriedades do pool e do zfs no zfs recv.

As operações recursivas Zpool e zfs poderiam ajudar a melhorar sempre foi um problema. E não há práticas recomendadas claras com vários zsys bootfs, zfs-mount-generator, zfs-zed.service (que não é reiniciado após um ciclo de suspensão do systemctl!), montagens de conjuntos de dados persistentes que não refletem o estado de zfs-list.cache/pool na inicialização! A Cananoical parece ter concluído seu esforço para o zfs na usabilidade do root e do zsys. Não acabou só porque é uma opção de instalação do 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 como instalar void linux e zfsbootmenu neste hackery e todas as montagens automáticas zsys e systemd zfs após uma nova recursão de envio/recebimento zfs. Ter uma herança consistente e -o desejado no zfs é tão 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

informação relacionada