Перенос Linux на другой диск. Без LiveCD

Последняя часть трилогии о модернизации бекап-сервера. Напомню, в первой части была выполнена замена хардов на харды большего размера с последующим увеличением доступного пространства. Во второй части нужно было сделать так, чтоб ОС «увидела» рейд-контроллер 3ware вместе с дисками (массив raid1). И в последней, заключительной части рассмотрим как выполнить перенос Linux с рабочего системного харда на новый

Подготовка нового диска

Итак, дисковый массив создан заранее средствами raid-контроллера 3ware. Посмотрим на текущий загрузочный диск

parted /dev/sdb print

Model: ATA WDC WD2502ABYS-1 (scsi)
Disk /dev/sdb: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1    1049kB    3146kB    2097kB    grub    bios_grub
2    3146kB    131MB    128MB    ext2    boot    boot, esp
3    131MB    10.2GB    10.1GB    linux-swap(v1)    swap
4    10.2GB    250GB    240GB    ext4    rootfs

и на новый диск

parted /dev/sda print

Error: /dev/sda: unrecognised disk label
Model: AMCC 9650SE-2LP DISK (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

Ошибка в выхлопе говорит о том, что на sda нет никакой разметки. Скопируем разметку с рабочего диска на новый

sfdisk -d /dev/sdb | sfdisk /dev/sda

Checking that no-one is using this disk right now … OK

Disk /dev/sda: 931.31 GiB, 999989182464 bytes, 1953103872 sectors
Disk model: 9650SE-2LP DISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
>>> Script header accepted.
>>> Created a new GPT disklabel (GUID: F2677118-36FA-49D4-A81B-3CEE6F2DBE6C).
/dev/sda1: Created a new partition 1 of type ‘BIOS boot’ and of size 2 MiB.
/dev/sda2: Created a new partition 2 of type ‘EFI System’ and of size 122 MiB.
/dev/sda3: Created a new partition 3 of type ‘Linux filesystem’ and of size 9.4 GiB.
/dev/sda4: Created a new partition 4 of type ‘Linux filesystem’ and of size 223.3 GiB.
/dev/sda5: Done.

New situation:
Disklabel type: gpt
Disk identifier: F2677118-36FA-49D4-A81B-3CEE6F2DBE6C

Device Start End Sectors Size Type
/dev/sda1 2048 6143 4096 2M BIOS boot
/dev/sda2 6144 255999 249856 122M EFI System
/dev/sda3 256000 20000767 19744768 9.4G Linux filesystem
/dev/sda4 20000768 488280063 468279296 223.3G Linux filesystem

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Форматируем разделы. Загрузочный раздел (/dev/sda2) в ext2 и корневой раздел (/dev/sda4) в ext4

mkfs.ext2 /dev/sda2
mkfs.ext4 /dev/sda4

Активируем раздел подкачки

mkswap /dev/sda3
swapon /dev/sda3

Перенос системы

В папке /mnt создадим папки boot и root. Они станут точками монтирования для новосозданных разделов. Примонтируем разделы на эти точки

cd /mnt
mkdir boot root
mount /dev/sda2 /mnt/boot/
mount /dev/sda4 /mnt/root/

В папке /mnt создаем файл исключений exclude. В этом файле указываем папки содержимое которых переносить не нужно

/dev/*
/mnt/*
/tmp/*
/proc/*
/sys/*

Сам перенос потребует много времени, поэтому рекомендую почистить исходную ОС от старых ядер и старого софта в distfiles. Синхронизируем разделы при помощи rsync. Важно перенести все хозяйство с сохранением прав

rsync -avR /boot/ /mnt/boot/
rsync -avR --exclude-from '/mnt/exclude' / /mnt/root/

Практически готово. Мапим ресурсы текущей системы на новую

mount -t proc proc /mnt/root/proc/
mount --rbind /dev /mnt/root/dev/
mount --rbind /sys /mnt/root/sys/

Переходим в chroot

chroot /mnt/root /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"

Мы получили как бы рабочую новую систему

Установка загрузчика

Загрузчику нужно сообщить с какого раздела начинать загрузку. Для этого отредактируем /etc/default/grub, где для параметра GRUB_CMDLINE_LINUX ищем root и указываем имя раздела /dev/sda4

GRUB_CMDLINE_LINUX="net.ifnames=0 root=/dev/sda4 rootfsENGINE=ext4"

либо его UUID, который можно узнать выполнив

blkid /dev/sda4

/dev/sda4: UUID=e51e0b66-67f7-4a00-a1e9-5a0ee0459d37 BLOCK_SIZE=4096 TYPE=ext4

GRUB_CMDLINE_LINUX="net.ifnames=0 root=UUID=e51e0b66-67f7-4a00-a1e9-5a0ee0459d37 rootfsENGINE=ext4"

Последний штрих — установка загрузчика

grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
exit
reboot

И без всяких LiveCD, только средствами ОС

0 0 голоса
Оцените статью
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии