Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Инсталляция системы Linux

Атака клонов (клонируем linux-системы)

Автор: Кирилл Жольнай
Дата: 28 октября 2008 г.

Рано или поздно все системные администраторы сталкиваются с необходимостью установить и настроить несколько одинаковых linuх-машин. Либо рабочие места для пользователей со одинаковым набором пакетов, или стандартная конфигурация нескольких серверов, или пусть даже шаблон для быстрой установки виртуальных машин.

Проблему можно решить двумя принципиально разными способами: либо копированием образа (командой dd, например), либо с помощью kickstart-файла (или файл ответов). В чем же принципиальное отличие этих способов.

Способ первый. dd

Начнём, пожалуй, с самого простого, а именно команды "dd", которая есть во всех современных дистрибутивах, и отлично документирована. Сакральный смысл dd, заключается в том что с её помощью можем копировать файл (раздел, или любое блочное устройство) побайтно. Это дает нам потрясающую свободу действий, например для нашей задачи - скопировать данные с одного винчестера на другой:

# dd if=/dev/sda of=/sdb
где sda - источник, а sdb - конечная цель. Для оптимального решения проблемы лучше выполнить:
# dd if=/dev/sda of=/sdb bs=8M
где bs - это размер кэша жестокого диска (почти у всех современных дисков кеш больше 8М), этот параметр здорово ускорит процесс. Разумеется не очень удобно занимать целый винчестер для простого хранения образа. И эту задачу можно решить с помощью dd:
# dd if=/dev/sda of=/mnt/bak/sda.img bs=8M
То есть образ диска можно спокойно сохранить в файл и так же просто восстановить:
# dd if=/mnt/bak/sda.img of=/dev/sda bs=8M
Теперь оптимальное решение: Создаем файл, заполненный нулями, максимально возможного раздела и удаляем его. Это позволяет избавится от мусора в файловой системе.
# dd if=/dev/zero of=/null bs=1024 ; rm -f /null
Архивируем образ налету, а на выходе получаем малюсенький образ (обычно на 50% меньше, чем занимает установленная система).
# dd if=/dev/sda bs=8M | gzip -c > /mnt/bak/sda.img.gz
А так восстанавливаем сжатый образ:
# gunzip -с /mnt/bak/sda.img.gz | dd of=/dev/sda bs=8M

У этого способа "размножения" систем есть как свои плюсы так и свои недостатки:

  • + Простота.
  • + Быстрое копирование, при одинаковом (или схожем) аппаратном обеспечении.
  • + Удобное хранение.
  • + Независимость от файловых систем (может быть как ext3 так и ntfs)
  • - Если готовый образ переносится на другую платформу или другое железо, систему надо переконфигурирывать. Иногда проще поставить с нуля.
  • - Невозможность просмотреть или сконфигурировать образ системы до ее восстановление на диск.
  • - Неудобства в хранении. Образ системы достаточно большой.

Второй способ. kickstart

Кардинально отличается от первого, то есть в данном случае система все-таки будет устанавливаться, но по определённому нами сценарию. Этот сценарий для RHEL-like (RHEL, Fedora, CentOS...) дистрибутивов, называется kickstart-файл. Создаётся этот файл либо в ручную, либо после установки системы остается файл /root/anaconda-ks.cfg, либо программа system-config-kickstart (Почитать официальную документацию на русском можно на сайте RedHat'а) с графическим интерфейсом, но, по словам самих RedHat'овцев, целиком и полностью на неё полагаться не стоит, но синтаксис подсмотреть можно. Для своих задач я выбираю второй вариант, то есть устанавливаю эталонную систему, копирую /root/anaconda-ks.cfg в ks.cfg и его уже правлю. Долго рассказывать не буду, а приведу рабочий, неоднократно проверенный kickstart-файл, который использую для самой базовой установки системы (CentOS 5.2) и стандартного конфигурирования:

Все. Для установки системы с использованием kickstart-файла, при загрузке с диска, в поле boot: пишем "linux ks=http://astlink.ru/ks.cfg" или любой другой источник (ks=ftp, nfs и т.д.). Конфигурируем сетевой интерфейс и размечаем диск, все, наслаждаемся бездельем. Во время установки у системы могут возникнуть не очевидные вопросы, увидеть и ответить (или просто понаблюдать) можно в третьем терминале (Ctrl+Alt+F3).

Итак, плюсы и минусы второго варианта:

  • + Не зависит от аппаратной платформы.
  • + По скрости не уступает dd, или не намного.
  • + Удобное хранение шаблонов (не надо иметь образы с жуткими гигабайтами)
  • + Удобная правка.
  • - Относительная сложность реализации.
  • - Только для RHEL-like.

Итого:

Выбор зависит от поставленных задач, и как всегда решать вам. Либо очень быстрое и "тупое" клонирование с помощью dd, либо вдумчивое и крапотливое средствами kickstart.