Переход с FreeBSD на 32-битную и 64-битную версию

Мне нужно перенести свой сервер FreeBSD 7.0 i386 на другой хостинг. Я хотел бы также обновить до 64-битной версии (чтобы устранить ограничение в 4 ГБ памяти). Сервер имеет общее программное обеспечение с открытым исходным кодом: apache2, mod_perl, mysql51, perl5, python26.

Интересно, будет ли он плавно переходить на 64-битный сервер. Есть ли известные ошибки / ограничения на 64-битной FreeBSD?

3 ответа

Решение

Все файлы конфигурации и данных одинаковы на i386 и amd64. Та же самая процедура для переноса сайта на другой сервер будет прекрасно работать здесь.

Убедитесь, что вы сделали резервную копию существующей системы. Проверьте эту резервную копию! Создание двух резервных копий тоже неплохая идея. Экспорт списка установленных портов также является хорошей идеей (pkg_info -ao | grep "/" > PkgList.txt или похожие).

В зависимости от того, какую версию вы используете, и от того, какое именно программное обеспечение вы можете обновить на месте до новой версии; просто установите базу и ядро. Иногда этого достаточно, обычно вам приходится перестраивать порты для новых библиотек (portupgrade -af после установки portupgrade порта). Если вы хотите попробовать этот маршрут, я настоятельно рекомендую использовать одну из ваших резервных копий, чтобы попробовать это на другом компьютере, прежде чем делать это на живом сервере.

Я думаю, что все, что вам нужно, это выполнить резервное копирование файлов конфигурации, таких как /etc а также /usr/local/etcтакже резервное копирование /usr/ports а также /usr/src чтобы сохранить пропускную способность позже, и не забудьте также вернуться /var, В FreeBSD 64Bit я сталкиваюсь с некоторыми портами, работающими только в архитектуре i386.

Поскольку почти все (по крайней мере, больше, чем любая другая ОС) обратно совместимо, вы можете установить свои старые вещи в дочерний каталог, а затем просто выполнить chroot, чтобы все работало, будем надеяться, идентично тому, как оно работало раньше. Тюрьма подошла бы лучше, но она не нужна.

Обязательно убедитесь, что порты совместимости compat4, compat6, compat-whatever совместимы с вашими старыми динамически связанными двоичными файлами.

В некоторых случаях я просто перестраховываюсь, создавая статически связанные и скомпилированные двоичные файлы в старой системе (или в системе с chroot), и тогда они ни от чего не зависят и могут зависать в любой версии FreeBSD, новее. или старше.

С ldconfig -32 у меня все стало немного странно. Это новая версия ldconfig, которая позволяет 32-битным программам использовать специальные библиотеки для взаимодействия с 64-битными библиотеками. Если что-то пойдет не так, это может немного расстроить, поскольку по какой-то странной причине они не создали текстовую версию 64-битного файла конфигурации, как это было для 32-битной версии.

Однако если вы полагаетесь на порты и предварительно скомпилированное программное обеспечение, все будет в порядке.

Но если вам интересно, ldconfig -r и ldconfig -32 -r покажут вам, какие библиотеки он использует.

Я не так уж редко пропускаю библиотеку при переключении между версиями (потому что у меня дислексия и много возиться), поэтому я часто просто продолжаю запускать программу, получая сообщение «.so не найден» и затем скопируйте «.so» из старой ОС в новую и поместите его в /usr/lib или что-то еще, а затем повторите для <whatever12.so> и так далее, пока все не заработает.

Но чтобы отслеживать, что я делаю (чтобы не создавать еще больший беспорядок), я буду переименовывать файлы при их перемещении и создавать символическую ссылку обратно, чтобы она эффективно документировалась прямо в выводе «ls».

cp oldmachine/bloatedfont.so /usr/lib/bloatedfont.from-my-old-machine.so

компакт-диск /usr/lib

ln -s bloatedfont.from-my-old-machine.so bloatedfont.so

Конечно, существует множество способов написать сценарий и автоматизировать это. Не уверен, какое удобное для пользователя программное обеспечение может быть для такого рода исправлений, но, опять же, оно вам действительно не нужно. :-)

Другие вопросы по тегам