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

Установка, настройка, эксплуатация.

Модератор: ROOT

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

Сообщение ROOT » 15 июн 2018, 00:34

Оглавление


Темы
 Введение 
 Постановка задачи 
 Оборудование 
 Подготовка к миграции 
 Создаём структуру разделов 
 Создаём структуру LVM 
 Проверка результатов различными средствами 
 Запуск системы с носителя 
 RSYNC 
 Демонтаж структуры LVM 
Дополнительные материалы
Convert MBR to GPT
Перенос системы на другой диск (xfs_copy)
XFS: Файловая система


 Введение 

Копирование данных производим с помощью rsync, в следствии чего можно отвязаться от жёсткого клонирования структуры разделов.
При сокращении объёма раздела важно на стадии планирования просчитать тот объём на который можно сократить тот или иной раздел. Исходные данные, при копировании, должны поместиться в целевой раздел. При данной процедуре миграции разделы могут быть увеличены
 Постановка задачи 
Перенести систему с одного диска на другой с возможностью смены файловой системы, а так же изменением объёмов конечных
разделов.
 Оборудование 
Код: выделить все
Материнская плата с UEFI
sda - Исходный диск
sdb - Целевой диск


 Подготовка к миграции 
Начинаем с создания текстового файла с параметрами разделов (для подсказок при повторении структуры)
Сбрасываем в файл информацию в двух вариантах. Вариант в 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



 Создаём структуру разделов 
Удаление раздела (если нужно) с номером 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



 Создаём структуру LVM 
Создаём 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



 Проверка результатов различными средствами 
Воспользуемся утилитой 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

Собираем структуру разделов 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

Меняем корень системы для смонтированных разделов нового диска
Код: выделить все
mount -t proc /proc /mnt/proc
mount --rbind /dev /mnt/dev
mount --make-rslave /mnt/dev
mount --rbind /sys /mnt/sys
mount --make-rslave /mnt/sys
cp -L /etc/resolv.conf /mnt/etc
chroot /mnt /bin/bash



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

Режим архивирования rsync близок к пригодности для задания, но он не создает резервные копии метаданных специальной файловой системы, таких как списки управления доступом, расширенные атрибуты или разреженные свойства файла. Для успешного клонирования на уровне файловой системы необходимо предоставить дополнительные параметры:
Код: выделить все
rsync -qaxHAWXS --numeric-ids --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/var/log/*"} \
/media /mnt/

И их значение (от страницы руководства):

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



 Демонтаж структуры LVM 
Если вдруг понадобится разобрать созданный 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
Для желающих отблагодарить
SB: 4274320029755744
QIWI: +79175241450
Аватар пользователя
ROOT
Администратор
 
Сообщений: 137
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Вернуться в Fedora

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron