Копировать диск с линукс

Клонирование системного раздела в Linux

Обновлено и опубликовано

Опубликовано: 08.10.2021

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

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

1. Клонирование диска

Первым делом мы создаем полную копию нашего диска. Это единственный этап, который может быть выполнен без нюансов на любой из систем, так как он выполняется с помощью утилиты dd. Смотрим состояние дисков и разделов на текущий момент:

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

  • if — источник данных.
  • of — куда копировать данные.
  • bs — объем блока, который будет читаться и копироваться за раз.
  • conv — дополнительные опции. В данном примере noerror — продолжать операцию в случае ошибки чтения данных; sync — копировать все, в том числе и нулевые данные.

* Таким образом, мы клонируем диск или раздел с /dev/sdx1 в /dev/sdy1 (не путаем источник и назначение).

Команда будет выполняться некоторое время. После ее завершения можно снова посмотреть состояние дисков и разделов:

При клонировании диска мы должны увидеть, что целевой носитель приобрел такую же разметку.

Читайте также:  Как удалить tigervnc server linux

Следующим шагом настроим загрузчик.

2. Загрузчик grub2

Для большинства современных систем характерно использование grub2. Его мы и будем рассматривать. Но если в вашем случае используется сервер с grub первой версии, то мы можем обратиться к инструкции How to Migrate the Root Filesystem to a New Disk.

Мы можем увидеть разные варианты строки, указывающей на загрузку системы.

а) В некоторых случаях это будет универсальная строка, которую не нужно менять, например:

GRUB_CMDLINE_LINUX=»crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet»

* в данной строке мы видим, что загрузчик будет искать том LVM centos/root. Так как после клонирования он не поменяется, то нам ничего не нужно редактировать.

б) В некоторых случаях строка может быть пустой:

* в данном примере также от нас не потребуется никаких действий.

в) В некоторых случаях указатель может вести на конкретные диски:

GRUB_CMDLINE_LINUX=»root=/dev/disk/by-id/ resume=/dev/disk/by-id/ splash=silent quiet showopts»

Тогда нам понадобиться изменить строки, чтобы диск соответствовал новому.

Также стоит иметь ввиду, что если после копирования мы собираемся извлечь диск из компьютера, порядок дисков и имя могут поменяться, что приведет к неработоспособности загрузки.

Стоит сделать тестовое отключение с целью проверки, какое имя станет у диска.

3. Файл fstab

На следующем шаге мы проверяем настройки монтирования корневой директории и раздела boot при загрузке системы. Они задаются в файле fstab.

Есть два надежных способа указать диск при монтировании — использовать его идентификатор или точку монтирования тома LVM. Рассмотрим оба варианта.

LVM

Данный способ можно использовать частично, так как раздел boot не может использовать LVM, поэтому данное монтирование будет применяться только к корневому разделу.

Если мы используем LVM, то все, что нам нужно сделать, это открыть файл fstab и проверить, что в нем, на самом деле, используется LVM при монтировании корневого раздела:

Мы можем увидеть что-то на подобие:

.
/dev/mapper/centos-root / xfs defaults 0 0
.

Понять, используется ли LVM можно командой:

Мы должны увидеть пометку lvm:

Читайте также:  What is elf linux

.
centos-root 253:0 0 13.4G 0 lvm /
.

Как было сказано выше, в случае использования LVM, нам не придется редактировать fstab, так как точка монтирования не поменяется.

Использование идентификатора

Для получения списка дисков с их идентификаторами, вводим команду:

Мы получим что-то на подобие:

/dev/sdb1: UUID=»45053cf4-cb27-40b8-9b63-7f43fb123807″ TYPE=»xfs»
/dev/sdb2: UUID=»Rzg9IW-5zmy-wsdv-mfIJ-HMRV-9Zup-XCcxPi» TYPE=»LVM2_member»
/dev/sda1: UUID=»45053cf4-cb27-40b8-9b63-7f43fb123807″ TYPE=»xfs»
/dev/sda2: UUID=»Rzg9IW-5zmy-wsdv-mfIJ-HMRV-9Zup-XCcxPi» TYPE=»LVM2_member»
/dev/mapper/centos-root: UUID=»97ea6561-8e69-4a9d-b29b-5d6c68a5df64″ TYPE=»xfs»
/dev/mapper/centos-swap: UUID=»db800e72-c138-4050-9949-cf03b779b709″ TYPE=»swap»

* как видим, идентификаторы дисков совпадают, так как команды dd клонирует информацию полностью. Также обратите внимание, что разделы LVM также имеют свои идентификаторы. Это очень важный момент, так как точка монтирования в случае использования LVM должна указывать на него.

