Главная > Unix-like, Администрирование > FreeBSD: перенос ОС на другой жёсткий диск.

FreeBSD: перенос ОС на другой жёсткий диск.

Данная статья описывает процесс переноса установленной ОС FreeBSD с одного жёсткого диска на другой. Так же изложенный материал можно использовать для создания полного бэкапа системы, но лучше для этого использовать другие средства, о которых, возможно, я расскажу в следующих постах.

Итак, второй жёсткий диск уже подключен, система работает.

Переходим в папку /mnt, создаём в ней папку backup и там 3 папки - для корневого каталога / - root, для /usr, /var и /tmp - usr, var и tmp соответственно.

# cd /mnt && \
mkdir backup && \
cd backup && \
mkdir root var usr tmp

Переходим в режим суперпользователя. На всякий случай устанавливаем флаг kern.geom.debugflags в значение 16, это разрешит запись в таблицу партиций при работающей системе.

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

Затем запускаем sysinstall И выбираем пункт "Configure", далее "Fdisk". Выбираем из списка второй хард, у меня это "ad2". Удаляем все существующие слайсы (кнопка "D") и жмём "A" для выделения всего пространства под freebsd. Выделяем появившуюся строку и жмём "S", тем самым делаем раздел загрузочным. Жмём "W" для записи изменений, отвечаем на вопрос "Yes", выбираем установку без менеджера загрузок "Standard" (если он вам не требуется). Жмём "Q" для выхода.

Переходим к пункту Label. Здесь придётся немного схитрить и сделать всё в 2 этапа из-за некоторых глюков. Чтобы будущему корневому разделу присвоить букву "a" - надо указать точку монтирования обязательно "/", что и делаем. Затем меняем её (нажав букву "M") на "/mnt/backup/root" и убираем SoftUpdates (кнопка "S" - для корневого раздела не рекомендуется включать), далее записываем изменения кнопкой "W". Выходим (кнопка "Q") и запускаем заново sysinstall (если попытаться создать сразу все разделы, то почему-то иногда может возникнуть сообщение об ошибке). Переходим опять к пункту Label и продолжаем разбиение (корневой раздел создавать заново и монтировать не надо) не забывая менять точку монтирования. Сохраняем изменения и выходим из инсталлятора.

Если предыдущие танцы с бубном не помогли и по каким-то причинам sysinstall говорит Вам, что нет такого устройства как /dev/ad2s1* или нет такого файла /mnt/backup/*, то поробоуйте запустить команду "disklabel -e /dev/ad2s1" и посмотреть появились ли там записи якобы не созданных разделов. Скорее всего появились, тогда перезагружаем систему и запускаем sysinstall - теперь он их должен увидеть.

Результат выполнения disklabel -e /dev/ad2s1:

# /dev/ad2s1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 1048576 0 4.2BSD 0 0 0
b: 4194304 1048576 swap
c: 156280257 0 unused 0 0 # "raw" part, don't edi
t
d: 2097152 5242880 4.2BSD 2048 16384 28552
e: 26624000 7340032 4.2BSD 2048 16384 28552
f: 122316225 33964032 4.2BSD 2048 16384 28544

Если Вы перезагружались, то следует подмонтировать созданные до ребута разделы (у меня был не подмонтирован только корневой раздел):

# mount
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1e on /tmp (ufs, local, soft-updates)
/dev/ad0s1f on /usr (ufs, local, soft-updates)
/dev/ad0s1d on /var (ufs, local, soft-updates)
/dev/ad2s1d on /mnt/backup/tmp (ufs, local, soft-updates)
/dev/ad2s1f on /mnt/backup/usr (ufs, local, soft-updates)
/dev/ad2s1e on /mnt/backup/var (ufs, local, soft-updates)
# mount /dev/ad2s1a /mnt/backup/root

Перезагружаем систему и переходим в однопользовательский режим (при загрузке выбираем 4й пункт). Монтируем разделы командой "mount -a", монтируем созданные разделы командной:

# mount /dev/ad2s1d /mnt/backup/tmp; \
mount /dev/ad2s1f /mnt/backup/usr; \
mount /dev/ad2s1e /mnt/backup/var

Теперь выполняем следующую последовательность команд:

# cd /; pax -p e -X -rw . /mnt/backup/root; \
cd /var; pax -p e -X -rw . /mnt/backup/var; \
cd /usr; pax -p e -X -rw . /mnt/backup/usr; \
cd /tmp; pax -p e -X -rw . /mnt/backup/tmp

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

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

# mount
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1e on /tmp (ufs, local, soft-updates)
/dev/ad0s1f on /usr (ufs, local, soft-updates)
/dev/ad0s1d on /var (ufs, local, soft-updates)
/dev/ad2s1d on /mnt/backup/tmp (ufs, local, soft-updates)
/dev/ad2s1f on /mnt/backup/usr (ufs, local, soft-updates)
/dev/ad2s1e on /mnt/backup/var (ufs, local, soft-updates)
/dev/ad2s1a on /mnt/backup/root (ufs, local)

Если буквы совпадают у разных устройств, то всё в порядке, пропускаем следующий шаг. Если нет, как в моём случае - например, устройство, подмонтированое как /tmp, имеет букву "e" (ad0s1e) на старом винчестере, а на новом - "d" (ad2s1d), то у нас есть два пути. Первый - редактировать /mnt/backup/root/etc/fstab и менять буквы у монтируемых устройств (Внимание! Цифры менять не стоит, т.к. винчестер потом будет подключен вместо старого). Второй - выполнить команду:

# disklabel -e /dev/ad2s1

И отредактировать буквы у самих устройств. Лично я рекомендую Вам 1й способ, т.к. он проще и, имхо, правильней (и не придётся возиться с vi ;-) ).

Мой новый fstab выглядит так:

# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1d /tmp ufs rw 2 2
/dev/ad0s1f /usr ufs rw 2 2
/dev/ad0s1e /var ufs rw 2 2

Свопник у меня получил букву "b". Это можно узнать выполнив уже знакомую команду "disklabel -e /dev/ad2s1".

И так, теперь последний этап - перезагружаемся и переставляем новый винчестер на место старого и пробуем запустить. Если система не запускается, то скорей всего Вы что-то напутали в файле fstab, попробуйте отредактировать его заново.

Чтобы не переставлять винчестеры заново можно попробовать указать вручную устройство корневого каталога и перемонтировать для записи командой "mount -uw /dev/ad*s1* /" (по умолчанию - только чтение), затем монтируем раздел на /usr и редактируем в любимом редакторе fstab. Я столкнулся с такой проблемой из-за того, что сразу после того, как я перекинул систему на другой винт и подключил его на место старого - у меня сдохла шина и пришлось подключать винт как ad2, а в fstab'е он уже был прописан как ad0.

Пожалуйста, оцените полезность и качество данной статьи. Одна звезда - плохо, 5 - хорошо.
1/5. Мы будем признательны, если вы напишете комментарий с причиной низкой оценки.2/5. Мы будем признательны, если вы напишете комментарий с причиной низкой оценки.3/5. Мы будем признательны, если вы напишете комментарий с причиной низкой оценки.4/5.5/5. (Еще не оценили)
Загрузка...
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.