Подготовка DomU FreeBSD-окружения для выполнения в Linux Dom0 Xen с LVM |
[исправить] |
В качестве хост-системы будет использован сервер на базе Debian GNU/Linux 5, на
котором дисковые разделы разбиты с использованием LVM.
Для сборки работающего в режиме паравиртуализации ядра FreeBSD и формирования
образа системы понадобится уже установленная FreeBSD. В простейшем случае можно
воспользоваться VirtualBox для временной установки FreeBSD.
Заходим в существующую FreeBSD систему и подготавливаем дисковый образ /tmp/freebsd.img для Xen.
cd /usr/src
truncate -s 1G /tmp/freebsd.img
Привязываем файл с дисковым образом к устройству /dev/md0
mdconfig -f freebsd.img
Разбиваем разделы, форматируем и монтируем в /mnt:
fdisk -BI /dev/md0
bsdlabel -wB md0s1
newfs -U md0s1a
mount /dev/md0s1a /mnt
Собираем мир и ядро с паравиртуальными драйверами Xen и устанавливаем в директорию /mnt:
make buildworld
make buildkernel KERNCONF=XEN
make DESTDIR=/mnt installworld
make DESTDIR=/mnt installkernel KERNCONF=XEN
make DESTDIR=/mnt distribution
В /mnt/etc/ttys добавляем строку с описанием терминала xc0
xc0 "/usr/libexec/getty Pc" vt100 on secure
В /mnt/etc/fstab прописываем параметры монтирования корня:
/dev/ad0s1a / ufs rw 0 0
Отмонтируем сформированный образ и скопируем его на хост-систему, на которой будет работать DomU:
umount /mnt
mdconfig -d -u 0
bzip2 -v9 /tmp/freebsd.img
scp /tmp/freebsd.img.bz2 user@dom0-host.example.com:/tmp/freebsd.img.bz2
Отдельно копируем ядро с паравиртуальными драйверами:
scp /usr/obj/usr/srcsys/XEN/kernel user@dom0-host.example.com:/tmp/freebsd_8.2-RC1_kernel
Настраиваем Dom0
Подготавливаем LVM-разделы, которые будут использоваться для работы FreeBSD.
Создадим два раздела - один для изменения размера рабочего раздела и второй -
рабочий раздел, на котором будет работать гостевая система.
Создаем LVM-разделы в уже присутствующей физической группе xen-vol:
lvcreate -L1000 -n freebsdmaint.example.com xen-vol
lvcreate -L110000 -n freebsd-dom0.example.com xen-vol
копируем ранее созданный образ в данные разделы:
dd if=freebsd.img of=/dev/xen-vol/freebsdmaint.example.com bs=1M
dd if=freebsd.img of=/dev/xen-vol/freebsd-dom0.example.com bs=1M
Конфигурируем Xen:
Создаем два файла конфигурации: первый для обслуживания изменения размера
раздела и второй для рабочего виртуального окружения (отдельный раздел нужен
так как мы не можем переконфигурировать текущий раздел без его отмонтирования,
смонтировать файл через "mount -o loop" мы не можем так как в Linux отсутствует
полноценная поддержка UFS).
Ранее подготовленное ядро копируем в /xen/kernels/freebsd_8.2-RC1_kernel
Окружение для изменения размера дискового раздела freebsdmaint.example.conf.cfg:
kernel = "/xen/kernels/freebsd_8.2-RC1_kernel"
vcpus = '1' # 1 CPU
memory = '64' # 64 Мб ОЗУ
disk = [ 'phy:/dev/xen-vol/freebsdmaint.example.com,hda,w', 'phy:/dev/xen-vol/freebsd-dom0.example.com,hdb,w' ]
name = 'freebsdmaint.example.com'
vif = [ 'bridge=eth0,mac=00:16:3E:62:DB:03' ]
extra = 'xencons=tty1'
extra = "boot_verbose"
extra += ",boot_single"
extra += ",kern.hz=100"
extra += ",vfs.root.mountfrom=ufs:/dev/ad0s1a"
Рабочее окружение freebsd-dom0.example.conf.cfg (отличается от предыдущей
конфигурации указанием только одного раздела freebsd-dom0.example.com):
kernel = "/xen/kernels/freebsd_8.2-RC1_kernel"
vcpus = '1'
memory = '64'
disk = [ 'phy:/dev/xen-vol/freebsd-dom0.example.com,hda,w' ]
name = 'freebsd-dom0.example.com'
vif = [ 'bridge=eth0,mac=00:16:3E:62:DB:03' ]
extra = 'xencons=tty1'
extra = "boot_verbose"
extra += ",boot_single"
extra += ",kern.hz=100"
extra += ",vfs.root.mountfrom=ufs:/dev/ad0s1a"
Запускаем обслуживающее окружение:
xm create -c freebsdmaint.example.conf.cfg
Изменяем размер рабочего раздела, который виден как /dev/ad1s1a (после запуска
fdisk на первые два вопроса отвечаем 'y', после запроса размера указываем
размер основного раздела как "число Мб * 2048"):
fdisk -u /dev/ad1
******* Working on device /dev/ad1 *******
parameters extracted from in-core disklabel are:
cylinders=14023 heads=255 sectors/track=63 (16065 blks/cyl)
Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=14023 heads=255 sectors/track=63 (16065 blks/cyl)
Do you want to change our idea of what BIOS thinks ? [n] n
Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
start 63, size 2088387 (1019 Meg), flag 80 (active)
beg: cyl 0/ head 1/ sector 1;
end: cyl 129/ head 254/ sector 63
Do you want to change it? [n] y
...
Supply a decimal value for "size" [2088387]
fdisk: WARNING: partition does not end on a cylinder boundary
fdisk: WARNING: this may confuse the BIOS or some operating systems
Correct this automatically? [n] y
Should we write new partition table? [n] y
Изменяем размер слайса:
bsdlabel -e /dev/ad1s1
# size offset fstype [fsize bsize bps/cpg]
a: 2088351 16 unused 0 0
c: 2088387 0 unused 0 0 # "raw" part, don't edit
Не трогаем значение "raw" и правим размер слайса "a", приписав туда вычисленное
на прошлом шаге значение дискового раздела минус 16 байт. Т.е. получаем после
правки (raw-значение рассчитается автоматически):
# size offset fstype [fsize bsize bps/cpg]
a: 225279416 16 unused 0 0
c: 225279432 0 unused 0 0 # "raw" part, don't edit
Запускаем growfs для расширения существующей файловой системы:
growfs /dev/ad1s1a
Выключаем обслуживающую VM и запускаем основную. Внимание, одновременно
основной и обслуживающий VM запускать нельзя, так как они работают с одинаковым
дисковым разделом freebsd-dom0.example.com.
|
|
|
|
Раздел: Корень / Безопасность / Виртуализация - Xen, OpenVZ, KVM, Qemu |
1.1, l13tl3 (ok), 22:37, 29/12/2010 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
а я ядро собираю в virtualbox, а ОС в LVM ставлю с netboot-образа в qemu. работает
| |
|
2.3, Аноним (-), 06:07, 30/12/2010 [^] [^^] [^^^] [ответить]
| +/– |
Ну а выньдусь там же вас не смущает?
Ооопс! Приношу ивинения. Я думал ваше высказывание как то всязанно с отквоченным постом :)
А потом дошло что трава и в самом деле - хорошая :)
| |
|
1.7, Аноним (-), 14:13, 30/12/2010 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Я только не понял, почему обязательно иметь установленную фрю, если можно с образа скопировать?
| |
|
2.9, Аноним (-), 20:59, 30/12/2010 [^] [^^] [^^^] [ответить]
| +/– |
> Я только не понял, почему обязательно иметь установленную фрю, если можно с
> образа скопировать?
В Linux UFS только на чтение и то с глюками. Если скопировать через dd, то запишется только начало и нужно ресайзить ФС, а для этого FreeBSD нужно загрузить с другого раздела, чтобы текущий остался размонтированным.
| |
|
3.10, ананим (?), 02:37, 31/12/2010 [^] [^^] [^^^] [ответить]
| +/– |
ну что за бред?
dd скопирует столько, сколько скажешь. ему на фс положить. асл читается уж точно полностью. даже с асл.
он вообще читает всё. так уж устроен.
у вас в учителях не трухин был?
| |
3.11, slepnoga (ok), 15:35, 01/01/2011 [^] [^^] [^^^] [ответить]
| +/– |
>> Я только не понял, почему обязательно иметь установленную фрю, если можно с
>> образа скопировать?
> В Linux UFS только на чтение и то с глюками. Если скопировать
> через dd, то запишется только начало и нужно ресайзить ФС, а
> для этого FreeBSD нужно загрузить с другого раздела, чтобы текущий остался
> размонтированным.
Может оно только в убунте на чтения ? /ме уже лет 5-ть как пишет на слайс с фряхой или опенком - ЧЯДНЯД ?
| |
|
|
1.13, freelsd (?), 03:36, 05/01/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Что по нагрузке? Помнится, в HVM жутко нагружалась система из-за тормознутой UFS, пробовал кто в боевом режиме фряху на паравирте зарядить?
| |
1.14, VDm (?), 14:11, 10/01/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
При запуске апача или gstat падает ? или там чтото допилили уже ?
| |
|