Клонирование линукс на горячую по сети

Обновлено: 04.07.2024

Есть партия абсолютно одинаковых компьютеров, требуется на все поставить Астру 2.12 Орёл. Поставил ОС + fly-admin-ad-client. В дальнейшем все машины будут подключены в домен AD.
Склонировал установленную ОС на чистую машину. Поменял имя компьютера
sudo hostnamectl set-hostname НОВОЕИМЯ

В процессе обследования склонированной системы появились вопросы:
1) Абсолютно такие же UUID, как и в эталонной системе. Это может быть проблемой?
2) Старое имя компьютера фигурирует в файлах
/etc/hosts

/var/lib/exim4/config.autogenerated
/etc/exim4/update-exim4.conf.conf
/etc/mailname

/etc/ssh/ssh_host_rsa_key_pub
/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ed25519_key.pub

Файл hosts правлю, ssh-ключи удаляю(+удаляю приватные ключи) и перегенерирую, а что с остальными файлами, насколько они значимы и как из пересоздать?

CrashBldash

New member

agro_fit

New member

Поразбирался в вопросе, итак:

sudo dpkg-reconfigure exim4-config Не меняем никаких параметров, кроме имени компьютера.
-----------------------------------
gencache.tdb и secrets.tdb восстанавливаются при перезагрузке. Удалить их перед созданием образа. Заодно удалим и passdb.tdb.
-------------------------------------
ssh-ключи

Удаляем файлы перед созданием образа.
sudo rm /etc/ssh/ssh_host_*

Создаем заново после разворачивания образа
sudo dpkg-reconfigure openssh-server
--------------------------------------
.Xauthority удаляем у всех пользователей до создания образа, восстанавливается при загрузке.
-----------------------------------------------------
hwdb.bin - ложное совпадение


-------------Итого------------
До создания образа:
sudo rm /var/cache/samba/gencache.tdb
sudo rm /var/lib/samba/private/secrets.tdb
sudo rm /var/lib/samba/private/passdb.tdb
sudo rm /etc/ssh/ssh_host_*
rm

Создаем образ системы, разворачиваем на новом компьютере. Эти операции выполнил в программе Macrium Reflect 7 из Hiren's BootCD PE x64. Программа различает занятое и свободное место на диске, не копирует пустое место, сжимает данные и может проверить образ после создания. В итоге разные образы получались размером 3 - 3.5 Гб, время создания/разворачивания 5 — 10 мин (обычный жесткий диск, не SSD).

Меняем имя компьютера и файл hosts
sudo hostnamectl set-hostname НОВОЕИМЯ
sudo vim /etc/hosts

Удаляем файлы, созданные со старым именем
sudo rm /var/cache/samba/gencache.tdb
sudo rm /var/lib/samba/private/secrets.tdb
sudo rm /var/lib/samba/private/passdb.tdb
rm

Переконфигурируем пакеты:
sudo dpkg-reconfigure exim4-config Не меняем никаких параметров, кроме имени компьютера.
sudo dpkg-reconfigure openssh-server

Подойдёт, dd + netcat, и с одной машины можно расклонировать её диск на все остальные.

rm_
Хммм. Не могли бы рассказать про это по-подробнее? Или может мануал какой-нить про это есть? Можно. Только быстрее будем с исходного HDD копировать.
А почему dd не подойдет? Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей.
Потому что на остальных машинах винт не размеченный или размеченый и с ненужной инфой. Или я че-т не понимаю.
Потому что на остальных машинах винт не размеченный или размеченый и с ненужной инфой. Или я че-т не понимаю.
если будете копировать весь диск (/dev/hda), то винт скопируется 1 в 1, с разделами (винты ведь одинаковые?). Что мешает проверить? Подключить второй винт на компьютер (чтоб с сетью не бодаться) и скопировать (а потом поменять местами и загрузиться)
1) dd if=/dev/hda of=/home/my_login/image
2)потом скачиваете образ на все машины, а там
3) dd if=/image of=/dev/hd?

Скоро придёт
Осень

Да зачем Вам сеть? Это медленнее будет. Взяли готовую станцию, HDD из целевой машины и залили на него типа:
Это если у Вас IDE диски. Для dd, вроде, дополнительных опций и не надо. Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей. Да зачем Вам сеть? Это медленнее будет. Взяли готовую станцию, HDD из целевой машины

Париться из кучи машин выковыривать HDD и прыгать вокруг одной по очереди подключая их (не на горячую, а значит с кучей перезагрузок) - это быстрее?

Если по сети, то вот так:

На источнике (IP-адрес к примеру 10.0.0.1):


По вкусу добавить gzip либо lzop, также можно предварительно забить нулями свободное место диска-источника.
Всё, вкалывают роботы, счастлив человек. © Просто не охота с дисками возиться, перетыкать их туда-сюда. Еще один момент - других машинах нет ОСей. Париться из кучи машин выковыривать HDD и прыгать вокруг одной по очереди подключая их (не на горячую, а значит с кучей перезагрузок) - это быстрее?

У человека нет ОС на ПК. А если нет и CD-ROM, то в любом случае ПК разбирать придется. Да и если не гигабитовая сеть, то однозначно дольше будет. В своё время прошел через это: на 28 машин заливал Fedora 6

Просто не охота с дисками возиться, перетыкать их туда-сюда. Еще один момент - других машинах нет ОСей. Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей. Просто не охота с дисками возиться, перетыкать их туда-сюда. Еще один момент - других машинах нет ОСей.
понятно. однако вы больше промучаетесь устанавливая по сети ИМХО. проще прогуляться с винтом на котором ОС и образ.

