Главная | Контакты



Главная > Операционные системы > UNIX > BSD > FreeBSD

Перенос FreeBSD на другой жесткий диск

Сегодня настал тот день, когда дошли руки поменять винчестер на сервере. Ведь стоит на нем сейчас жесткий диск всего лишь на 40 GB. Позор. Знаю: Но большего винта на момент установки системы полгода назад просто не было. Да к тому же, для удовлетворения нужд больше и не требовалось. Однако теперь необходимо сделать на этой машине такую себе файлопомойку. Потом организовать расшаренный Samba ресурс, который был бы доступен как из Win систем (из дома и по VPN с работы) так и из BSD системы. На сервере можно будет сложить свой mp3 и софтовый архивы, а также различного рода документацию и фотоархив.

Итак начинаем. В распоряжении имеется:

  • Жесткий диск #1 - 40 GB. На диске один раздел, разбитый на BSD слайсы. Этот винт следует заменить, и перенести с него систему на винчестер #2, добавив кроме существующих разделов еще один для файлового хранилища.
  • Жесткий диск #2 - 120 GB. На нем два раздела NTFS. Один раздел с

    виндой, второй - для хранения всякого "барахла". Этот винт следует установить на сервер, предварительно сохранив данные с него на третий

    жесткий диск, чтобы потом восстановить их на диске #1.
  • Жесткий диск #3 - 200 GB. На нем три раздела. NTFS с Windows, NTFS

    для файлов и пр., и UFS2 с рабочим FreeBSD десктопом. Этот винт, а точнее его второй NTFS раздел, послужит нам временным хранилищем

    бекапов предыдущих двух HDD.
  • Hiren's Boot CD, с комплектом программ, для работы с жесткими

    дисками. В частности нам нужен будет Partition Magic (разбивка жестких

    дисков) и Norton Ghost (создание образов разделов жесткого диска).
  • /dev/hands && /dev/head

Первым делом на диске #2 в Windows системе создаем расшаренную папку для бекапа файловых систем сервера. Поскольку сервер в локальной сети (на балконе), создать дампы и выложить их на соседнюю машину не составит труда. Для создания дампов используем стандартную BSD'шную утилиту dump. Для небольшой автоматизации процесса создания дампов, пишем скриптик sysbackup_lev0.sh:

#!/bin/sh
WFS="/SHARED_FOLDER-MOUNT_POINT/bsd-fs"
`/bin/mkdir -p ${WFS}/$(date +%Y-%m-%d)`
# Backup USR FS
 `/sbin/dump -L -0auf ${WFS}/$(date +%Y-%m-%d)/usr_fs.dump /usr`
# Backup HOME FS
 `/sbin/dump -L -0auf ${WFS}/$(date +%Y-%m-%d)/home_fs.dump /home`
# Backup VAR FS
 `/sbin/dump -L -0auf ${WFS}/$(date +%Y-%m-%d)/var_fs.dump /var`
# Backup TMP FS
 `/sbin/dump -L -0auf ${WFS}/$(date +%Y-%m-%d)/tmp_fs.dump /tmp`
# Backup ROOT FS
 `/sbin/dump -L -0auf ${WFS}/$(date +%Y-%m-%d)/root_fs.dump /`

В данном случае, переменная "WFS" указывает нам путь, по которому будут сохраняться данные. Папка /BACKUP - это расшаренная папка на Windows компьютере. Монтируется она таким образом:

#!/bin/sh
 `/usr/sbin/mount_smbfs //USERNAME@HOST_NAME/SHARED_FOLDER /SHARED_FOLDER-MOUNT_POINT`

- где: USERNAME - имя пользователя, которому разрешено монтировать ресурс SHARED_FOLDER на машине HOST_NAME. Монтирование производится в каталог /SHARED_FOLDER-MOUNT_POINT Так же машина HOST_NAME должна быть доступна в локальной сети.

Следует отметить, что в данном случае используется еще и конфигурационный файл /etc/nsmb.conf, в котором указаны дополнительные параметры подключения.

[default]
workgroup=WORKGROUP_NAME
[HOST_NAME]
charsets=koi8-r:cp866
addr=192.168.10.2
[HOST_NAME:USERNAME]
password=USER'S_PASSWORD

- где: USER'S_PASSWORD пароль пользователя USERNAME на компьютере HOST_NAME рабочей группы WORKGROUP_NAME

