Рубрика:
Администрирование /
Продукты и решения
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
СЕРГЕЙ ЯРЕМЧУК, фрилансер. Автор более 800 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС
Спасем пингвина
Хотя Linux – устойчивая система, но бывает всякое, особенно если к факторам, ведущим к остановке сервера, добавить и аппаратные проблемы, еще действие вирусов и самих пользователей. Поэтому необходимость в постоянном резервировании данных понимают все системные администраторы, а кто еще не понял, то после первого печального опыта обычно все встает на свои места. В отличие от Windows, для которой написано множество в большей части коммерческих программ для восстановления системы, под Linux обычно обходятся штатными средствами, т.е. утилитами tar, gzip, dd и пр. Бывалые админы уже имеют пару-тройку скриптов, позволяющих автоматизировать эту операцию, а для начинающих эта операция может вызывать пока еще головную боль. Для тех, кто ищет себе удобный инструмент для резервирования данных и восстановления системы, и предназначена эта статья.
В ней речь пойдет о пакетах Mindi Linux и Mondo Rescue, написанных и поддерживаемых в основном одним человеком, Hugo Rabson, первая версия которых увидела свет 18 февраля 2000 года, домашняя страница проекта http://www.mondorescue.org/index.html. Проект уже получил поддержку множества пользователей и не в последнюю очередь благодаря простоте, позволяющей разобраться и новичку, а также быстроте работы, эффективности, устойчивости и дальнейшему активному развитию. Итак, по порядку.
Mindi Linux создает набор, который поможет вам в обслуживании системы вашего дистрибутива в случае неприятностей. В этот набор входят ядро той системы, в которой запущен Mindi, а также модули, файлы библиотек и основные утилиты. В этом и основная суть, что используются для восстановления именно родные составляющие.
В базовый набор программ входят утилиты вроде fdisk, mkfs, fsck, cat, less, more, afio, gzip, bzip2 и пр., а также конфигурация клавиатуры, библиотека glibs. При необходимости можно и изменить состав пакетов, добавив и свои, в том числе и включая X-Window, для этого достаточно занести необходимые в файл deplist.txt, который находится в зависимости от того, в каком виде (из пакетов или исходников) устанавливался Mindi, либо в /etc/mindi/, либо в /usr/local/mindi, причем в нем уже имеются готовые шаблоны, которые достаточно просто раскомментировать. Установка самой программы особых трудностей не должна вызвать, на сайте кроме архива с исходниками доступны и прекомпилированные пакеты, собранные под большинство известных дистрибутивов Linux.
Для пакетов это выглядит так:
#tar -zxvf mindi-0.95_cvs_20040110.tgz
# cd mindi-0.95_cvs_20040110
# ./install.sh
А при помощи rpm-пакетов:
# rpm -i mindi-0.95-1.i386.rpm
Для своей работы Mindi требует наличия некоторых установленных утилит, список которых вы найдете на сайте, но все они, как правило, уже имеются в современных дистрибутивах. Среди рекомендаций следует обратить внимание на наличие свободного места на жестком диске (~800 Мб), которое может понадобиться для промежуточных файлов, и желательно ядро, выше 2.2.19 или 2.4.7 с поддержкой в первую очередь loopfs, а также Virtual memory file system и initrd ramdisk support. Остальное обычно уже имеется. И теперь программу можно запускать.
# /usr/local/bin/mindi
Mindi Linux mini-distro generator v0.95 by Hugo Rabson |
Далее система спрашивает, будем ли мы использовать собственное ядро для построения загрузочного диска. В случае положительного ответа будет использовано ядро, с которого система загружалась, иначе можно ввести путь к другому ядру, например, взятому с сайта www.mondorescue.org, если собственное не удовлетворяет по каким-либо причинам.
Do you want to use your own kernel to build the boot disk (y/n) ?y Your kernel is /boot/vmlinuz-2.4.21-99-default (v2.4.21-99-default) |
После определения ядра система спрашивает, хотим ли мы использовать LILO для загрузки вместо syslinux. Что выбирать – дело вкуса, но выбрав LILO, вы должны убедиться, что он установлен в системе.
Would you like to use LILO (instead of syslinux) for your boot CD/floppies (y/n) ?n Analyzing dependency requirements Done. Making complete dependency list Done. |
Далее система анализирует конфигурацию системы, которую также заносит в создаваемый архив.
Analyzing your keyboard"s configuration. Adding the following keyboard mapping tables: ru1.map.gz Done. Assembling dependency files.....................................Done. Your mountlist will look like this:-7 directories. DEVICE MOUNTPOINT FORMAT SIZE (MB) /dev/hda1 /boot ext2 100 /dev/hda2 swap swap 239 /dev/hda3 / reiserfs 1200 /dev/hda5 /usr reiserfs 4004 /dev/hda6 /home reiserfs 25000
Unable to open usbdevfs Tarring and zipping the groups........................ Done. Creating data disk #1...#2...#3...#4...#5...#6...#7... Done. Making 1722KB boot disk...........................Kernel size = 1165 K Ramdisk free = 1103 K Sorry, your kernel is too big. Either recompile it to reduce its size, or use Mindi"s failsafe kernel. For instructions on using Mindi"s failsafe kernel, read the manual.
1722KB boot disk was NOT created PrepareBootDiskImage() is returning nonzero |
Как видите, в строке ниже система не смогла создать (в моем случае по причине отсутствия устройства /dev/fd0H1722) 1.72 Мб образ, но при использовании в дальнейшем для работы СD-ROM или NFS это не смертельно.
Warning! Failed to create 1.72MB boot image. Please reduce your kernel"s size if you want to make a 1.72MB floppy floppy disk. This error is non-fatal if you are backing up to CD or NFS. 2880KB boot disk was created OK......................... Done. In the directory "/root/images/mindi" you will find the images:- mindi-boot.2880.img mindi-data-1.img mindi-data-2.img mindi-data-3.img mindi-data-4.img mindi-data-5.img mindi-data-6.img mindi-data-7.img |
Сейчас можно записать все созданные образы на дискеты.
Would you like to create boot+data floppy disks now (y/n) ?n |
После утвердительного ответа на последующий вопрос будет содан ISO-образ, содержащий все данные.
Shall I make a bootable CD image? (y/n) y NB: Mindi"s bootable CD always uses isolinux. For a bootable CD w/LILO, please use Mondo. Finished. Boot and data disk images were created. |
Если сейчас посмотреть в каталог /root/images/mindi, в нем находится несколько файлов.
#ls /root/images/mindi/
1.tar.gz 5.tar.gz initrd.img mindi-data-3.img 2.tar.gz 6.tar.gz mindi-boot.2880.img mindi-data-4.img mindi.iso 3.tar.gz 7.tar.gz mindi-data-1.img mindi-data-5.img 4.tar.gz all.tar.gz mindi-data-2.img mindi-data-6.img mindi-data-7.img |
В нем, как видите, собраны образы для записи на дискеты, архивы с данными и ISO-образ, который нам и нужен.
Записываем его на болванку:
# cdrecord -blank fast dev=0,0,0 speed=12 /root/images/mindi/mindi.iso
Все, теперь у нас в руках загрузочный СD-ROM, созданный под конкретную задачу и требования. При необходимости загружаемся с него и автоматически загружается программа Mondo Rescue, о которой пойдет речь чуть ниже. Если же с созданием образа что-то не получилось, то исчерпывающий ответ о причине можно получить в файле /var/log/mondo-archive.log, который разработчики просят прислать в случае обращения за помощью. Также для тех, у кого ничего не получилось, то можно найти уже готовые ISO-образы по ссылкам на сайте, с этих же образов можно установить полностью весь комплект программ, просто сначала примонтировав диск и затем зайдя на него, введя setup. Теперь можно, загрузившись с этого СD-ROM, провести спасательные работы по восстановлению системы. Но это еще не все.
Mondo Rescue
Далее переходим к рассмотрению Mondo Rescue – набора утилит, который предназначен для создания резервной копии выбранной области системы, и записи их затем на CD-R/RW, NFS, стриммер или на жесткий диск. В случае краха систему можно будет очень легко восстановить, и в том числе с нуля, что может понадобиться не только в аварийных случаях, но и при переразбиении дискового пространства или, например, при переходе на RAID. Также этот пакет придется по вкусу тем, кому нужна просто возможность клонирования системы на несколько компьютеров с одинаковой конфигурацией, т.к. вместе с выбранными каталогами для сохранения на диск заносятся также и boot-секторы. Mondo Rescue поддерживает почти все файловые системы, о которых знает ядро Linux: ext2, ext3, JFS, XFS, ReiserFS, VFAT, а также LVM и RAID. Но его можно использовать и для резервирования не-Linux файловых систем, например NTFS. Mondo используют такие «монстры», как Siemens, HP (в США и Франции), IBM, NASA. Распространяется под лиценцией GPL как bridalware, плата берется за техническую поддержку.
Установка обычная для Linux.
#tar -xzvf mondo-1.75_cvs_20040110.tgz
# cd mondo-1.75_cvs_20040110
#./configure && make
#su
#make install
Для стабильной версии 1.67 этап конфигурирования не требуется. Для своей работы Mondo требует уже установленого Mindi и утилиты afio, которая создает файлы формата, подобного cpio, и может создавать многотомные архивы и сжимать их, сейчас эта утилита имеется практически во всех дистрибутивах, также для версии 1.75 потребуется утилита partimagehack, если чего-то нет, ссылки имеются на сайте в конце страницы Download. После этого в каталоге /usr/local/bin появятся файлы mondoarchive и mondorestore.
Mondo Rescue при архивировании данных имеет два режима работы: интерактивный и командный.
Для работы первого запускаем утилиту mondoarchive без параметров:
#usr/local/bin/mondoarchive
И далее начинаем отвечать на вопросы программы.
Выбираем устройство, на которое будем записывать архивные данные (рис. 1).
Рисунок 1
Если выбран CD-R[W], то следующим шагом будет задан вопрос о поддержке устройством технологии BurnProof и чуть позже попросят указать скорость привода и максимально возможный размер архивируемых данных (по умолчанию предлагается 650 Мб), в этом случае будет создано несколько образов, не превышающих указанный размер.
Далее выбираем степень сжатия данных. None выбирается, если streamer поддерживает аппаратное сжатие и Maximum при мощном процессоре. В остальных случаях достаточно средней степени сжатия (рис. 2).
Рисунок 2
Указываем на каталог, который собираемся архивировать. В случае полной архивации (исключая /tmp и /proc) это /. И в следующем окне перечисляем каталоги, которые необходимо исключить из списка архивации.
Следующий шаг интересный. Вас спросят, нормальное ли ядро в системе. В качестве подсказки написано, что пользователям Red Hat, Mandrake, SuSE и Slackware можно давать утвердительный ответ, а вот Debian и Gentoo используют нестандартные конфигурации ядра, и ответ – No. В этом случае необходимо использовать ядро, взятое с сайта www.mondorescue.org.
И последним шагом будет задан вопрос о проверке записанной информации.
И далее идет процесс создания образов, в ходе которого будет создан список каталогов, который будет поделен на наборы, после чего вызывается Mindi для создания загрузочного диска, описанного выше, после чего начнется процесс архивирования данных.
В командном режиме необходимо сразу ввести все необходимые опции в командной строке, все они хорошо описаны на соответствующей man-странице. Две опции -О и -V являются определяющими. Первая говорит об архивировании данных, вторая предназначена для проверки записанного.
Так, например, команда:
# mondoarchive -Oc 24 -g
запишет все данные на СD-R болванку со скоростью (опция -с) 12 и в так называемом GUI mode (-g), когда программа общается с пользователем в процессе работы. Если mondoarchive запускается при помощи cron, то ее использовать не нужно. Теперь, пока идет создание первого образа, вставляем пустой диск в привод и запускаем, когда потребуется следующий, то программа сообщит об этом. Если программа не может найти привод, то принудительно показываем на него, добавив строку -d 0,0,0 (свои цифры можно узнать, запустив cdrecord -scanbus). Проверить можно, введя:
#mondoarchive -Vc 24
При использовании диска СD-RW вместо -с ставим -w с указанием скорости, опция -r используется при работе с пишущим DVD-приводом, но скорость при этом указывать не надо, программа сама выберет максимальную, а если необходимо просто создать ISO-образы без записи на болванку, то ставим -i, -t используется при работе со стриммером и -n mount_point при архивировании на NFS (эта точка должна быть смонтирована до начала операции).
# mount 192.168.0.10:/home/nfs -t nfs /mnt/nfs
# mondoarchive -OVn 192.168.1.3:/home/nfs -g -s 650m
# umount /mnt/nfs
Опция -s устанавливает максимальный размер выходного файла. Если требуется исключить некоторые каталоги из списка архивируемых, то указываем на них при помощи -Е, например:
#mondoarchive -E /mnt/dos /mnt/cdrom -9 -Ow 12
Цифра -9 после каталогов означает степень компрессии, по умолчанию используется -3, -0 означает без компрессии данных, добавив опцию -L, можно использовать более быструю lzo-компрессию вместо bzip2.
Кроме командного режима можно сравнить записанное и в интерактивном. Для этого загружаемся с первого диска и вводим:
# compare
После чего следуем за инструкциями на экране, все изменившиеся файлы можно найти в /tmp/changed.txt.
Как видите, это инструмент, хотя и не для каждодневного резервного сохранения данных, т.к. нет возможности выборки изменившихся данных, но для полного восстановления системы или отдельных каталогов после различных неприятностей это довольно удобная программа.
Восстановление системы после сбоев
Mindi предлагает несколько режимов восстановления данных: Nuke, Interactive, Expert и Advanced. Разберем по порядку. Nuke Restore предназначен для полного восстановления системы или для клонирования системы. При этом все данные сначала удаляются, а затем в автоматическом режиме восстанавливаются из архивов. Для этого загружаемся с первого СD-ROM, при появлении приглашения нажимаем Enter и по запросу вставляем последующие диски и следим за выводом ошибок (/tmp/mondo-restore.log). Все остальное система сделает сама. Если требуется перед этим переразбить жесткий диск или восстановить не всю систему, то используется режим Interactive, позволяющий в удобном пошаговом режиме проделать эти операции. Для перехода в этот режим после загрузки с первого СD-ROM и появления приглашения набираем:
# interactive
После чего в окне «Editing mountlist screen», двигаясь при помощи клавиш курсора, возможно отредактировать текущую геометрию диска. А так после загрузки, отвечая yes/no на следующие вопросы, можно полностью восстановить все необходимое.
Do you want to partition your devices? No Т.е. хотим переразбить диск? Do you want to format them? No И форматировать его затем? Do you want to restore everything? No Надо ли восстанавливать всю информацию? Do you want to restore something? Yes Или хотим что-то восстановить выборочно? Which path do you want to restore? /home/hugo [e.g.] /home Какой именно раздел? Do you want to run LILO to setup your boot sectors? No Хотим ли восстановить LILO? |
Здесь хотелось бы отметить, что, введя:
# mondorestore –mbr
можно восстановить загрузочный сектор жесткого диска.
Введя при загрузке expert, попадаем в shell и делаем все, что необходимо по восстановлению системы вручную, такая себе замена спасательного диска, больше сказать здесь и нечего.
В режим Advanced можно перейти, например, после режима Еxpert и произведения в нем всех необходимых работ.
Для этого ввводим в строке приглашения:
# mondorestore
После чего выбираем источник, с которого будет происходить восстановление системы, указываем на файлы, которые хотим восстановить (рис. 3), и точку монтирования, которая будет считаться корневой при восстановлении данных. После чего выбранные файлы будут восстановлены.
Рисунок 3
Как видите, пакеты Mindi Linux и Mondo Rescue представляют собой довольно удобный и простой в использовании инструмент, который, несомненно, может существенно облегчить процесс восстановления данных после системного сбоя или помочь в клонировании системы. На этом все. Успехов.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|