Скоро придёт
Осень

Просто не охота с дисками возиться, перетыкать их туда-сюда. Еще один момент - других машинах нет ОСей.
понятно. однако вы больше промучаетесь устанавливая по сети ИМХО. проще прогуляться с винтом на котором ОС и образ.
Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей. Париться из кучи машин выковыривать HDD и прыгать вокруг одной по очереди подключая их (не на горячую, а значит с кучей перезагрузок) - это быстрее?

на машинах нет ОС - ставим винт, включаем, копируем, отключаем, вынимаем винт, идём к следующей.

По вкусу добавить gzip либо lzop, также можно предварительно забить нулями свободное место диска-источника.
ну можно и так. если планируется gzip, то забивать нулями обязательно нужно.

Скоро придёт
Осень

Сеть как раз таки гигабитная, а вот приводов нет, зато есть usb привод. Дергать винты конечно вариант, но хотелось бы все таки это все по сети сделать

Описанный выше вариант само собой выполняется не из "осей" а при загрузке целевых машин с LiveCD. Проверьте, умеют ли Ваши машины грузиться с USB CD/DVD.

если планируется gzip, то забивать нулями обязательно нужно.
Теоретически, если диски свежие и только что с завода, там и так уже будут нули. Сеть как раз таки гигабитная, а вот приводов нет, зато есть usb привод. Дергать винты конечно вариант, но хотелось бы все таки это все по сети сделать

USB-привод CD-ROM? Что мешает с него загрузится с помощью liveCD?

Ну а если сеть, то решение Вам написали.

Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей. Есть некоторое кол-во одинаковых машин. На одной из них установлен и настроен RedHat Linux Enterprise. Можно ли его перенести на другие машины? Если можно, то как?
Спасибо!

Форумный поиск по слову "Клонирование":

и еще кучу других.

Вопросы клонирования диска и переноса системы рассматривались многократно.

Goodvin
Смотрел я эти темы до этого. Там не рассмотрены варианты с переносом системы по сети

Может кто-нить объяснить как это сделать по сети, по пунктам? А то не пойму никак

Goodvin
Смотрел я эти темы до этого. Там не рассмотрены варианты с переносом системы по сети

Эти программы позволяют работать с образами через сеть.
Ссылки на них даны именно на этом форуме.

Кроме того, есть темы, где непосредственно рассматриваются вопросы сетевого клонирования/распространения систем.
установить на 10 машин
Перенос системы Ubuntu с одного ноутбука на другой
Вопрос по избитому клонированию

Goodvin
Смотрел я эти темы до этого. Там не рассмотрены варианты с переносом системы по сети

Может кто-нить объяснить как это сделать по сети, по пунктам? А то не пойму никак

Прочитайте перед тем, как задать вопрос:

при создании темы в этом разделе предполагается, что вы обладете базовыми знаниями о работе GNU/linux
и имеете представление об использовании средств настройки, предоставленных вашим дистрибутивом,
а также понимаете назначение и основные принципы работы используемых вами сервисов.

Мне нужно клонировать работающий сервер Linux. Мы не можем выключить рабочий сервер. Есть ли способ получить клон и развернуть его на другом сервере?

Есть много способов скопировать диски, файловые системы или файлы. Как правило, копирование файловой системы дает вам хороший клон с гибкостью, которая может быть немного другого размера в целевой системе. Когда целевая система работает под управлением какого-либо живого Linux (knoppix, ubuntu live и т. Д.), Загруженного с компакт-диска, вы можете создавать разделы на диске, используя fdisk или ваше любимое приложение для работы с разделами. Предполагая, что у вас SSH-сервер работает в исходной системе, используйте подход, подобный следующему:

Волшебство происходит в этой команде:

При использовании какого-либо конкретного метода для клонирования дисков в реальной среде Linux ваша единственная проблема, скорее всего, связана с базами данных. Лучший способ сделать резервную копию и восстановить базу данных - использовать их утилиту для создания снимка базы данных в формате ascii непосредственно перед дампом файловой системы. Для MySQL есть:

Для postgresql есть:

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

Создайте расположение дисков на новой машине так, как вы этого хотите.

Используйте rsync для переноса содержимого диска. Повторите несколько раз, чтобы наверстать упущенное.

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

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

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

Мой коллега клянется System Imager:

Я не знаю, насколько хорошо это будет работать для «живых» систем.

В противном случае я думаю, что вы застряли, делая вещи вручную:

  • Убедитесь, что вне репозиториев нет никаких приложений для установки
  • Сбросить список установленных пакетов и установить их на новый сервер
  • Копировать конфигурационные файлы
  • Восстановить базы данных
Systemimager пород. Он работает в реальной системе с теми же условиями для запуска rsync для копирования состояния активной системы. Некоторые приложения должны быть закрыты или выгружены на диск (например, базы данных mysql) перед копированием и должны быть восстановлены в новой системе.

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

Синхронизация ваших баз данных в согласованном состоянии на диске может быть сложной, но может просто сработать моментальный снимок, а затем восстановить его после восстановления образа DAR. DAR повлияет на производительность сервера во время его работы.

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

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

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

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

Процесс будет выполнен в несколько шагов:

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

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

Смотрим состояние дисков и разделов на текущий момент:

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

dd if=/dev/sdx1 of=/dev/sdy1 bs=64K conv=noerror,sync

* Команда выполняет блочное копирование и запускается со следующими параметрами:

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

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

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

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

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

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/<partition/disk name> resume=/dev/disk/by-id/<partition/disk name> splash=silent quiet showopts"

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

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

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

3. Файл fstab

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также: