Linux - the Best!

Your Explorer by Linux links...

Денис Колисниченко

Linux Советы

http://www.dkws.org.ua/

Совет №6. Клонирование

Клонирование – это очень полезный процесс. Предположим, вы только что установили Linux на один компьютер Интернет-зала. Потом посмотрели вокруг и осознали, что вам предстоит повторить установку минимум еще на 5-7 компьютеров. Вот тут как раз и целесообразно использовать клонирование. Клонирование – это создание точной (побитной) копии исходного носителя. Носителем в нашем случае будет корневая файловая система Linux. Клонированная копия называется образом. Мы сделаем ее точную копию, а потом «развернем» ее на других компьютерах нашего зала. Надеюсь, вы понимаете, что такая операция пройдет корректно, если у всех компьютеров будет одинаковая конфигурация. В случае с Интернет-залом обычно так оно и есть. Конечно, можно развернуть образ и на компьютер, конфигурация которого отличается от исходного, но потом он может потребовать донастройки – вплоть до перекомпилирования ядра. А на все это может уйти намного больше времени, чем на установку системы с нуля, которая на современных компьютерах занимает не более получаса.

Не подумайте, что клонирование полезно только когда у вас много одинаковых компьютеров. Клонирование целесообразно использовать, когда у вас всего один компьютер. Например, вы можете сделать образ вашей домашней системы. Если что-то вдруг «слетит» вы можете легко и быстро восстановить исходное состояние системы простым развертыванием образа. Или если у вас что-то случилось с вашим сервером, можно очень быстро «понять» его – ведь на развертывание образа нужно намного меньше времени, чем на установку и настройку системы. Время простоя в этом случае будет минимально. Приступим к клонированию. Перезагрузитесь в однопользовательском режиме. Для этого нужно использовать параметр single ядра Linux. Введите команду mount, чтобы узнать, какой раздел содержит корневую файловую систему:

/dev/hda1 on / type ext3 (rw,noatime)

none on /proc type proc (rw)

none on /sys type sysfs (rw)

Корневая файловая система расположена на разделе /dev/hda1. Создадим каталог /mnt/image – он нам скоро понадобится:

# mkdir /mnt/image

К этому каталогу нужно подмонтировать носитель, на который мы будем записывать образ. Понятно, что на /dev/hda1 записать образ мы не можем, поскольку образ именно этого раздела мы будем делать. Носителем может быть другой жесткий диск. Я буду использовать внешний USB-винчестер. Для его подключения нужно загрузить модуль usb_storage. Практически во всех новых дистрибутивах этот модуль уже откомпилирован.

# modprobe usb_storage

# mount /dev/sda1 /mnt/image

Первая команда загружает модуль, если он еще не загружен, а вторая – монтирует устройство /dev/sda1 (это и есть внешний винчестер) к каталогу /mnt/image. Все, что осталось сделать – это смонтировать корневую файловую систему в режиме «только чтение» и создать образ. Монтируем корневую файловую систему в режиме «только чтение»:

# sync

# mount -o remount,ro /

Создаем образ /mnt/image/image.bin раздела /dev/hda1:

# dd if=/dev/hda1 of=/mnt/image/image.bin

Подробно описывать утилиту dd не стану – это очень хорошо сделано в справочной системе. Скажу только, что кроме dd есть еще и утилита dd_rescue, которая при клонировании пропускает плохие секторы и делает максимально возможную копию файловой системы. Для меня, да и для вас, использование этой утилиты неактуально – ведь винчестеры меняют минимум один раз в год, поэтому не думаю, что у вас будет «битый» винчестер. Теперь рассмотрим, как можно восстановить систему. Для восстановления системы вам понадобится загрузочный CD Linux. Подойдет первый диск любого дистрибутива (при условии, что он загрузочный) – Mandrake, Red Hat, можно также использовать Knoppix CD или Gentoo LiveCD. Если вы используете не LiveCD, а простой загрузочный диск, для перехода в консоль нажмите Ctrl + Alt + F2. Подмонтируем наш внешний винчестер:

# mkdir /image

# modprobe usb_storage

# mount /dev/sda1 /image

Я вас понял: не наш, а мой – вы все правильно подметили. Скорее всего, у вас его не будет, поэтому вышеприведенные команды при условии, что второй жесткий диск подключен как Primary Slave, будут выглядеть так:

# mkdir /image

# mount /dev/hdb1 /image

Теперь вам нужно создать разделы на новом винчестере. Это можно сделать с помощью утилиты fdisk или же с помощью программы установки – как вам удобнее. Если же вы восстанавливаете систему после сбоя, ничего создавать не нужно – все уже создано. Не забудьте только создать раздел подкачки (тип раздела /dev/hda2 должен быть Linux swap):

# mkswap /dev/hda2

Теперь развернем образ (обратите внимание на параметры if и of программы dd – теперь их аргументы поменялись местами):

# dd if=/foo/image.bin of=/dev/hda1

Сейчас нам нужно изменить корневую файловую систему, чтобы попасть «вовнутрь» развернутого образа:

# mkdir /install

# mount /dev/hda1 /install

# chroot /install /bin/bash

Первая команда создает каталог install, вторая – монтирует «подопытный» раздел к этому каталогу, а третья – изменяет корневую файловую систему. Теперь корнем стал каталог install, а в качестве командной оболочки используется /bin/bash. Все, что нам осталось сделать – это перезаписать загрузчик. Если у вас LILO, введите команду:

# lilo

А если GRUB:

# grub-install /dev/hda

Теперь перезагрузите компьютер (команда reboot) – ваша система успешно клонирована/восстановлена.