Чтобы лучше понять, какой идентификатор нам нужен, смотрим список раздело и их монтирования:

Находим раздел, который соответствует корневому и смотрим его идентификатор. После открываем файл:

Наши записи могут быть, примерно, такими:

UUID=Rzg9IW-5zmy-wsdv-mfIJ-HMRV-9Zup-XCcxPi / xfs defaults 0 0
UUID=45053cf4-cb27-40b8-9b63-7f43fb123807 /boot xfs defaults 0 0

Но также никто нам не запретит использовать гибридный вариант, например:

/dev/mapper/centos-root / xfs defaults 0 0
UUID=45053cf4-cb27-40b8-9b63-7f43fb123807 /boot xfs defaults 0 0

* в данном варианте мы используем том LVM для корня и идентификатор для boot.

Буква (цифра) раздела

Также мы можем использовать монтирование при указании конкретного диска и раздела, например:

/dev/sda2 / xfs defaults 0 0
/dev/sda1 /boot xfs defaults 0 0

Данный метод ненадежный, так как при извлечении дисков или их переключении в другие порты, имена разделов могут поменяться.

4. Перезагрузка

Надеемся, что мы все сделали правильно и перезагружаемся. На данном этапе также могут быть варианты.

а) Если необходимо извлечь старый диск, то выключаем компьютер, отключаем диск, но не убираем его далеко, так как если система не загрузится, необходимо будет его вернуть, подключив в тот же порт материнской платы.

б) Если мы сохранили оба диска, нам нужно убедиться в настройках БИОС/UEFI, что загрузка выполняется с нового диска.

Если мы настроили систему правильно, то она загрузится с нового диска.

Источник

Клонирование системного диска штатными средствами Linux за 30 секунд

Принесли мне намедни винчестер прямо в упаковке и озадачили оперативным клонированием системного диска одного из серверов. Задача, в целом довольно тривиальная, и легко выполнимая. У каждого наверняка есть методика подобного рода действиям, не знаю лучше или хуже мой подход, но поделиться, думаю, им стоит.
Вводная:
* сервер с linux
* все разделы на XFS
* загрузчик GRUB 0.97
* оригинальный диск /dev/sda, клонируем на /dev/sdb
* разделы /dev/sda[1,5-7] (общая полезная информация ~1GB)

Читайте также:  Linux отключить pci устройство

В сущности, задача раскладывается на составляющие:
— разметить новый диск также как и оригинал
— скопировать данные на новый диск
— сделать новый диск загрузочным
И вот как это делается:

sfdisk -d /dev/sda | sfdisk /dev/sdb
xfs_copy /dev/sda1 /dev/sdb1
xfs_copy /dev/sda5 /dev/sdb5
xfs_copy /dev/sda6 /dev/sdb6
xfs_copy /dev/sda7 /dev/sdb7
grub
> root (hd1,0)
> setup (hd1)

Готово! По времени ~30 секунд.

Теперь в деталях с пояснениями:
1. Копирование таблицы разделов на /dev/sdb осуществляем при помощи sfdisk
2. xfs_copy копирует полезные данные и, при необходимости, автоматически форматирует разделы, желающие могут перемонтировать разделы в readonly или воспользоваться xfs_freeze на время копирования для сохранения целостности данных.
3. Конфигурация grub (версия 0.97!) в /boot/grub/menu.lst должна выглядеть примерно так:

default 0 timeout 5 color cyan/blue white/blue title Debian GNU/Linux, kernel 2.6.30-2-686 root (hd0,0) kernel /boot/vmlinuz-2.6.30-2-686 root=/dev/sda1 ro initrd /boot/initrd.img-2.6.30-2-686

Командами grub — root,setup мы делаем второй диск загрузочным.
4. Когда работают два диска, то второй диск идентифицируется как /dev/sdb, если оригинальный диск высунуть, то второй диск будет /dev/sda. Отсюда следует вывод, что менять /etc/fstab не нужно. Однако, на некоторых Linux в /etc/fstab вместо /dev/sdXN может стоять идентификация разделов по UUID. В этом случае возможны два варианта:
— копируем xfs_copy с ключом -d (делаем полное клонирование, включая UUID)
— меняем в /etc/fstab все UUID на соответствующие /dev/sdaN (где N — номер партиции, в этом вам поможет команда blkid)

P.S. grub2 не ставил, если у кого-то есть аналогичный опыт репликации загрузчика на второй диск, поделитесь.

Источник

Оцените статью
Adblock
detector