Сохранение и восстановление операционной системы FreeBSD.
Алексей Иванов [email protected]
Перед каждым из нас рано или поздно встает вопрос, как сохранить настройки любимого сервера (рабочей станции) и в случае падения оного все переустановить максимально быстро.
Когда мне в руки попал сервер под управлением FreeBSD, я, привыкший к линуксу, не знал с какой стороны к нему подойти.
Вот для таких, как я, и для всех остальных эта статья.
Сохранение FreeBSD:
Для начала определимся, что у нас есть и как с этим бороться. FreeBSD, в отличие от Линукса, хранит все свои конфигурационные файлы в строго определенных местах: /etc – системные настройки, /usr/local/etc – настройки сервисов и программ, установленных пользователем.
Конфигурация текущего ядра сидит в /sys/i386/conf/. По умолчанию там всегда есть файлы LINT и GENERIC – это, соответственно, описание всех возможных опций ядра (LINT) и конфигурационный файл ядра, собранного разработчиками FreeBSD (GENERIC). Там же хранятся конфигурационные файлы, созданные Вами, или до Вас (предыдущими админами (). Узнать какой файл является текущим очень просто: uname –a
bash-2.04# uname -a
FreeBSD gw.rissa.ru 4.1-RELEASE FreeBSD 4.1-RELEASE #0: Sun Oct 20 18:32:29 MSD 2002 [email protected]:/usr/src/sys/compile/GW i386
bash-2.04#
Как видите, здесь рассказано: какая система у вас установлена, когда, кем и с помощью какого файла, скомпилировано ядро.
Путь, указанный в выводе команды, ведет к директории, в которой подготовлены конфиги ядра, эта директория появляется в процессе компилирования ядра, а сам файл настроек лежит в /sys/i386/conf. В данном случае он называется GW.
Настройки пользовательских интерфейсов, оконных менеджеров, текстовых редакторов и т.д., как и в Линуксе, хранятся в домашних каталогах.
Еще один каталог, который нам будет нужен это /usr/ports/distfiles, там сложены дистрибутивы (исходники) всех программных продуктов, которые установлены с помощью системы портов.
Итак, мы подходим к самому интересному: сохранение всех настроек на отдельном носителе.
Если у вас в системе установлен CD-RW (а ввиду его низкой стоимости, и практической необходимости, он должен быть установлен!), то сохранение настроек, а также всевозможных файлов и файликов, становится делом простым и приятным.
Для начала, определимся с временным каталогом, куда мы скопируем все, что нам будет необходимо. Я предложил бы каталог /var/backup (у меня в системе в /var смонтирована самая большая партиция). Если вы не знаете что у вас где смонтировано, а также сколько места у вас на дисках занято или свободно, вам поможет команда df –H.
Теперь создадим каталоги (для удобства ():
mkdir /var/backup/etc
mkdir /var/backup/kernel
mkdir /var/backup/distfiles
mkdir /var/backup/local.etc/
mkdir /var/backup/home/
mkdir /var/backup/root/
И скопируем все необходимое:
cp /etc/* /var/backup/etc/
cp /sys/i386/conf/* /var/backup/kernel/
cp –R /usr/ports/distfiles/* /var/backup/distfiles/
cp –R /usr/local/etc/* /var/backup/local.etc/
cp –R /home/* /var/backup/home/ (очень часто в каталоге /home нет ничего ценного … поэтому подойдите к копированию этого каталога творчески ()
cp –R /root/* /var/backup/root/
Если ваша система сконфигурирована как www и/или ftp сервер, обязательно озаботьтесь сохранением каталогов www и ftp. Узнать где они легче всего из соответствующих конфигурационных файлов:
WWW (Apache):
-bash-2.05b# grep Root /usr/local/etc/apache/httpd.conf
ServerRoot "/usr/local"
DocumentRoot /usr/local/www/rissa
DocumentRoot /usr/local/www/story
DocumentRoot /usr/local/www/sierra
DocumentRoot /usr/local/www/opos
DocumentRoot /usr/local/www/myro
DocumentRoot /usr/local/etc/httpd/htdocs/squid-reports
DocumentRoot /usr/local/www/granitvtd
DocumentRoot /usr/local/www/fasko
DocumentRoot /usr/local/www/atdt
DocumentRoot /usr/local/www/mustang
DocumentRoot /usr/local/www/velobol
-bash-2.05b#
FTP (Proftpd):
Тут немного сложнее, но, заглянув в /usr/local/etc/proftpd.conf, вы найдете все, что вам нужно.
Теперь в каталоге /var/backup/ у вас сложено все, что будет вам необходимо, для восстановления системы.
Для записи на CDRW вы должны создать iso образ:
mkisofs –R –V “my_backup.26.03.03” –o /var/backup.iso /var/backup
Потом записать CD:
burncd -f /dev/acd0c –e –s 20 data /var/backup.iso fixate
После записи, необходимо проверить записанный диск:
mount /dev/acd0c /cdrom
cd /cdrom
ls -la
Итак, вы только что стали счастливым (и заметьте, одним из немногих, что грустно… ) обладателем резервной копии вашей системы FreeBSD. К слову, то, что мы сделали, не совсем резервная копия системы, потому, что на ее восстановление потребуется гораздо больше времени, чем положено.
Другим путем является создание «слепков» системы с помощью утилиты dd. Но об этом в другой раз.
Восстановление FreeBSD:
Ой!!! Случилось страшное!!!! Самый любимый сервер, работающий уже год, исправно хранящий весь web-сайт фирмы, каталог ftp и базы данных УМЕР!!!! НО! У нас есть заботливо созданная резервная копия, и мы готовы к восстановлению. Итак, запасаемся сигаретами, кофе, пивом, кока-колой и приступаем к решению внезапно возникшей задачи.
Шаг 1: Установка FreeBSD
Начиная восстановление FreeBSD, вы должны иметь дистрибутив системы и ваш диск с резервными данными. Для начала, проведем классическую установку FreeBSD.
Описание установки системы выходит за рамки данной статьи, но несколько моментов мы должны отследить:
1. При разделении дискового пространства на разделы, необходимо делить следующим образом:
/ -- 300 Mb
/usr -- 2 Gb
/var -- все остальное
На самом деле, такое деление дискового пространства, исключительно моя идея, в мире есть много мнений как это делать правильнее, вы можете разделить так как вам удобно, но при любом разделении необходимо учитывать следующее: рутовый каталог практически не изменяется в процессе работы системы и не требует много места, в каталоге /usr и /usr/local находятся программы и библиотеки, установленные вами из системы портов, или каким либо другим способом. Максимально возможный размер каталога /usr не превышает 3 Gb – это если установить вообще все! В каталоге /var изначально находятся логи системы, почтовые файлы пользователей, то есть файлы, постоянно изменяемые, и логично было бы туда же сложить и все наши данные, а также логично было бы выделить для /var как можно больше места. Исходя из этих соображений, я и предложил данное разбиение диска.
2. На вопрос об установке системы портов НЕОБХОДИМО ответить "Да"
Это очень важный момент. Вопрос об установке системы портов, проходит как-то незаметно, в тот момент, когда вы выбираете тип устанавливаемой системы. Единственное, что я вам могу предложить, что бы не пропустить этот вопрос – внимательно читайте все вопросы установщика и давайте обдуманные ответы (.
3. После установки, зайдите в систему пользователем root и дайте следующие команды:
rmdir -f /tmp
ln -sf /var/tmp /tmp
Очень часто нормальная работа сервера нарушается из-за того, что в каталоге /tmp (соответственно в рутовом разделе) заканчивается место, данные команды устраняют эту проблему, первая стирает каталог /tmp, вторая создает символическую ссылку /tmp на каталог /var/tmp.
Шаг 2: Скомпилировать ядро системы:
Компиляция ядра системы – это полумагический процесс, после которого «у вас все будет хорошо!» (. Сейчас подавляющее большинство пользователей Linux (помните для кого эта статья?) не видят необходимости в компиляции ядра, потому что за них обо все позаботились разработчики дистрибутивов. В мире FreeBSD немного другой подход. Дистрибутив устанавливается с помощью ядра GENERIC, это ядро специально создано для единственной цели: заставить FreeBSD работать на любом железе, из списка поддерживаемого. В GENERIC отключены такие полезнейшие вещи как firewall, PPP и другие. Таким образом, компиляция ядра в FreeBSD – это жизненно важный процесс!
Но не все так грустно (. Если вы помните, то в начале статьи мы выяснили, на каком ядре работает наша машина, и скопировали конфигурационный файл этого ядра на резервный диск. Пришло его время.
Прежде всего, необходимо скопировать этот файл в каталог /sys/i386/conf/
cp /cdrom/kernel/* /sys/i386/conf/
После мы можем скомпилировать ядро:
cd /sys/i386/conf/
config MYKERNEL
(MYKERNEL – имя конфигурационного файла ядра)
cd ../../compile/MYKERNEL
make -DNO_MODULES depend && make -DNO_MODULES && make -DNO_MODULES install
После довольно продолжительного сопения ваша система будет подготовлена к работе. В корневой (/) директории вы можете увидеть, что предыдущее ядро kernel переименовано в kernel.old, и добавлен новый файл kernel. В случае какой-то супернепредвиденной ошибки, вы можете загрузится в систему с помощью старого ядра kernel.old.
Само собой, после конфигурации ядра необходимо перегрузится.
Шаг 2: Восстановление системных настроек
Здесь все просто. Скопируйте из резервной копии каталог /etc.
сp –Rf /cdrom/etc/* /etc
В результате этого действия, вы получите уже настроенное соединение с интернетом, сконфигурированный firewall (он у вас был?), готовый файл /etc/master.passwd и т.д.
Для введения в действие этих настроек нет нужды перегружаться. Достаточно выйти в single user mode и потом зайти обратно в Multiuser.
init 1
После непродолжительного хрюканья система спросит вас про шелл по умолчанию, нажмите Enter. Когда вы увидите в качестве приглашения одинокую решетку (#), скажите exit. Система заново перечитает файл /etc/rc.conf и запустит все, что там описано.
Шаг 3: Установка необходимых пакетов
В процессе сохранения системы, вы определились с тем, что работает в вашей системе. На диске с резервными данными у вас есть дистрибутивы (исходники) всех программ, установленных в вашей системе с помощью портов.
Для восстановления программного обеспечения сервера, у вас есть два пути:
Шаг 4: Заключительные настройки системы:
Все, мы уже на финишной прямой. Осталось совсем немного! Во первых необходимо восстановить содержимое каталога /usr/local/etc
cp –Rf /cdrom/local.etc* /usr/local/etc/
Во-вторых, вам надо восстановить все ваши данные: содержимое www-сервера, ftp-каталоги, файлы баз данных и т.д.
После всего вышеперечисленного вы можете перегрузится (чтобы еще раз убедиться, что все работает).
В конце как всегда несколько общих слов: