Понадобилось тут мне перенести одну машинку с freeBSD на слегка пожирнее дисочек, вот и появилась данная статья 🙂

В данном случае, можно было бы воспользоваться клонированием уже существующим программным raidом, но мы пошли другим путем, типа что бы правильнее 🙂

Существует старый и новый метод перенесения ОС на другой винт:
1. С помощью dump и restore (использовалась на более старых версиях ОС)
2. С помощью pax (новый, довольно таки шустрый метод)

Первым способом, это делается так:

1. Подключаем новый жёсткий диск в систему с FreeBSD (/dev/ad6s1)

2. Создаём временные папку и подпапки:

# mkdir /backup
# mkdir /backup/root
# mkdir /backup/usr
# mkdir /backup/var
# mkdir /backup/tmp

3. С помощью /stand/sysinstall разбиваем новый диск на разделы так же как это сделано на старом. Убедитесь, что /dev/ad0s1a соответствует /dev/ad6s1a — размер /dev/ad6s1a может
быть большим чем на /dev/ad0s1a. PS. Когда я такое делал первый раз — долго не мог понять, почему у меня не создается слайс с разделом «а», то есть для примера /dev/ad6s1a. Открою секрет, нужно разбить его с указанием в настоящий корень системы, только НЕ ПРИМЕНЯЙТЕ значения, после этого нажмите «m» и перемонтируйте в директорию для бекапа (указанную выше — /backup/root)

4. Загружаемся в single user

5. Монтируем разделы:

# mount /dev/ad6s1a /backup/root
# mount /dev/ad6s1d /backup/var
# mount /dev/ad6s1e /backup/usr
(если есть ещё какие разделы - указываем здесь, по принципу)

6. Переносим систему:


# ( dump -0f - / ) | ( cd /backup/root ; restore -rf - )
# ( dump -0f - /var ) | ( cd /backup/var ; restore -rf - )
# ( dump -0f - /usr ) | ( cd /backup/usr ; restore -rf - )

7. Размонтируем
# umount /backup/root
# umount /backup/var
# umount /backup/usr

8. Включаем Soft Updates

# tunefs -n enable /dev/ad6s1a
# tunefs -n enable /dev/ad6s1d
# tunefs -n enable /dev/ad6s1e

Выключаем питание сервера:

9. # halt -p

Вот теперь можно убрать из системы старый жёсткий диск, а на его место поставить новый.

Новым способом, это делается так:

Делаем, по пунктам первого способа, до 3го включительно. Только когда разбиваете диск, все указываете изначально в /backup/*, а только root, по заметке приведённой выше. И монтируем прямо там. PS. Обратите внимание, что бы вы не примонтировали разделы нового винта вместо работающей системы, вы должны примонтировать именно в подразделы директории /backup/.

# cd /backup/

Устанавливаем флаг kern.geom.debugflags в значение 16, это разрешит запись в таблицу партиций при работающей системе.

# sysctl kern.geom.debugflags=16
kern.geom.debugflags: 0 -> 16

Проверяем, что у нас разделы подмонтированы, если нет — монтируем. (пункт 5, выше)
Проверяем:

# mount
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1e on /usr (ufs, local, soft-updates)
/dev/ad0s1d on /var (ufs, local, soft-updates)
/dev/ad6s1a on /mnt/backup/root (ufs, local, soft-updates)
/dev/ad6s1e on /mnt/backup/usr (ufs, local, soft-updates)
/dev/ad6s1d on /mnt/backup/var (ufs, local, soft-updates)

Делаем backup:

# cd /; pax -p eme -X -rw . /mnt/backup/root;
# cd /var; pax -p eme -X -rw . /mnt/backup/var;
# cd /usr; pax -p eme -X -rw . /mnt/backup/usr;

Команда pax предназначена для записи и чтения файловых архивов, а так же для копирования директорий. Параметр -p задаёт некоторые опции копирование. В частности «e» означает «сохранять всё» (ID пользователя, группы). Флаг -X означает что при копировании указанной папки не директории имеющие разные идентификаторы устройств (device ID) не будут игнорироваться. Флаг -rw (использованный формат: pax -r -w [file …] directory) означает чтение из file и запись их в directory.

Выполняем команду df -h смотрим что бы были совпадения размерах и метках устройств:

# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 1.9G 384M 1.4G 21% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1d 39G 4.8G 31G 14% /usr
/dev/ad0s1e 7.7G 547M 6.6G 7% /var
procfs 4.0K 4.0K 0B 100% /proc
/dev/ad6s1a 4.2G 384M 3.8G 1% /backup/root/
/dev/ad6s1d 220G 4.8G 215G 2% /backup/usr
/dev/ad6s1e 8.2G 544M 7.7G 1% /backup/var

Теперь такой ньюансик. Если винт остается на это шлейфе, то нужно подправить /backup/root/etc/fstab, а если нет — то просто выключаемся и меняем винт, снова включаем.
И то что на новом разделе (/backup/var) не всё скопировалось — не страшно, это же VAR и мы это делали при рабочей системе..

Поздравляю, вы на новом винте, и я тоже 😉

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

http://noted.org.ua/?p=644


Также, вы можете отблагодарить меня переслав любую сумму на любой кошелек WebMoney, для поддержания данного ресурса. Или просто админу на пиво ;)

Кошельки для получения благодарности:
R386985788805
U234140473141
Z147712360455

На данной странице нет комментариев, возможно они закрыты. Если Вы хотите оставить свой комментарий, перейдите на специально созданный раздел

Add your comment now

You must be logged in to post a comment.