Понадобилось тут мне перенести одну машинку с 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 и мы это делали при рабочей системе..
Поздравляю, вы на новом винте, и я тоже