Данный конфигурационный файл в принципе не обязателен. Но у меня он для того, чтобы при загрузке системы автоматически монтировать указанный раздел как сетевую папку. Когда все готово, останавливаем все вспомогательные серверы, нежизненноважные для работы системы и стартуем скрипт.

./sysbackup_lev0.sh

В принципе, можно ничего и не останавливать. Попросту пока сервер стоит без связи с внешним миром, такие вещи как web или smtp на нем неактуальны.

Покурим, пока система бекапит разделы. Этот процесс может быть достаточно долгий, если на разделах, особенно /usr или /home слишком много файлов. Но когда все будет закончено, можно выключить машину (она нам пока не понадобится) и приступить к созданию образов NTFS разделов на жестком диске #2.

Подключаем диск #2, загружаемся в Windows с диска #3 и сохраняем некоторые данные со второго диска на третий, то что проще всего скопировать. После этого, перестартовываем с загрузочного CD Hiren's и с помощью Norton Ghost сохраняем разделы диска #2 на диск #3.

Как пользоваться такими вещами как Partition Magic и Norton Ghost рассказывать, думаю, нет смысла. ПО довольно понятное, по крайней мере интуитивно. Когда разделы с диска #2 сохранены, убиваем их Партишн Меджиком и оставляем 120 гигабайт свободного дискового пространства под нужды сервера. Отключаемся.

Подключаем винчестер #1 с BSD системой и разбиваем его тем же Партишном на NTFS разделы. Разбили. Переходим к Norton Ghost и восстанавливаем сохраненные образы NTFS разделов на диск #1. Восстановили. Перезагрузились. Все работает. Вот только загрузчик остался BSD'шный. Ну да Бог с ним. Пусть будет.

Для восстановления файловых систем FreeBSD на новом жестком диске 120 GB, пойдем по пути наименьшего сопротивления. Для этого устанавливаем на диск #2 чистую систему FreeBSD в минимальной конфигурации. Установка FreeBSD довольно хорошо описана русским языком в Руководстве, потому останавливаться на этом не буду.

Единственное замечание: перед установкой системы, в момент создания UFS разделов, кроме стандартных добавим еще слайс для файлового хранилища. Когда все будет готово и мы будем иметь чистую рабочую систему: пойдем опять по пути наименьшего сопротивления. Как упоминалось выше, на диске #2 имеется десктопная FreeBSD. А потому, последующие действия таковы:

  • - Загрузиться (диск #2 подключен)
  • - Смонтировать UFS разделы диска #2.
  • - Смонтировать раздел NTFS на диске #3 с бекапами файловых систем сервера.
  • - Посредством стандартной BSD'шной утилиты restore восстановить прежние данные с сервера на разделы / /tmp /home/ /var /usr.
  • - Проверить файл /etc/fstab серверной системы на диске #2 и

    убедиться, что в нем правильно прописаны точки монтирования и

    устройства, которые наша система увидит при загрузке.

Работа с утилитой restore предельно проста. Для восстановления данных с ее помощью следует перейти на нужную папку (точку монтирования файловой системы) и указать команде, из какого файла разворачивать бекап. Например:

# cd /mnt/servers-fs/usr
# restore rf /mnt/ntfs-backups/bsd-fs/2008-01-03/usr_fs.dump

Все. Процесс пошел. Тоже самое проделываем позднее и для остальных смонтированных UFS разделов.

Вообще, данную процедуру можно производить прямо на "живой" системе, на "лету" меняя файлы. Но я предпочитаю так. Также, можно было бы и не устанавливать чистую систему вообще, а всего лишь, с помощью меню программы sysinstall отформатировать должным образом диск и создать разделы. Но, я снова предпочел сделать именно таким образом, дабы убедиться, что все в порядке. Установленная система загружается нормально.

Собственно, ничего сложного. Главное сделать все необходимые бекапы, ну и чтобы в момент разворачивания бекапа не пропало электропитание, а то заново все прийдется делать.

После разворачивания всех BSD бекапов, снимаем жесткий диск #2 и ставим в корпус серверной машинки. Включаем, проверяем. Все запустилось и работает. Замечательно! Теперь можно подумать и о файлопомойке.


Главная > Операционные системы > UNIX > BSD > FreeBSD