Привет, сетевой друг!В прошлый раз разбирали базовый перенос через снапшоты. Сегодня расскажу про инкрементальную передачу, проверку целостности и более надёжный процесс.# ZFS — базовый снапшот
zfs snapshot zpool/rootfs@base
zfs send zpool/rootfs@base | ssh root@new-server zfs receive -F zpool/rootfs
# Btrfs — базовый снапшот
btrfs subvolume snapshot -r / /mnt/snapshots/base
btrfs send /mnt/snapshots/base | ssh root@new-server btrfs receive /mnt/
Пока передаётся base - сервер продолжает работать, данные меняются.
# ZFS — создаём второй снапшот и шлём только дельту
zfs snapshot zpool/rootfs@incremental
zfs send -i zpool/rootfs@base zpool/rootfs@incremental | \
ssh root@new-server zfs receive -F zpool/rootfs
# Btrfs — аналогично
btrfs subvolume snapshot -r / /mnt/snapshots/incremental
btrfs send -p /mnt/snapshots/base /mnt/snapshots/incremental | \
ssh root@new-server btrfs receive /mnt/
Флаг -i (ZFS) и -p (Btrfs) означают инкрементальную передачу - только дельта между снапшотами, не весь объём.
# Останавливаем сервисы
systemctl stop nginx postgresql
# Финальный инкрементальный снапшот
zfs snapshot zpool/rootfs@final
zfs send -i zpool/rootfs@incremental zpool/rootfs@final | \
ssh root@new-server zfs receive -F zpool/rootfs
# Поднимаем сервисы уже на новом сервере
Финальный diff минимален, только изменения за последние минуты пока останавливались сервисы.
# ZFS встроенная проверка
ssh root@new-server zfs get checksum zpool/rootfs
ssh root@new-server zpool scrub zpool
# Btrfs
ssh root@new-server btrfs scrub start /mnt
ssh root@new-server btrfs scrub status /mnt
Без проверки можно перенести данные с тихим битовым повреждением и узнать об этом только при чтении.
arch-chroot /mnt
# Обновляем fstab с новыми UUID
blkid >> /etc/fstab
# Правим вручную — убираем старые UUID
# Обновляем initramfs
update-initramfs -u -k all
# Устанавливаем загрузчик
grub-install /dev/sdX
update-grub
# Для систем с systemd-boot
bootctl install
# ZFS
zfs destroy zpool/rootfs@base
zfs destroy zpool/rootfs@incremental
zfs destroy zpool/rootfs@final
# Btrfs
btrfs subvolume delete /mnt/snapshots/base
btrfs subvolume delete /mnt/snapshots/incremental
Серверная Админа | Zeroday | #linux


