TGViewer
Серверная Админа | Компьютерные сети Серверная Админа | Компьютерные сети @school_network · 26.6K subscribers
Post #2843 3.19K
Перенос работающего сервера без остановки сервисов

👋 Привет, сетевой друг!

В прошлый раз разбирали базовый перенос через снапшоты. Сегодня расскажу про инкрементальную передачу, проверку целостности и более надёжный процесс.

🟣Что изменилось в подходе: главная проблема старого метода - снапшот делается один раз, потом долго передаётся, а за это время данные на источнике меняются. И решение тут - это инкрементальная передача через несколько снапшотов, финальный diff минимален и сервис останавливается на секунды а не часы.

🟣Создаём первый базовый снапшот и начинаем передачу в фоне:

# 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 - сервер продолжает работать, данные меняются.

🟣Инкрементальный diff: передаём только изменения

# 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
  • 👍 15
  • ❤ 1
  • 🔥 1
More from @school_network
  1. Sep 29, 2026👋 Привет, сетевой друг! Сегодня про webcensus - инструмент для довольно специфичной задач…
  2. Sep 28, 2026Почему SAML снова и снова ломается на одном и том же месте? SAML больше 20 лет отвечает за…
  3. Sep 26, 2026👨‍💻Серверная Админа | #мем
  4. Sep 25, 2026👋 Привет, сетевой друг! Сегодня про Ethernet, который мы привыкли воспринимать как обычны…
  5. Sep 24, 2026👋 Привет, сетевой друг! Собрал три способа прокачать защиту MikroTik - особенно если роут…
  6. Sep 24, 2026Когда в ИТ три человека, появляется четвёртая работа — выяснять, кто чем занимается. — Кто…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →