Перенос системы на другой диск (rsync).

Установка, настройка, эксплуатация.
Ответить
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Перенос системы на другой диск (rsync).

Сообщение root »

Оглавление
Темы
Введение
Постановка задачи
Оборудование
Подготовка к миграции
Создаём структуру разделов
Создаём структуру LVM
Проверка результатов различными средствами
Запуск системы с носителя
RSYNC
Демонтаж структуры LVM
Дополнительные материалы
Монтирование файловых систем
XFS: Файловая система
Перенос системы на другой диск (xfs_copy)
Convert MBR to GPT
Fedora на ZFS
Исправляем нумерацию разделов на диске
Гибернация — Режим сна
LUKS: Шифруем данные
Копирование данных производим с помощью rsync, в следствии чего можно отвязаться от жёсткого клонирования структуры разделов.
При сокращении объёма раздела важно на стадии планирования просчитать тот объём на который можно сократить тот или иной раздел. Исходные данные, при копировании, должны поместиться в целевой раздел. При данной процедуре миграции разделы могут быть увеличены
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Перенести систему с одного диска на другой с возможностью смены файловой системы, а так же изменением объёмов конечных
разделов.
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Код: Выделить всё

Материнская плата с UEFI
sda - Исходный диск
sdb - Целевой диск
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

📝

Сообщение root »


Начинаем с создания текстового файла с параметрами разделов (для подсказок при повторении структуры)
Сбрасываем в файл информацию в двух вариантах. Вариант в MB для облегчения понимания объёмов
Разметка в секторах подходит для максимально точного повторения структуры разделов

Код: Выделить всё

parted /dev/sda unit s print > part-map.txt
Номер  Начало    Конец      Размер     Файловая система  Имя                   Флаги
 1     2048s     411647s    409600s    fat16             EFI System Partition  загрузочный, esp
 2     411648s   1435647s   1024000s   xfs
 3     1435648s  67106815s  65671168s                                          lvm
Разметка в MB

Код: Выделить всё

parted /dev/sda unit MB print >> part-map.txt
Номер  Начало  Конец   Размер  Файловая система  Имя                   Флаги
 1     1049kB  211MB   210MB   fat16             EFI System Partition  загрузочный, esp
 2     211MB   735MB   524MB   xfs
 3     735MB   34,4GB  33,6GB                                          lvm
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Удаление раздела (если нужно) с номером N

Код: Выделить всё

parted /dev/sdb rm N

Код: Выделить всё

parted -a optimal -s /dev/sdb 'mklabel gpt' 'mkpart primary fat16 1MiB 257MiB' \
	'name 1 "EFI System Partition"' 'set 1 boot on' \
	'mkpart primary xfs 257MiB 769MiB' 'name 2 "Boot Partition"' \
	'mkpart primary xfs 769MiB 100%' 'name 3 "Root Home"' 'set 3 lvm on'
На всякий случай заставляем ядро перечитать таблицу разделов на /dev/sdb

Код: Выделить всё

partprobe /dev/sdb
Другие способы:

Код: Выделить всё

hdparm -z /dev/sdb
blockdev --rereadpt /dev/sdb
echo 1 > /sys/block/sdb/device/rescan
Создаём FS на разделах EFI и BOOT

Код: Выделить всё

mkfs.fat -F16 -n EFI /dev/sdb1
mkfs.xfs -f -LBOOT /dev/sdb2
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Создаём Physical Volumes из раздела /dev/sdb3

Код: Выделить всё

pvcreate /dev/sdb3
вывод информации о physical volumes

Код: Выделить всё

pvdisplay
или
pvs
Создаём группу томов meg на физическом томе, который создавался из раздела /dev/sdb3

Код: Выделить всё

vgcreate meg /dev/sdb3
вывод информации о группе томов

Код: Выделить всё

vgdisplay meg
vgs meg
Создаём логический том ROOT объёмом 4GB группе томов meg

Код: Выделить всё

lvcreate -L 4G -n root meg
Создаём логический том HOME объёмом с незанятое место группе томов meg

Код: Выделить всё

lvcreate -l 100%FREE -n home meg

Создаём файловую систему на логических томах ROOT и HOME

Код: Выделить всё

mkfs.xfs -L "ROOT-MEG" /dev/mapper/meg-root
mkfs.xfs -L "HOME-MEG" /dev/mapper/meg-home 
Собираем разделы в единую файловую систему. Устройства указываются через mapper (так наглядней) группу_томов-логический_том

Код: Выделить всё

mount /dev/mapper/meg-root /mnt
mkdir /mnt/{boot,home}
mount /dev/mapper/meg-home /mnt/home
mount /dev/sdb2 /mnt/boot/
mkdir /mnt/boot/efi
mount /dev/sdb1 /mnt/boot/efi
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Воспользуемся утилитой tree для визуализации структуры

Код: Выделить всё

tree /mnt
/mnt				/dev/mapper/meg-root	(xfs)
├── boot			/dev/sdb2 				(xfs)
│   └── efi		/dev/sdb1 				(FAT)
└── home			/dev/mapper/meg-home  (xfs)

Код: Выделить всё

mount |grep mnt
/dev/mapper/meg-root on /mnt type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/mapper/meg-home on /mnt/home type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/sdb2 on /mnt/boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/sdb1 on /mnt/boot/efi type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)

Код: Выделить всё

lsblk
...
sdb                8:16   0    8G  0 disk 
├─sdb1             8:17   0  256M  0 part /mnt/boot/efi
├─sdb2             8:18   0  512M  0 part /mnt/boot
└─sdb3             8:19   0  7,3G  0 part 
  ├─meg-root     253:1    0    4G  0 lvm  /mnt
  └─meg-home     253:2    0  3,3G  0 lvm  /mnt/home
...
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Собираем структуру разделов со старого диска в каталог /media в режиме только для чтения (ro)

Код: Выделить всё

mount -o ro /dev/mapper/rfremix-root /media
#mount -o ro /dev/mapper/rfremix-home /media/home
mount -o ro /dev/sda2 /media/boot/
mount -o ro /dev/sda1 /media/boot/efi
Собираем структуру разделов c нового диска в каталог /mnt

Код: Выделить всё

mount /dev/mapper/meg-root /mnt
mount /dev/mapper/meg-home /mnt/home
mount /dev/sdb2 /mnt/boot/
mount /dev/sdb1 /mnt/boot/efi
Меняем корень системы для смонтированных разделов нового диска
  • Монтируем виртуальную файловую систему proc (необходима для работы ps, lsof и генерации initramfs)
  • Рекурсивно пробрасываем интерфейс ядра к устройствам (sysfs) и изолируем изменения в chroot
  • Рекурсивно пробрасываем файлы dev (необходимо для обнаружения ZFS-пулов и дисков через dracut)
  • Пробрасываем /run (необходимо для работы systemd, временных файлов блокировок, сокетов, LVM/LUKS и импорта пулов ZFS)
  • Обязательно монтируем переменные EFI (NVRAM). Без них утилиты grub2-mkconfig, efibootmgr и zfsbootmenu не смогут управлять порядком загрузки и записями в BIOS/материнской плате!
  • Монтируем изолированный tmpfs для временных файлов внутри chroot
  • Входим в изолированное окружение нашей системы Fedora

Код: Выделить всё

mount -t proc /proc /mnt/proc
mount --rbind /sys /mnt/sys
mount --make-rslave /mnt/sys
mount --rbind /dev /mnt/dev
mount --make-rslave /mnt/dev
mount --rbind /run /mnt/run
mount --make-rslave /mnt/run
mount --rbind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars
mount --make-rslave /mnt/sys/firmware/efi/efivars
mount -t tmpfs tmpfs /mnt/sys/tmp
chroot /mnt /bin/bash
После chroot может потребоваться загрузить локальную конфигурацию bash:

Код: Выделить всё

source /etc/profile &&  source ~/.bashrc
Совет: При желании создайте уникальное приглашение, чтобы иметь возможность различать вашу среду chroot:

Код: Выделить всё

export PS1="(chroot) $PS1"
Последний раз редактировалось root 26 авг 2026 17:37, всего редактировалось 1 раз.
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


rsync предоставляет способ сделать копию всех данных в файловой системе, сохраняя как можно больше информации, включая метаданные файловой системы. Это процедура клонирования данных на уровне файловой системы, где исходные и целевые файловые системы не обязательно должны быть одного типа. Он может использоваться для резервного копирования, миграции файловой системы или восстановления данных.

Режим архивирования rsync близок к пригодности для задания, но он не создает резервные копии метаданных специальной файловой системы, таких как списки управления доступом, расширенные атрибуты или разреженные свойства файла. Для успешного клонирования на уровне файловой системы необходимо предоставить дополнительные параметры:

Код: Выделить всё

rsync --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/var/log/*"} \
 -axHAWXS --numeric-ids --info=progress2 /media /mnt/ 
И их значение (от страницы руководства):

Код: Выделить всё

-q, --quiet           подавлять сообщения об ошибках
-a, --archive         режим архивирования; равняется -rlptgoD (no -H,-A,-X)
-x, --one-file-system не выходить за пределы файловой системы 
-H, --hard-links      сохранять hard links
-A, --acls            сохранять ACLs (подразумевает -p)
-X, --xattrs          сохранять расширенные атрибуты
-W, --whole-file      копировать весь файл без rsync-алгоритма 
-S, --sparse          эффективно обрабатывать разреженные файлы
--numeric-ids         не преобразовывать значения uid/gid по именам пользователя/группы
--info=progress2      Показать общий прогресс
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Если вдруг понадобится разобрать созданный LVM, нужно действовать в обратной последовательности процедуре создания
Выводим информацию какая группа томов занимает раздел /dev/sdb3

Код: Выделить всё

pvs /dev/sdb3 
  PV         VG  Fmt  Attr PSize  PFree
  /dev/sdb3  meg lvm2 a--  <7,25g    0 
теперь смотрим статистику по группе meg. и видим что она принадлежит одному физическому тому и содержит два логических тома

Код: Выделить всё

vgs meg
  VG  #PV #LV #SN Attr   VSize  VFree
  meg   1   2   0 wz--n- <7,25g    0 

Код: Выделить всё

lvs meg
  LV   VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home meg -wi-ao---- <3,25g                                                    
  root meg -wi-ao----  4,00g 
Сначала вынесем логические тома. Логический том должен быть размонтирован перед удалением:

Код: Выделить всё

umount /dev/meg/HOME
umount /dev/meg/ROOT
lvremove /dev/meg/HOME
lvremove /dev/meg/ROOT
Затем можно приступать к группе томов
Убедитесь, что группа томов не содержит логических томов. Деактивируем группу томов:

Код: Выделить всё

vgchange -a n meg
Удаляем группу томов meg

Код: Выделить всё

vgremove meg
и последним сноситься физический том

Код: Выделить всё

pvremove /dev/sdb3
Ответить