setup OpenFiler 2.3 as paravirtualized guest for Oracle VM 2.2

OpenFiler - бесплатный и весьма популярный продукт обеспечивающий вам доступ к вашим дискам по iSCSI, NFS, SAMBA. Я широко его использую как при построении демонстраций, так и как домашний NAS.  При попытке скачать его вы обнаружите что существует даже вариант "Xen domU Filesystem", однако радость будет не долгой - это не образ машины, а  действительно tar с файловой системой.  Есть также вариант называющийся ISO image, но поставить его в Oracle VM не получается, virt-install не находит нужных файлов.

Для того, чтобы превратить tar с файловой системой  в настоящий paravirtualized guest мне понадобились:
  • установленный Oracle VM (2.x), Linux ovm1.us.oracle.com 2.6.18-128.2.1.4.25.el5xen
  • Openfiler 2.3  tar.gz
  • Любая версия Oracle Linux (iso или DVD образ), Я использовал OEL 5 Update 3. 
  • Петр Фатьянов

Шаги который нам придется пройти

- сделать новую вирутальную машину
- распаковать в ней tar с Openfiler
- настроить grub



Для начала нам понадобиться пустой образ:

dd if=/dev/zero of=root.img bs=1 count=0 seek=4G



Затем, необходимо положить ISO образ любого соверменного Linux и сделать его доступным через NFS. В моем примере nfs сервер имеет адрес 192.168.1.11

virt-install -n OPENFILER23 -r 256 --vcpu=1 -f root.img -p -l nfs:192.168.1.11:/mnt/iso -x rescue

При таком методе загрузке мы получим  shell к своей linux системе… которой еще нет.

Получив rescue prompt   вы запустите команду fdisk и сделаетe новую партицию для устройства xvda (n,p,1, w). Далее сделаете файловую систему:

mkfs.ext3 -L root -j /dev/xvda1

после чего вы сможете ее смонтировать


mkdir /mnt2
mount /dev/xvda1 /mnt2 




Дальше нам снова понадобится  nfs сервер на котром размещен заранее скачанный tarball с Openfiler. Мы монтируем директорию  по nfs

mkdir /mnt3


mount -t nfs 192.168.1.11:/OVS/exports  /mnt3

после чего вы распаковываться Openfiler Tarball

cd /mnt2
tar -xvf  /mnt3/Openfiler/openfilerXXX.tar.gz



На этом этапе нужно выйти из shell

cd
umount /mnt2
umount /mnt3


exit


Теперь нужно снова повторить команду с virt-install, приведенную выше. Но теперь появиться важный экран - вам позволят сделать chroot  /mnt/sysimage. Сделайте это.

chroot /mnt/sysimage

Теперь запускаем grub

grub
device (hd0) /dev/xvda
root (hd0,0)
setup (hd0)
quit

На данном этапе у нас есть загрузчик и правильная файловая система. Теперь остается проверить что загрузчик будет нам грузить.


 less /boot/grub/grub.conf
# GRUB configuration generated by rBuilder
#
# Note that you do not have to rerun grub after making changes to this file
#boot=xvda
default=0
timeout=0
hiddenmenu
title  (2.6.21.7-3.20.smp.gcc3.4.x86_64.xen.domU)
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.21.7-3.20.smp.gcc3.4.x86_64.xen.domU ro root=/dev/x
vda1  quiet
    initrd /boot/initrd-2.6.21.7-3.20.smp.gcc3.4.x86_64.xen.domU.img

Обратите внимание на root=


Я также поправил /etc/fstab

less /etc/fstab
/dev/xvda1      /       ext3    defaults        1       1
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
none                    /dev/shm                tmpfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
sysfs                   /sys                    sysfs   defaults        0 0
/dev/cdrom              /mnt/cdrom              auto    noauto,ro,owner,exec   
0 0
/var/swap               swap                    swap    defaults        0 0

(как заметит опытный администратор  я не справился с метками разделов и прописал их имена явно)

Нам остается только написать  наш новый vm.cfg  и загрузить нашу новую виртуальную машину! Как легко видеть, grub грузит паравиртуализированное ядро, и нам не понадобились никакие особенные приседания чтобы получить этот результат

Вы можете сравнить мой вариант с  вот этим: для установки Xen guest понадобилась VmWare….это не наш путь !

4 комментария:

  1. Почему бы просто не сделать сразу после dd:

    # mkfs -t ext3 -L ROOT root.img
    -- здесь я кстати использую метки, они не такие модные как UID, но тоже переживут переименование дисков

    # mkdir /tmp/IMAGE
    # mount -o loop root.img /tmp/IMAGE
    # cd /tmp/IMAGE
    # tar -xvf /mnt3/Openfiler/openfilerXXX.tar.gz

    -- и тут мы сделаем несложный финт ушами: посмотрим что прописано в /tmp/IMAGE/boot/grub/grub.conf, скопируем файлы ядра и initrd в /var/lib/xen например и укажем их в vm.cfg
    =======
    kernel /var/lib/xen/vmlinuz-2.6.21.7-3.20.smp.gcc3.4.x86_64.xen.domU
    ramdisk /var/lib/xen/initrd-2.6.21.7-3.20.smp.gcc3.4.x86_64.xen.domU.img
    ========
    отредактируем /tmp/IMAGE/etc/fstab
    LABEL=ROOT / ext3 defaults 1 1

    затем
    # umount /tmp/IMAGE
    и все! мне кажется, это проще. Проблема может возникнуть только в возможном апгрейде ядра в виртуальной машине. Ругань на некрасивую Partition table можно смело игнорировать.

    ОтветитьУдалить
  2. да, это работает и выглядит проще при настройке. Но такая виртуальная машине не переносится (ну или нужно не забыть скопированные в сторону ядра). На самом деле Петр Фатьянов не разрешил мне так делать, сказав что "кишки" нельзя оставлять торчащими наружу -)

    ОтветитьУдалить
  3. кишки наружу - это серьёзно.

    ОтветитьУдалить
  4. Я вот начал экспериментировать с Oracle VM 3.0.3. Есть ли какие грабли с 3й версией, как например то, что не все ПО на ней может работать?

    ОтветитьУдалить