В данной инструкции я попробую рассмотреть различные сценарии, с которыми мы можем столкнуться при клонировании диска в Linux с системным разделом. В итоге мы должны будем запустить нашу систему с другого диска.
Данная процедура потенциально опасна для данных. Любое неверное действие или нюанс, связанный с уникальной настройкой, могут привести к потере данных. Обязательно, выполняем резервное копирование всех важных файлов. Также я рекомендую потренироваться в тестовой среде.
В зависимости от системы и типа разделов, действия могут отличаться, а могут появляться особенности, которые сделают работу сложнее. Клонирование диска может быть выполнено в несколько действий, а может превратиться в кошмар. Запасаемся временем и терпением.
Процесс будет выполнен в несколько шагов:
Первым делом мы создаем полную копию нашего диска. Это единственный этап, который может быть выполнен без нюансов на любой из систем, так как он выполняется с помощью утилиты dd.
Смотрим состояние дисков и разделов на текущий момент:
lsblk
Определяемся, с какого диска на какой мы будем выполнять копию. Это может прозвучать банально, но тут важно не перепутать источник диска, с которого клонируется информация и целевой носитель.
Выполняем команду:
dd if=/dev/sdx1 of=/dev/sdy1 bs=64K conv=noerror,sync
* Команда выполняет блочное копирование и запускается со следующими параметрами:
* Таким образом, мы клонируем диск или раздел с /dev/sdx1 в /dev/sdy1 (не путаем источник и назначение).
Команда будет выполняться некоторое время. После ее завершения можно снова посмотреть состояние дисков и разделов:
lsblk
При клонировании диска мы должны увидеть, что целевой носитель приобрел такую же разметку.
Следующим шагом настроим загрузчик.
Для большинства современных систем характерно использование grub2. Его мы и будем рассматривать. Но если в вашем случае используется сервер с grub первой версии, то мы можем обратиться к инструкции How to Migrate the Root Filesystem to a New Disk .
Открываем файл:
vi /etc/default/grub
Мы можем увидеть разные варианты строки, указывающей на загрузку системы.
а) В некоторых случаях это будет универсальная строка, которую не нужно менять, например:
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=»»
* в данном примере также от нас не потребуется никаких действий.
в) В некоторых случаях указатель может вести на конкретные диски:
GRUB_CMDLINE_LINUX=»root=/dev/disk/by-id/<partition/disk name> resume=/dev/disk/by-id/<partition/disk name> splash=silent quiet showopts»
Тогда нам понадобиться изменить строки, чтобы диск соответствовал новому.
Также стоит иметь ввиду, что если после копирования мы собираемся извлечь диск из компьютера, порядок дисков и имя могут поменяться, что приведет к неработоспособности загрузки.
Стоит сделать тестовое отключение с целью проверки, какое имя станет у диска.
На следующем шаге мы проверяем настройки монтирования корневой директории и раздела boot при загрузке системы. Они задаются в файле fstab.
Есть два надежных способа указать диск при монтировании — использовать его идентификатор или точку монтирования тома LVM. Рассмотрим оба варианта.
Данный способ можно использовать частично, так как раздел boot не может использовать LVM, поэтому данное монтирование будет применяться только к корневому разделу.
Если мы используем LVM, то все, что нам нужно сделать, это открыть файл fstab и проверить, что в нем, на самом деле, используется LVM при монтировании корневого раздела:
vi /etc/fstab
Мы можем увидеть что-то на подобие:
…
/dev/mapper/centos-root / xfs defaults 0 0
…
Понять, используется ли LVM можно командой:
lsblk
Мы должны увидеть пометку lvm:
…
centos-root 253:0 0 13.4G 0 lvm /
…
Как было сказано выше, в случае использования LVM, нам не придется редактировать fstab, так как точка монтирования не поменяется.
Для получения списка дисков с их идентификаторами, вводим команду:
blkid
Мы получим что-то на подобие:
/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 должна указывать на него.
Чтобы лучше понять, какой идентификатор нам нужен, смотрим список раздело и их монтирования:
lsblk
Находим раздел, который соответствует корневому и смотрим его идентификатор. После открываем файл:
vi /etc/fstab
Наши записи могут быть, примерно, такими:
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.
Также мы можем использовать монтирование при указании конкретного диска и раздела, например:
vi /etc/fstab
/dev/sda2 / xfs defaults 0 0
/dev/sda1 /boot xfs defaults 0 0
Данный метод ненадежный, так как при извлечении дисков или их переключении в другие порты, имена разделов могут поменяться.
Надеемся, что мы все сделали правильно и перезагружаемся. На данном этапе также могут быть варианты.
а) Если необходимо извлечь старый диск, то выключаем компьютер, отключаем диск, но не убираем его далеко, так как если система не загрузится, необходимо будет его вернуть, подключив в тот же порт материнской платы.
б) Если мы сохранили оба диска, нам нужно убедиться в настройках БИОС/UEFI, что загрузка выполняется с нового диска.
Если мы настроили систему правильно, то она загрузится с нового диска.
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…