Как перенести Ubuntu 24.04 на новый сервер без переустановки

Как перенести Ubuntu 24.04 на новый сервер без переустановки

Смена сервера больше не означает долгую переустановку системы. Рассказываем, как перенести Ubuntu 24.04 на новое оборудование с сохранением всех настроек. В статье — три метода: Rsync, DD и LVM-миграция.

Введение

Перенос Ubuntu 24.04 на новый сервер без переустановки сохраняет настройки, пакеты и пользовательские данные, исключая длительную повторную настройку. Рассказываем о трёх методах — с помощью Rsync, DD и LVM, — которые позволят выполнить перенос с нулевым простоем при апгрейде железа, миграции в облако или аварийном восстановлении.

Аренда VPS/VDS — от ₽219/месяц

Почему выбирают VPS от AdminVPS:

✓ Дешевле физического сервера

✓ Более гибкий и мощный, чем обычный хостинг

✓ Бесплатная защита от DDoS и техподдержка 24/7

✓ Масштабируется под любые задачи

Виртуальный сервер VPS/VDS — ваш личный сервер для сайтов, магазинов, ботов и других проектов.

Подготовка к миграции

Резервное копирование. Сначала создайте полную резервную копию работающей системы. Для систем с LVM/BTRFS используйте мгновенные снапшоты без остановки сервисов.

LVM:

sudo lvcreate -L 10G -s -n backup_snapshot /dev/ubuntu-vg/root 

BTRFS:

sudo btrfs subvolume snapshot / /@backup_snapshot  

На других файловых системах (EXT4/XFS) создайте сжатый бекап через tar, исключая временные файлы:

sudo tar -cvpzf /backup.tar.gz --exclude=/backup.tar.gz \ 
    --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/mnt \ 
    --exclude=/media --exclude=/run --exclude=/tmp --one-file-system /  

Параметр --one-file-system гарантирует, что смонтированные разделы не войдут в архив, а --exclude пропускает временные каталоги. Сохраните бекап на внешний носитель.

Анализ системы. Зафиксируйте текущее состояние сервера для последующего восстановления:

  • сохраните список пакетов:
dpkg --get-selections > /root/pkg-list.txt
  • задокументируйте сетевые настройки:
ip -brief a > /root/network-info.txt
  • запишите дисковую структуру:
lsblk -f > /root/disk-layout.txt 
blkid >> /root/disk-layout.txt 
cat /etc/fstab >> /root/layout.txt  
  • экспортируйте список сервисов:
systemctl list-unit-files --type=service > /root/services.txt

Перенесите эти файлы на внешний носитель командой:

