Перед кожним з нас рано або пізно встає питання, як зберегти налаштування улюбленого сервера (робочій станції) і в разі падіння оного всі перевстановити максимально швидко.

Коли мені в руки потрапив сервер під керуванням 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.05 b# 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.05 b#

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.

ср Rf /cdrom/etc/* /etc

У результаті цього дії, ви отримаєте вже налаштоване з’єднання з інтернетом, сконфігурований firewall (він у вас був?), готовий файл /etc/master.passwd і т. д.

Для введення в дію цих налаштувань немає потреби перевантажуватися. Достатньо вийти у single user mode і потім зайти назад в Multiuser.

init 1

Після нетривалого хрюкання система запитає вас про шелл за замовчуванням, натисніть Enter. Коли ви побачите в якості запрошення самотню ґрати (#), скажіть exit. Система заново перечитає файл /etc/rc.conf і запустить все, що там описано.

Крок 3: Установка необхідних пакетів

У процесі збереження системи, ви визначилися з тим, що працює у вашій системі. На диску з резервними даними у вас є дистрибутиви (исходники) всіх програм, встановлених на вашій системі з допомогою портів.

Для відновлення програмного забезпечення сервера, у вас є два шляхи:
Приєднати машину до інтернету і поставити все, що потрібно з портів. При цьому всі вихідні коди програм будуть гойдатися з Мережі. Плюсом такого підходу є те, що ви не замислюєтеся над залежностями, не звертаєте уваги на «свіжість» програмних продуктів. Мінус полягає в тому, що ви витрачаєте досить багато трафіку і часу (час йде на викачування). Я, наприклад, найчастіше використовую саме цей шлях.
Скопіювати з вашого резервного диска всі з директорії /cdrom/distfiles (ви ж змонтували CD /cdrom ?). Потім зібрати все, що вам необхідно. Плюси і мінуси тут суворо міняються місцями (. Але зверніть увагу, що система портів була розроблена саме для використання Інтернету, будь-які інші способи складання програм з портів можуть не дати результату.

Крок 4: Прикінцеві налаштування системи:

Все, ми вже на фінішній прямій. Залишилося зовсім трохи! По-перше, необхідно відновити вміст каталогу /usr/local/etc

cp Rf /cdrom/local.etc* /usr/local/etc/

По-друге, вам треба відновити всі ваші дані: вміст www-сервера, ftp-каталоги, файли баз даних і т. д.

Після всього перерахованого вище ви можете перевантажиться (щоб ще раз переконатися, що все працює).

Автор: Олексій Іванов

sys — Пт Травень 16, 2003 1:30 pm
Заголовок: кілька моїх зауважень по статті

1 найбільший розділ це саме /usr
його, до речі, теж бажано побити

2 архівацію робити краще в tar.gz

3 компіляція ядра описаная документації
cd /usr/src/sys/i386/conf
/usr/sbin/config KERNEL
cd ../../compile/KERNEL
make depend
make
make install
така послідовність важлива тому що дозволяє відловити помилки на всіх етапах