FreeBSD: досвід одного оновлення

1

Вступ

Протягом останніх 2-х місяців нова інформація на сайті практично не з'являлася. Справа у тому, що я повністю сконцентрувався на задачі радикального оновлення ПЗ на сервері. FreeBSD версії 6.4, яка стояла досить тривалий час вже давно не підтримувалася розробниками -- останні оновлення з безпеки та виправлення помилок були, здається пару років тому. Актуальна на сьогодні стабільна версія -- вже 8.3, і ось-ось стабільною стане вже 9-та. А тут ще почали виникати проблеми з оновленням окремих пакетів -- перестали "збиратися" на застарілій ОС. Тому після декількох місяців збирання з силами я розпочав капітальний ремонт сервера. Як я вже сказав, процес зайняв близько 2-х місяців. Два оновлення версії ОС, оновлення десятків пакетів, серед яких MySQL, Perl, Python. Намагався робити все надійно, безпечно, щоб не втратити роботу останніх 6-7 років. Ну і зважте на те, що все робилося, як то кажуть, в вільний від основної роботи час. Отже, як воно все було...

Дія перша: резервне копіювання даних

З початку, звичайно, резервне копіювання інформації. Метою була можливість максимально надійно відновити сервер у разі, якщо внаслідок своїх дій я повністю все знищу. Найкращій метод для цього -- створення фізичного образу жорсткого диску. Для цього обрав Clonezilla. Для збереження даних вирішив скористатися своїм USB жорстким диском Western Digital Passport.

Зробити резервування даних з першого разу не вдалося. Справа у тому, що Clonezilla наявна в 32- та 64-бітній версіях. На роботі, де використовуються потужні сучасні сервери, я звик користуватися 64-бітною версією, тому її і взяв у свій перший приїзд до датацентру. Завантажитися з диску не вдалось і резервування довелося відкласти. Втім, цей приїзд все одно, вважаю, був корисним як свого роду тренування.

На другий раз нормально завантажився та почав копіювання. Неприємною несподіванкою, втім, стала надто низька швидкість процесу. Іншим "сюрпризом" стало те, що базована на Linux Clonezilla не підтримує тип файлової системи, що використовується FreeBSD (sysid 165 згідно інформації від fdisk). Тому великий розділ на диску, який у якості окремої файлової системи використовувався для збереження даних (на іншому розділі встановлена власне операційна система), зберігався за допомогою не надто ефективної програми dd, яка виконує збереження всіх елементів файлової системи, не аналізуючи, містять вони дані, чи ні. Забігаючи на перед, скажу, що цей розділ нормально таки не зберігся. Принаймні, зробити пізніше тестове відновлення цих даних мені не вдалося. Під час збереження даних я підозрював, що таке може статися, проте сильно не переймався, оскільки під час роботи над операційною системою та пакетів цей розділ не змінювався б і вірогідність його пошкодження була вкрай мала.

Загалом, зробив висновок, що Clonezilla, зручна та ефективна для резервування Linux і навіть Windows, не підходить для резервування FreeBSD. Наступного разу потрібно взяти щось інше.

Дія друга: моделювання процесу

Оновлення операційної системи, тим більше на 2 версії, до того ж я збирався робити все віддалено, є доволі відповідальним та ризикованим процесом. Якась помилка цілком могла примусити мене займатися довгим відновленням інформації на диску, для чого знов потрібно було б їхати до дата-центру. Розуміючи це, я вирішив змоделювати процес оновлення системи на віртуальній машині.

Віртуальну машину створив за допомогою Oracle VirtualBox. За допомогою тієї самої Clonezilla відновив в віртуальній машині інформацію з даних резервування серверу. Саме на цьому етапі я зрозумів, що інформація з розділу даних не може бути відновлена. Проблеми в цьому поки що не було, адже з сервером я ще нічого небезпечного не робив.

Операційна система з серверу успішно завантажилась в віртуальній машині і я почав оновлення, зберігаючи миттєві знімки -- "снепшоти", після кожної операції. В своїх діях я керувався інструкцією, що у FreeBSD знаходиться у файлі /usr/src/UPDATING. Не зважаючи на наявність інструкції, робив власні нотатки щодо кожного кроку.

В цілому оновлення системи та пакетів на віртуальній машині пройшло цілком успішно. Окремі помилки, яких я припускався, легко виправлялися шляхом повернення до останнього "снепшоту". Отже після моделювання я відчув впевненість у власних силах і готовність до роботи на "живому" сервері.


1

Copyright © 2012 Dnipro Networks
Всі права захищені. Використання повністю або частково оригінальних матеріалів з цієї сторінки має супроводжуватися посиланням на сайт Dnipro Networks.