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

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

Модератор: ROOT

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

Сообщение ROOT » 13 июн 2017, 16:15

Оглавление


Темы
 Постановка задачи 
 Создаём структуру разделов 
 Проблемы с клонами UUID 
 Копирование MBR 
 Дублирование структуры разделов 
 LVM 
Дополнительные материалы
Convert MBR to GPT
Перенос системы на другой диск (rsync)
XFS: Файловая система


 Постановка задачи 
Дано:
Код: выделить все
lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0 55,9G  0 disk
sdb               8:16   0  2,7T  0 disk
├─sdb1            8:17   0  128M  0 part
├─sdb2            8:18   0  1,4T  0 part /mnt/d
└─sdb3            8:19   0  1,4T  0 part /mnt/f
sdc               8:32   0  1,8T  0 disk
├─sdc1            8:33   0  500M  0 part
└─sdc2            8:34   0  1,8T  0 part
  ├─rfremix-root 253:0    0   50G  0 lvm
  ├─rfremix-home 253:1    0  1,8T  0 lvm  /home
  └─rfremix-swap 253:2    0  5,9G  0 lvm

Задача:
Перенести разделы sdc1 и rfremix-root на SSD (sda) без LVM. Исходные разделы должны быть удалены. Rfremix-swap не нужен по причине достаточного объёма оперативной памяти


 Создаём структуру разделов 
/dev/sda1 500M, /dev/sda2 56G Таблица разделов: msdos

Код: выделить все
parted -a optimal /dev/sdа
(parted) unit MiB         Настраиваем parted на честные мегабайты (2^n])
(parted) print
(parted) rm ?
(parted) mklabel msdos
(parted) mkpart primary xfs 1 525
(parted) set 1 boot on
(parted) mkpart primary xfs 525 -1
(parted) quit



Код: выделить все
mkfs.xfs -f -L "BOOT" /dev/sdа1
mkfs.xfs -f -L "ROOT" /dev/sdа2

Особого смысла нет задавать метки томов при создании файловой системы, поскольку xfs_copy копирует файловую систему полностью в том числе и метки томов (если таковые были заданы)


Код: выделить все
xfs_copy /dev/sdc1 /dev/sda1
xfs_copy /dev/mapper/rfremix-root /dev/sda2

Увеличиваем размер файловой системы до размера раздела
Код: выделить все
xfs_growfs /dev/sda2



Код: выделить все
xfs_admin -L "BOOT" /dev/sda1
xfs_admin -L "ROOT" /dev/sda2
xfs_admin -L "RFREMIX-HOME" /dev/mapper/rfremix-home

Метки на FS проставлять на не монтированных томах (если на исходных файловых системах не было заданы)
Установите метку файловой системы. Метки файловой системы XFS могут содержать не более 12 символов; Если метка длиннее 12 символов, xfs_admin усекает ее и распечатает предупреждающее сообщение. Метка файловой системы может быть очищена с использованием специального значения «--» для метки.


Код: выделить все
lsblk
mount /dev/sda2 /mnt/
mount /dev/sda1 /mnt/boot
mount -t devtmpfs /dev /mnt/dev
mount -t proc /proc /mnt/proc
mount -t sysfs /sys /mnt/sys
chroot /mnt/ 

Приводим UUID в fstab в соответствие.
Код: выделить все
blkid |grep sda
/dev/sda1: LABEL="BOOT" UUID="f1bb3a3e-d172-4cbc-80c2-d4f60184f38c" TYPE="xfs"
/dev/sda2: LABEL="ROOT" UUID="69060936-aa74-420e-895e-6eb98f193c3c" TYPE="xfs"

Код: выделить все
e /etc/fstab

При переустановке grub UUID раздела в файле /etc/grub2.cfg меняется на UUID загрузочного раздела
При запуске нужно избавиться от соответствующих параметров запуска ядра связанных с VLM
Код: выделить все
rd.lvm.lv=rfremix/root rd.lvm.lv=rfremix/swap

теперь они нам не нужны и поэтому редактируем загрузку системы в GRUB. После чего не забываем отредактировать /etc/default/grub удалив эти же параметры. Далее обновляем grub
Если используется SELinux, то перед выходом из chroot нужно в корне создать файл .autorelabel, иначе есть риск не попасть в систему (циклическая авторизация). При смене носителя правила SELinux приходят в несоответствие и их нужно пересоздать.
Код: выделить все
grub2-install --force /dev/sda -???????
grub2-mkconfig -o /boot/grub2/grub.cfg
touch /.autorelabel
exit
umount /mnt/{boot,home,}

Создаём initramfs и перезапускаемся (--force перезапишет существующий initramfs)
Код: выделить все
dracut --force /boot/initramfs-$(uname -r).img $(uname -r)
reboot



 Проблемы с клонами UUID 
Однако, поскольку он действительно создает клон, метки диска и раздела будут идентичны оригиналу. Некоторые функции ОС требуют, чтобы оно было уникальным.
Xfsdump и xfsrestore
после клонирования XFS файловой системы xfsdump and xfsrestore может появиться следующее сообщение об ошибке:
XFS: Filesystem hdc4 has duplicate UUID - can't mount
Это исправляется генерацией нового UUID;
Код: выделить все
xfs_admin -U generate /dev/hdc1



 Копирование MBR  
Код: выделить все
dd if=/dev/sda of=mbr-backup bs=512 count=1

Если нужно сохранить только загрузочный код (он занимает 446 байт), то меняем размер блока следующим образом:
Код: выделить все
dd if=/dev/sda of=mbr-boot-code bs=446 count=1
dd if=mbr-boot-code of=/dev/sdb bs=446 count=1

Соответственно, для восстановления только загрузочного кода из файла mbr-backup:
Код: выделить все
dd if=/path/mbr-backup of=/dev/sda bs=446 count=1



 Дублирование структуры разделов 
Сохраняем разметку разделов в файл (unit s - сектора)
Код: выделить все
parted /dev/sda unit s print > part-mapMBR.dump
Модель: ATA VBOX HARDDISK (scsi)
Диск /dev/sda: 67108864s
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: gpt
Флаги диска:

Номер  Начало    Конец      Размер     Файловая система  Имя                   Флаги
 1     2048s     411647s    409600s    fat16             EFI System Partition  загрузочный, esp
 2     411648s   1435647s   1024000s   xfs
 3     1435648s  67106815s  65671168s                                          lvm


Исходя из этих данных можно склонировать структуру разделов parted'ом в посекторном режиме
Также можно восстановить удалённые по ошибке разделы (при наличии данной информации) Т.е. удаление раздела
не влечёт последствий для FS


 LVM 
Удаление Логических томов
Код: выделить все
lvdisplay rfremix-root
lvremove /dev/rfremix/root
lvremove /dev/rfremix/swap


Пример увеличения логического тома /dev/myvg/homevol до 12 гигабайт:
Код: выделить все
lvextend -L12G /dev/mapper/homevol

Следующая команда добавит еще один гигабайт в /dev/myvg/homevol.
Код: выделить все
lvextend -L+1G /dev/mapper/homevol

Аргумент -l позволяет указать число экстентов для добавления в том. Также можно указать процент от общего размера группы томов или незанятого пространства. Приведенная ниже команда увеличит том testlv, выделив ему все нераспределенное пространство в группе myvg.
Код: выделить все
lvextend -l +100%FREE /dev/mapper/testlv
Для желающих отблагодарить
SB: 4274320029755744
QIWI: +79175241450
Аватар пользователя
ROOT
Администратор
 
Сообщений: 136
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Вернуться в Fedora

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

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

cron