Перенос системы на другой диск (rsync).
Перенос системы на другой диск (rsync).
Оглавление
Темы
Введение
Постановка задачи
Оборудование
Подготовка к миграции
Создаём структуру разделов
Создаём структуру LVM
Проверка результатов различными средствами
Запуск системы с носителя
RSYNC
Демонтаж структуры LVM
Дополнительные материалы
Монтирование файловых систем
XFS: Файловая система
Перенос системы на другой диск (xfs_copy)
Convert MBR to GPT
Fedora на ZFS
Исправляем нумерацию разделов на диске
Гибернация — Режим сна
LUKS: Шифруем данные
Копирование данных производим с помощью rsync, в следствии чего можно отвязаться от жёсткого клонирования структуры разделов.
При сокращении объёма раздела важно на стадии планирования просчитать тот объём на который можно сократить тот или иной раздел. Исходные данные, при копировании, должны поместиться в целевой раздел. При данной процедуре миграции разделы могут быть увеличены
Темы
Введение
Постановка задачи
Оборудование
Подготовка к миграции
Создаём структуру разделов
Создаём структуру LVM
Проверка результатов различными средствами
Запуск системы с носителя
RSYNC
Демонтаж структуры LVM
Дополнительные материалы
Монтирование файловых систем
XFS: Файловая система
Перенос системы на другой диск (xfs_copy)
Convert MBR to GPT
Fedora на ZFS
Исправляем нумерацию разделов на диске
Гибернация — Режим сна
LUKS: Шифруем данные
Копирование данных производим с помощью rsync, в следствии чего можно отвязаться от жёсткого клонирования структуры разделов.
При сокращении объёма раздела важно на стадии планирования просчитать тот объём на который можно сократить тот или иной раздел. Исходные данные, при копировании, должны поместиться в целевой раздел. При данной процедуре миграции разделы могут быть увеличены
📝
Начинаем с создания текстового файла с параметрами разделов (для подсказок при повторении структуры)
Сбрасываем в файл информацию в двух вариантах. Вариант в 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Код: Выделить всё
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Удаление раздела (если нужно) с номером 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'Код: Выделить всё
partprobe /dev/sdbКод: Выделить всё
hdparm -z /dev/sdb
blockdev --rereadpt /dev/sdb
echo 1 > /sys/block/sdb/device/rescanКод: Выделить всё
mkfs.fat -F16 -n EFI /dev/sdb1
mkfs.xfs -f -LBOOT /dev/sdb2Создаём Physical Volumes из раздела /dev/sdb3
Код: Выделить всё
pvcreate /dev/sdb3Код: Выделить всё
pvdisplay
или
pvsКод: Выделить всё
vgcreate meg /dev/sdb3Код: Выделить всё
vgdisplay meg
vgs megКод: Выделить всё
lvcreate -L 4G -n root 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 Код: Выделить всё
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Воспользуемся утилитой 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
...Собираем структуру разделов со старого диска в каталог /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Код: Выделить всё
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Код: Выделить всё
source /etc/profile && source ~/.bashrcКод: Выделить всё
export PS1="(chroot) $PS1"
Последний раз редактировалось root 26 авг 2026 17:37, всего редактировалось 1 раз.
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 Показать общий прогрессЕсли вдруг понадобится разобрать созданный LVM, нужно действовать в обратной последовательности процедуре создания
Выводим информацию какая группа томов занимает раздел /dev/sdb3
Код: Выделить всё
pvs /dev/sdb3
PV VG Fmt Attr PSize PFree
/dev/sdb3 meg lvm2 a-- <7,25g 0 Код: Выделить всё
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Код: Выделить всё
vgremove megКод: Выделить всё
pvremove /dev/sdb3