Статья добавлена: 2014-10-02 11:50:59
Автор: Сергей

Виртуализация FreeBSD


Была поставлена задача виртуализировать сервер на базе FreeBSD 7.2 в vmware, настроенный до меня. Можно конечно было просто установить новую фряху и перенести все туда, а все-это портал, и все что с ним связано. Но как всегда было мягко говоря лень разбираться и переносить. Вообщем как у меня получилось это сделать:
В виртуальной машине создаем диски нужного размера не меньше имеющихся с помощью инсталяционного iso образа FreeBSD, затем с этого же iso или frenzy грузимся в режиме livecd. Прописываем настройки для сетевых интерфейсов:
  • ifconfig em0 10.9.130.100/24
    route add 0 10.9.130.1

После чего проверяем доступность виртуальной машины в сети. Для переноса данных я использовал NFS.
  • /etc/rc.d/rpcbind onestart
    /etc/rc.d/nfsclient onestart

С виртуальной машиной пока закончили переходим к аппаратной машине и на ней включаем службу NFS.
  • /etc/rc.d/rpcbind onestart
    /etc/rc.d/nfsd onestart
    /etc/rc.d/mountd onestart

При запуске nfsd запросит файл /etc/exports в этом варианте он выглядел так:
  • / -maproot=root -network 10.9.130.0 -mask 255.255.255.0
    /usr -maproot=root -network 10.9.130.0 -mask 255.255.255.0
    /var -maproot=root -network 10.9.130.0 -mask 255.255.255.0

Как вы догадались это мои разделы апаратной машины.
Если все все сделано верно, то команда mount покажет параметр «NFS exported» для раздела
Теперь создадим папку в которой мы сделаем dump разделов
  • mkdir /usr/backup

А теперь сам dump разделов:
  • dump -0 -L -f - /var > /usr/backup/var.img
    dump -0 -L -f - /usr > /usr/backup/usr.img
    dump -0 -L -f - / > /usr/backup/root.img

Разберем утилиту dump:
  • -0 – делается полный бэкап раздела
    -L – дамп снимается с “живой” файловой системы. В корне раздела создается директория .snap куда и делается снимок текущего состояния файловой системы, с помощью которого снимается дамп.
    -f – Писать дамп в файл

Некоторые могут сказать что дамп занимает много места и у них нет столько чтоб сделать dump монтируем флешку, или переносной диск, и все повторяем.

Возвращаемся к нашей виртуальной машине и создадим папки для монтирования локальных дисков:
  • mkdir /var/mount/root
    mkdir /var/mount/usr
    mkdir /var/mount/var

Также создадим папку в которой будут подключены dump разделов
  • mkdir /var/nfs/backup/

и подмонтируем диски. Если мы работаем с frenzy то нам сначало нужно размонтирывать диски а потом подмонтирывать:
  • umount /dev/da0s1a /mnt/da0s1a.ufs/ раздел root
    umount /dev/da0s1d /mnt/da0s1d.ufs/ раздел usr
    umount /dev/da0s1e /mnt/da0s1e.ufs/ раздел var

Форматируем каждый раздел:

  • newfs /dev/da0s1a
    newfs /dev/da0s1d
    newfs /dev/da0s1e

После чего подмаунчиваем в rw в наши созданные директории

  • mount /dev/da0s1a /var/mount/root и т.д

Для подключения сетевой папки используем команду:
  • mount_nfs:10.9.130.50 /usr/backup /var/nfs/backup/

В папочке /var/nfs/backup/ лежат наши дампы(сделаные ранее), которые нам нужно перенести в определенные разделы. Для этого :
  • cd /var/mount/root
    restore -r -f /var/nfs/backup/root.img
    cd /var/mount/usr
    restore -r -f /var/nfs/backup/usr.img
    cd /var/mount/var
    restore -r -f /var/nfs/backup/var.img

На этом все но не забудьте что могут буквы разделов на аппаратной и виртуальной машине отличатся (также сетевые интерфейсы), по этому лучше запомнить или сделать бэкап файла /etc/fstab виртуальной и аппаратной машины. У меня например даже после того как я изменил название букв в виртуальной машине она отказывалась видеть разделы. Мне пришлось скопировать раздел boot виртуальной машины до того как я затер раздел /. И вернуть его в зад после restore.