scp /root/*-info.txt user@backup-server:/backups/  

Подготовка нового сервера. Новый сервер должен иметь идентичную разметку дисков:

  • повторите структуру разделов старого сервера;
  • сравните вывод lsblk на обоих серверах — структура должна совпадать.

Временно отключите автообновления на новом сервере:

sudo systemctl disable unattended-upgrades

Разрешите на нём root-логин по SSH:

sudo sed -i 's/#PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config 
sudo systemctl restart sshd  

При использовании аппаратного RAID или ZFS на старом сервере, воспроизведите их конфигурацию до установки. Несовпадение контроллеров сделает загрузку невозможной.

Перед миграцией убедитесь, что места достаточно (должно быть не меньше, чем на исходном сервере):

df -h /

Метод 1. Перенос через Rsync

Перенос через Rsync — универсальный способ, работающий с дисками разных типов и размеров. Его главное преимущество — возможность выборочного копирования с сохранением прав доступа, владельцев файлов и расширенных атрибутов. Начните с загрузки обоих серверов (исходного и целевого) с LiveUSB Ubuntu 24.04, выбрав «Try Ubuntu without installing» в меню загрузки. Это предотвращает блокировку файлов работающими процессами. Создайте загрузочную флешку командой:

sudo dd if=ubuntu-24.04-live-server-amd64.iso of=/dev/sdc bs=4M status=progress  

После загрузки определите и смонтируйте корневые разделы. На исходном сервере выполните:

sudo mkdir /mnt/old-root 
sudo mount /dev/sda2 /mnt/old-root  # Обычно это корневой раздел  

На целевом сервере:

sudo mkdir /mnt/new-root 
sudo mount /dev/nvme0n1p2 /mnt/new-root  # Аналогичный раздел  

Убедитесь в успешности монтирования: ls /mnt/old-root/etc должен показывать системные файлы, а /mnt/new-root — быть пустым для чистой установки.

Для копирования данных используйте команду rsync с комплексом параметров:

sudo rsync -aAXv --delete \ 
    --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} \ 
    /mnt/old-root/ /mnt/new-root/  

Здесь:

  • -aAXv сохраняет права, владельцев, ACL и SELinux-атрибуты с выводом прогресса;
  • --delete удаляет на цели отсутствующие на источнике файлы;
  • --exclude пропускает указанные каталоги.

После копирования выполните постобработку. Сначала обновите UUID разделов в /mnt/new-root/etc/fstab, используя значения с нового сервера (узнайте их через blkid). Затем переустановите загрузчик, создав chroot-окружение:

sudo mount --bind /dev /mnt/new-root/dev 
sudo mount --bind /proc /mnt/new-root/proc 
sudo mount --bind /sys /mnt/new-root/sys 
sudo chroot /mnt/new-root  

Внутри chroot выполните:

grub-install /dev/nvme0n1  # Ваш целевой диск 
update-grub 
exit  

Наконец, сгенерируйте новый идентификатор устройства (machine-id) для предотвращения конфликтов:

sudo rm /mnt/new-root/etc/machine-id 
sudo systemd-machine-id-setup --root=/mnt/new-root  

При возникновении ошибки «rsync: failed to set permissions» временно добавьте --no-perms или проверьте поддержку файловой системы на целевом диске.

Если система не загружается после переноса, восстановите загрузчик через boot-repair. Установите его через PPA:

sudo add-apt-repository ppa:yannubuntu/boot-repair

Затем запустите восстановление:

sudo boot-repair

После переноса загрузите новый сервер в обычном режиме и выполните:

df -h              # Проверка смонтированных разделов 
systemctl status   # Работоспособность сервисов 
ping google.com    # Доступность сети  

Метод 2. Побитовое копирование через DD

Побитовое копирование с помощью dd создаёт точную копию исходного диска на уровне секторов. Этот метод подходит только при соблюдении строгих условий: физические диски должны быть идентичны по размеру (источник не может быть больше цели), а таблица разделов не должна изменяться. В отличие от Rsync, DD копирует всё содержимое диска — включая загрузчики, разделы подкачки и даже неиспользуемое пространство.

Сначала подключите целевой диск к исходному серверу через SATA, USB или в слот горячей замены. Определите имена устройств командой:

sudo lsblk -d -o NAME,SIZE

Например, /dev/sda (источник) и /dev/sdb (цель). Затем выполните копирование:

sudo dd if=/dev/sda of=/dev/sdb bs=64K status=progress conv=noerror,sync  

Размер блока bs=64K оптимален для современных дисков, status=progress выводит прогресс операции, а conv=noerror,sync гарантирует продолжение работы при ошибках чтения (заменяя повреждённые секторы нулями).

По завершении сбросьте кеш диска:

sudo sync  

И проверьте целостность файловой системы (заменив sdb2 на ваш корневой раздел):

sudo fsck -f /dev/sdb2

Для NVMe-дисков дополнительно проверьте SMART-статус:
sudo nvme smart-log /dev/nvme0n1

Чтобы наблюдать за прогрессом во время работы dd, откройте второй терминал и выполните:

sudo kill -USR1 $(pgrep ^dd)

После переноса обновите драйверы для нового оборудования (если оно изменилось):

sudo chroot /mnt/new-root 
dpkg-reconfigure linux-image-$(uname -r) 
update-initramfs -u  

Затем переустановите загрузчик:

grub-install /dev/sdb  # Для целевого диска 
update-grub  

Метод 3. Миграция LVM-томов

Миграция через LVM (Logical Volume Manager) — оптимальный выбор для систем, где обе платформы (исходная и целевая) используют логические тома. Этот метод позволяет переносить данные без копирования пустого пространства и изменять размеры разделов во время операции, что полезно при апгрейде хранилища.

Например, если вы заменяете старый HDD-массив на быстрые SSD, сначала подключите новые диски к работающему серверу, затем создайте Physical Volume командой:

sudo pvcreate /dev/nvme0n1

Теперь экспортируйте текущую конфигурацию LVM в файл:

sudo vgcfgbackup -f /root/vg_backup.txt vg0  # vg0 — имя Volume Group  

Эта команда сохраняет структуру томов, включая политики распределения пространства и атрибуты логических томов.

Восстановите конфигурацию на новом диске:

sudo vgcfgrestore -f /root/vg_backup.txt vg0

Затем перенесите данные командой:

sudo pvmove -n lv_root /dev/sda2 /dev/nvme0n1  # Перемещаем lv_root на NVMe  

Ключевое преимущество — возможность увеличения тома во время переноса. Например, чтобы расширить корневой раздел до 50 ГБ:

sudo lvextend -L 50G /dev/vg0/lv_root 
sudo resize2fs /dev/vg0/lv_root  # Для файловых систем EXT4  

После переноса обновите UUID томов в системных файлах. Сначала узнайте новый UUID:

sudo blkid -s UUID -o value /dev/vg0/lv_root  

Затем замените старые значения в fstab и конфигах GRUB:

sudo sed -i "s/old-uuid/$(sudo blkid -s UUID -o value /dev/vg0/lv_root)/g" /etc/fstab 
sudo sed -i "s/old-uuid/$(sudo blkid -s UUID -o value /dev/vg0/lv_root)/g" /boot/grub/grub.cfg  

Не забудьте обновить загрузчик:

sudo grub-install /dev/nvme0n1  # Укажите новый диск 
sudo update-grub  

Важно

Метод требует свободного места в Volume Group. Для переноса тома размер свободного пространства VG должен быть не меньше размера переносимого тома. 

Настройки после миграции

Первым делом после переноса системы обновите сетевую конфигурацию, так как MAC-адреса сетевых интерфейсов на новом сервере отличаются. Узнайте новые MAC-адреса через ip link show, затем обновите соответствующие поля в конфиге Netplan:

sudo nano /etc/netplan/00-installer-config.yaml  

Примените изменения:

sudo netplan apply

Для корректной работы оборудования переустановите аппаратные драйверы, что особенно важно при смене типа процессора (Intel → AMD) или добавлении специализированных контроллеров:

sudo dkms autoinstall 
sudo update-initramfs -u -k all  

Эти команды пересобирают модули ядра для текущего оборудования и обновляют образ initramfs.

Проверьте работоспособность перед перезагрузкой. Протестируйте систему в изолированном chroot-окружении:

sudo mount --bind /dev /mnt/new-root/dev 
sudo mount --bind /proc /mnt/new-root/proc 
sudo mount --bind /sys /mnt/new-root/sys 
sudo chroot /mnt/new-root  

Внутри chroot проверьте:

  • неудачно запущенные сервисы:
systemctl --failed
  • критические ошибки загрузки (фильтр по ошибкам уровня ERROR и выше):
journalctl -b -p3
  • сетевые интерфейсы:
ip a
  • монтирование разделов:
mount | grep /

Дополнительно удалите старые SSH-ключи, чтобы избежать предупреждений безопасности:

sudo rm /etc/ssh/ssh_host_* 
sudo dpkg-reconfigure openssh-server  

Перезапустите критичные сервисы (Nginx, PostgreSQL и т.д.), предварительно проверив их конфиги.

После перезагрузки выполните следующее.

  • Проверку оборудования:  
lspci -k | grep -A 2 "Ethernet\|VGA"  # Драйверы сетевой карты и GPU  
  • тест дисковых операций:  
sudo dd if=/dev/zero of=./test.bin bs=1G count=1 oflag=direct status=progress  
  • мониторинг:  
htop    # Нагрузка CPU/RAM 
iotop   # Активность диска  

Заключение

Миграция Ubuntu 24.04 на новый сервер без переустановки — задача, требующая внимания к деталям, но вполне выполнимая даже без автоматизированных инструментов. Используйте Rsync, DD или LVM в зависимости от типа хранилища и требований к точности копирования. Каждый метод имеет свои преимущества: Rsync — гибкий и универсальный, DD — побитовая точность, LVM — удобство управления томами. Важно тщательно подготовиться, создать бекап, сверить разметку дисков и протестировать систему перед запуском в продакшене. Такой подход позволяет сохранить не только работоспособность сервиса, но и время на восстановление всех настроек и окружения.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Нужен VPS сервер?

Арендуйте мощный VPS сервер для ваших проектов! Быстрая настройка, высокая производительность и надежная поддержка 24/7. Начните прямо сейчас!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях