На сервере FreeBSD использовалось два диска: рабочий и резервный (полная копия). После того, как один из дисков "приказал долго жить" было принято решение о смене на два аналогичных. Сейчас подключены старый диск и два новых. Пытаюсь сделать полную копию как учат ЧАВО и форумы:
На новом диске создаю через /stand/sysinstall слайсы, далее не покидая оболочки создаю первый раздел для будущей корневой / и записываю. Монтирую в /mnt/. Выхожу, размонтирую. Затем через disklabel меняю обозначение нового раздела с ad2s1e на ad2s1a. Затем снова в sysinstall создаю остальные разделы. Записываю, выхожу. Копирую содержимое старого диска на новый при помощи
# tar cplf - / /usr/ /var/ /var/ftp/ | (cd /mnt; tar xvpf -)
(у меня ftp на отдельном разделе)
Далее копирую загрузочную запись
# dd if=/dev/ad0 of=/dev/ad2 bs=512 count=1
Выключаю машину. Перекидываю шлейф так, чтобы новый диск был первичным на первом канале IDE. Включаю и получаю
invalid partition
Гружусь со старого диска и в sysinstall вижу что слайсы имеют совершенно другой размер, чем я определял ранее.
В чём я ошибаюсь?
Может проблема в переносе загрузочной записи? Или проблема в некорректном определении геометрии (при начале разбивки диска sysinstall ругнулась на геометрию)?
>На новом диске создаю через /stand/sysinstall слайсы, далее не покидая оболочки создаю
>первый раздел для будущей корневой / и записываю. Монтирую в /mnt/.Вы определили слайсы на /dev/ad2 .
>Далее копирую загрузочную запись
># dd if=/dev/ad0 of=/dev/ad2 bs=512 count=1После этой операции Вы снова переопределили слайсы на /dev/ad2 .
Воспользуйтесь boot0cfg .
Копировать тома /dev/ad0s1[ade] на /dev/ad2s1[ade]
лучше через утилиты dump/restore, как написано в
http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/disks.h...
>>На новом диске создаю через /stand/sysinstall слайсы, далее не покидая оболочки создаю
>>первый раздел для будущей корневой / и записываю. Монтирую в /mnt/.
>
>Вы определили слайсы на /dev/ad2 .Вначале я определил лишь первый раздел. Остальные ad2s1/befg/ определял на следующем шаге.
>
>>Далее копирую загрузочную запись
>># dd if=/dev/ad0 of=/dev/ad2 bs=512 count=1
>
>После этой операции Вы снова переопределили слайсы на /dev/ad2 .
>
>Воспользуйтесь boot0cfg .А sysinstall не определяет загрузчик. Она ведь спрашивает об этом после определения partitions? (для общего развития)
>
>Копировать тома /dev/ad0s1[ade] на /dev/ad2s1[ade]
>лучше через утилиты dump/restore, как написано в
>http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/disks.h...Как я понимаю для dump/restore нужно дополнительное промежуточное место хранения?
>>>На новом диске создаю через /stand/sysinstall слайсы, далее не покидая оболочки создаю
>>>первый раздел для будущей корневой / и записываю. Монтирую в /mnt/.
>>
>>Вы определили слайсы на /dev/ad2 .
>
>Вначале я определил лишь первый раздел. Остальные ad2s1/befg/ определял на следующем шаге.Это не важно.
>>>Далее копирую загрузочную запись
>>># dd if=/dev/ad0 of=/dev/ad2 bs=512 count=1
>>
>>После этой операции Вы снова переопределили слайсы на /dev/ad2 .
>>
>>Воспользуйтесь boot0cfg .
>
>А sysinstall не определяет загрузчик. Она ведь спрашивает об этом после определения
>partitions? (для общего развития)В sysinstall есть такая операция , но речь не об этом.
Вот этой командой dd if=/dev/ad0 of=/dev/ad2 bs=512 count=1 Вы
переписали снова загрузчик и слайсы на ad2, которые определяли ранее через sysinstall.>>Копировать тома /dev/ad0s1[ade] на /dev/ad2s1[ade]
>>лучше через утилиты dump/restore, как написано в
>>http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/disks.h...
>
>Как я понимаю для dump/restore нужно дополнительное промежуточное место хранения?Только pipe и /tmp для чтения/записи.
# newfs /dev/ad1s1a
# mount /dev/ad1s1a /mnt
# cd /mnt
# dump 0af - / | restore xf -И т.д.
>[оверквотинг удален]
>>Как я понимаю для dump/restore нужно дополнительное промежуточное место хранения?
>
>Только pipe и /tmp для чтения/записи.
>
># newfs /dev/ad1s1a
># mount /dev/ad1s1a /mnt
># cd /mnt
># dump 0af - / | restore xf -
>
>И т.д.Резюмируя:
Через sysinstall создаю раздел для /. Через disklabel меняю его с ad2s1e на ad2s1a. Далее опять в sysinstall создаю остальные и задаю точки монтирования в /mnt. Через dump/restore переношу содержимое с ad0 на ad2. Выключаю, перекидываю шлейф и я должен загрузиться? Ничего не упустил. (Система одна и думаю в этом случае boot0cfg не нужен).
>Резюмируя:
>Через sysinstall создаю раздел для /.
> Через disklabel меняю его с ad2s1e
>на ad2s1a.А это зачем Вы делаете?
>Далее опять в sysinstall создаю остальные и задаю точки
>монтирования в /mnt.
>Через dump/restore переношу содержимое с ad0 на ad2.dump/restore работает с отдельным разделом типа /dev/ad0s1a , а не сo всем
диском /dev/ad0 .>Выключаю, перекидываю шлейф и я должен загрузиться? Ничего не упустил. (Система
>одна и думаю в этом случае boot0cfg не нужен).Систем на одном диске может быть много, а начальный загрузчик на диске один.
Лучше чем здесь, не написано:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/disks.h...
если новый диск больше чем старый, и претензий к разбивке винта нет, можно полностью перелить винт в винт dd if=/dev/ad0 of=/dev/ad1 bs=32768при bs=32768 винт на 200 гиг копируется за пару часов.
>если новый диск больше чем старый, и претензий к разбивке винта нет,
>можно полностью перелить винт в винт dd if=/dev/ad0 of=/dev/ad1 bs=32768
>
>при bs=32768 винт на 200 гиг копируется за пару часов.Я хотел бы чтобы винты новые были больше, чем старые. Но кто начальник, тот дурак и принял решение о покупке IDE(!) диска такого же объёма(!) (что кроме смеха у меня ничего не вызвало). В итоге формально винты по 80 ГБ, но новые на почти 2 ГБ меньше.
>>Резюмируя:
>>Через sysinstall создаю раздел для /.
>> Через disklabel меняю его с ad2s1e
>>на ad2s1a.
>
>А это зачем Вы делаете?
>sysinstall первому разделу на последующих дисках всегда присваивает adXs1e
>>Далее опять в sysinstall создаю остальные и задаю точки
>>монтирования в /mnt.
>>Через dump/restore переношу содержимое с ad0 на ad2.
>
>dump/restore работает с отдельным разделом типа /dev/ad0s1a , а не сo всем
>
>диском /dev/ad0 .
>Это понятно, я не о конкретных командах.
>>Выключаю, перекидываю шлейф и я должен загрузиться? Ничего не упустил. (Система
>>одна и думаю в этом случае boot0cfg не нужен).
>
>Систем на одном диске может быть много, а начальный загрузчик на диске
>один.
>Лучше чем здесь, не написано:
>http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/disks.h...А почему не?:
http://www.freebsd.org/doc/ru_RU.KOI8-R/books/faq/disks.html...
А там говориться о применении boot0cfg лишь для возможности загрузки с разных дисков.
В итоге:
fdisk -B ad2 - не помог. Результат тот же: invalid partition. boot0cfg не использовал.
Оказалось достаточным всё сделать в sysinstall.
Если восстановить всю последовательность действий:
На новом диске в sysinstall создать слайсы. Выйти в label - создать первый раздел. Выйти из sysinstall. Изменить обозначение раздела, конкретно поменять adXs1e на adXs1a через disklabel:
disklabel -e /dev/ad2s1
например.
Войти снова в sysinstall и создать оставшиеся разделы. Скопировать поочерёдно содержимое существующих разделов при помощи dump/restore как сказано выше. Снова войти в sysinstall и первому сласу присвоить bootable. Записать. Выйти. Выключить. Перекинуть шлейфы или перенастроить BIOS. Вуаля!Вот сделать бы это по скрипту. Что у нас за нажатие "y" отвечает? man yes? Примерно
yes dump 0af - / | restore xf -
Так?
>[оверквотинг удален]
>например.
>Войти снова в sysinstall и создать оставшиеся разделы. Скопировать поочерёдно содержимое существующих
>разделов при помощи dump/restore как сказано выше. Снова войти в sysinstall
>и первому сласу присвоить bootable. Записать. Выйти. Выключить. Перекинуть шлейфы или
>перенастроить BIOS. Вуаля!
>
>Вот сделать бы это по скрипту. Что у нас за нажатие "y"
>отвечает? man yes? Примерно
>yes dump 0af - / | restore xf -
>Так?Так .
Только dump потребует /tmp для записи, поэтому корневая система должна быть
"живая" ( не readonly).dump -L0af - / | restore xf -
Для остальных
dump -0af - /usr | restore xf -
...P.S.
Используете Вы отдельные системные утилиты или sysinstall, который эти
утилиты вызывает, БЕЗ РАЗНИЦЫ.
>P.S.
>Используете Вы отдельные системные утилиты или sysinstall, который эти
>утилиты вызывает, БЕЗ РАЗНИЦЫ.А как тогда в sysinstall изменить ad2s1e на ad2s1a? И почему fdisk -B ad2 не сработал, а через sysinstall получилось?
>>P.S.
>>Используете Вы отдельные системные утилиты или sysinstall, который эти
>>утилиты вызывает, БЕЗ РАЗНИЦЫ.
>
>А как тогда в sysinstall изменить ad2s1e на ad2s1a?sysinstall вызывает bsdlabel (disklabel) с определенными параметрами.
Через sysinstall Вы не вызовите bsdlabel -e /dev/ad2s1.>И почему fdisk -B ad2 не сработал, а через sysinstall получилось?
fdisk -B ad2 меняет boot code , а не таблицу слайсов, и не делает диск
активным для загрузки .
Надо было откорректировать fdisk -u /dev/ad2