Инструменты пользователя

Инструменты сайта


unix:mv-to-new-hdd

Перенос FreeBSD на новый винт

В первую очередь, смотрим, как были смонтированы наши разделы на старом винте:

proxy.dtservice.ru:~#> df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a    989M     73M    837M     8%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ad0s1d    2.9G     10K    2.7G     0%    /tmp
/dev/ad0s1f     24G    6.9G     15G    32%    /usr
/dev/ad0s1e    6.8G    4.1G     2.1G   66%    /var
devfs          1.0K    1.0K      0B   100%    /var/named/dev

Подключаем новый винт в принципе к любой машине. Нарезаем на нем точно такие же слайсы (имеется ввиду буквы, размер делаем таким какой нам требуется), форматируем, делаем загрузочным. Все это делается при помощи загрузочного диска с FreeBSD.

Подключаем старый винт и новый. Грузимся со старого в Single mode. Монтируем все наши разделы:

#mount -a

Создаем нужные промежуточные директории - точки монтирования для слайсов нового диска:

cd /mnt
mkdir root
mkdir usr
mkdir var

Второй винт я подключал как мастер на IDE2. таким образом обращаться к нему нужно как ad2 с соответствующими поправками на имена слайсов. Примонтируем разделы нового диска в созданные нами точки монтирования:

mount /dev/ad2s1a /mnt/root
mount /dev/ad2s1f /mnt/usr
mount /dev/ad2s1e /mnt/var

На этом этапе все готово для переноса. Заходим в нужный раздел и копируем старые данные на новый диск:

cd /
find . -xdev -print | cpio -m -p -V /mnt/root
cd /var
find . -xdev -print | cpio -m -p -V /mnt/var
cd /usr
find . -xdev -print | cpio -m -p -V /mnt/usr

На FreeBSD 8.2 эти команды вызывают ошибку. Подправили утилиту cpio - из нее исчезла опция -V, вместо нее используется -v. Кроме того, если заливать разделы на уже имеющуюся операционку, то файлы не будут переписаны. И если мы потом стартанем с такого винта, то получим ту же самую систему, не ту которую пытались перегнать на новый винт. Связано это с тем, что по умолчанию имеющиеся файлы не переписываются. Чтобы исправить это, команды должны быть такими:

cd /
find . -xdev -print | cpio -p -m -v -u /mnt/root
cd /var
find . -xdev -print | cpio -p -m -v -u /mnt/var
cd /usr
find . -xdev -print | cpio -p -m -v -u /mnt/usr

Опции:
-p - Читать листинг файлов со стандартного ввода и копировать файлы в указанный каталог.
-m - Устанавливать время модификации и создания такое как у исходных файлов.
-v - Печатает каждое имя файла на stderr, вместе с -t выводит более детальный листинг по каждому файлу. Вместо устаревшей -V.
-u - Безусловно переписывать имеющиеся файлы.

То же самое при помощи dump / restore:

cd /mnt/root; dump -f - / | restore -rf -
cd /mnt/var; dump -f - /var | restore -rf -
cd /mnt/usr; dump -f - /usr | restore -rf -

Вообще, одна из гуру FreeBSD и Unix вообще Elizabeth D. Zwicky проводила сравнительный тест различного рода программ копирования / восстановления. Со всеми тестами справились только dump / restore. Поэтому на заданный вопрос, что лучше использовать, она ответила: только dump. Сравнительные тесты убедительно показывают, что эти утилиты справились со всеми задачами на отлично.

/tmp я не копировал. Там копировать нечего. Нужно только не забыть поправить разрешения этого раздела, после того как копирование будет завершено и мы загрузимся с нового диска. Туда как правило должны иметь возможность писать все.

unix/mv-to-new-hdd.txt · Последние изменения: Sat, 10 Dec 2011 15:11 (внешнее изменение)