среда, 10 сентября 2008 г.

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


...и такое в жизни бывает :( Диск начал грязно ругаться в dmesg на ошибки чтения-записи. Значит, надо переезжать. Система у меня версии 7.0, но, кажется, процедура эта уже давно не изменялась.
Выключаемся, вставляем новый диск (у меня он ad2). Он у меня немного поменьше, потому внимательно смотрим
$ df -m
- и думаем, какую файловую систему насколько можно ужать.
Подумали - можно приступать.
# sysinstall
идем в меню Configure->Fdisk, в нем удаляем существующие партиции и создаем одну новую на весь диск. Сложностей никаких. Есть тонкость - выходить нужно по Q, не нажимая W. (Если в задумчивости нажали, катастрофы нет - но перед следующей операцией придется перегружаться).
На вопрос про Boot Manager отвечаем Standard.
Переходим в пункт меню Label.
Здесь нас поджидает еще одна тонкость. Будущий корневой раздел должен быть создан с меткой ad2s1a, но sysinstall не позволяет задавать метку вручную, а при указании точки монтирования отличной от / автоматически присваеват имя ad2s1d. У меня сработала такая последовательность: сперва создал раздел с точкой монтирования / - и он получил правильную метку, а потом нажал M - и изменил точку монтирования на /tmp/root.
Далее без каких-либо сложностей создаются раздел подкачки ad2s1b и файловые системы с точками монтирования /tmp/usr и /tmp/var (соотношение меток и точек монтирования сверяйте с вашим /etc/fstab - если, конечно, у вас нет охоты переделать все по-новому).
Выход из Label нажатием W (появляется большое ругательное окно, с вопросом, понимаете ли вы, что творите. Нужно ответить Yes) и потом Q.
Выходим из sysinstall и смотрим на новые файловые системы:
$ mount
Теперь переносим на них содержимое старого диска:
# cd /
# find . -xdev -print | cpio -p -m /tmp/root
# cd /usr
# find . -xdev -print | cpio -p -m /tmp/usr
# cd /var
# find . -xdev -print | cpio -p -m /tmp/var
Чтобы веселее было ждать конца копирования, у cpio можно добавить опцию --verbose
(команда копирования может быть и такой: pax -rw -X -pe . /tmp/root - так короче, но вариант find+cpio просто привычнее - и переносимее - кто-нибудь видел pax напр. под Linux? - про другие unix-like системы уже молчу).
Вот и весь процесс. Выключаемся, ставим новый диск на место старого - и грузим систему.

Комментариев нет: