| Your Explorer by Linux links... |
|
Совет №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) – ваша система успешно клонирована/восстановлена.