Qemu-kvm for ubuntu *-)!

Документация связанная с установкой, настройкой и работой пользовательского ПО
Ответить
Аватара пользователя
zaka
Эникейщик
Эникейщик
Сообщения: 461
Зарегистрирован: 19 май 2010, 08:52

Qemu-kvm for ubuntu *-)!

Сообщение zaka » 09 ноя 2011, 16:05

Qemu-kvm for ubuntu *-)!

Дано:
OS: Ubuntu 10.10
SPO: Qemu

[spoilerЧто такое виртуализа́ция?]Виртуализа́ция в вычислениях — процесс представления набора вычислительных ресурсов, или их логического объединения, который даёт какие-либо преимущества перед оригинальной конфигурацией. Это новый виртуальный взгляд на ресурсы составных частей, не ограниченных реализацией, географическим положением или физической конфигурацией. Обычно виртуализированные ресурсы включают в себя вычислительные мощности и хранилище данных. По-научному, виртуализация - это изоляция вычислительных процессов и ресурсов друг от друга.
Примером виртуализации являются симметричные мультипроцессорные компьютерные архитектуры, которые используют более одного процессора. Операционные системы обычно конфигурируются таким образом, чтобы несколько процессоров представлялись как единый процессорный модуль. Вот почему программные приложения могут быть написаны для одного логического (виртуального) вычислительного модуля, что значительно проще, чем работать с большим количеством различных процессорных конфигураций.[/spoiler]

[spoilerЧто такое Qemu и возможности:]Возможности QEMU
QEMU относится к программам, эмулирующим аппаратную среду. Основные функции аналогичны именитым VMWare, VirtualBox, Bochs или Virtual PC, хотя некоторые возможности отличаются. Например, поддерживается два вида эмуляции:

Full system emulation – создается полноценная виртуальная машина, имеющая «свой» процессор и различную периферию;
User mode emulation – режим, поддерживаемый только в Linux. Он позволяет запускать на родном процессоре программы, откомпилированные под другую платформу.
Во втором варианте QEMU берет на себя всю заботу о переводе инструкций процессора и конвертации системных вызовов. Благодаря быстрому и компактному динамическому транслятору кода, достигается высокая скорость эмуляции. В этом режиме возможна эмуляция не только x86, но и процессоров других архитектур: ARM, SPARC, PowerPC, MIPS и m68k. К списку полной эмуляции добавим еще x86_64 и EM64T. Работает QEMU на Linux, FreeBSD, Mac OS X, FreeDOS и Windows (www.h7.dion.ne.jp/~qemu-win). В качестве основной платформы можно использовать компьютеры на базе x86, x86_64 и PowerPC. Впрочем, ограниченно поддерживаются и некоторые другие (DEC Alpha, SPARC32, ARM, S390). Виртуальная машина i386-архитектуры, созданная при помощи QEMU, получает в свое распоряжение следующий набор устройств:

процессор такой же частоты, как и на основной системе; в SMP-системах возможна работа до 255 CPU (по умолчанию 1 CPU);
PC BIOS, используемый в проекте Bochs;
материнская плата i440FX с PIIX3 PCI - ISA мостом;
видеокарта Cirrus CLGD 5446 PCI VGA или VGA карта с Bochs VESA расширениями;
мышь PS/2 и клавиатура;
2 PCI IDE интерфейса для жесткого диска и поддержку CD-ROM;
два дисковода;
до 6 NE2000 PCI сетевых карт;
до 4 последовательных (СОМ) портов;
вывод звука через Soundblaster 16 совместимую карту.
В последних версиях появилась долгожданная поддержка USB и улучшен звук. Также стало возможно сетевое соединение между эмулируемыми ОС.
По сравнению с другими известными виртуальными машинами, QEMU работает достаточно шустро. Но есть еще модуль QEMU Accelerator Module (KQEMU), позволяющий выполнять часть кода напрямую на реальном процессоре, минуя виртуальный. Это неплохо ускоряет работу гостевой системы. Без этого модуля запуск виртуальной ОС замедляется примерно в пять раз.

Сейчас KQEMU доступен для ядер Linux-версий 2.6.x и 2.4.x (работает только на x86 и x86_64). Есть порты под FreeBSD и Windows, но они недостаточно развиты. Ранее KQEMU распространялся по проприетарной лицензии с закрытым исходным кодом и только для Linux. Сегодня его код открыт под GNU GPL, как и прочие компоненты QEMU.

Кроме того, в рамках проекта Linux KVM (Kernel-based Virtual Machine) полным ходом идет разработка поддержки технологий аппаратной виртуализации (Intel VT и AMD SVM) для x86-процессоров Intel и AMD. Пока это патчи, позволяющие QEMU использовать возможности KVM. В будущем поддержка KVM будет реализована в основной ветке QEMU.

Если хотите сравнить виртуальных машин то вот[/spoiler]
Смотри поддерживает ли наша машин виртуализацию на аппаратном уровне

Код: Выделить всё

egrep -c '(vmx|svm)' /proc/cpuinfo
Если 0 это означает, что ваш процессор не поддерживает аппаратную виртуализацию.
Если один (или более) она, - но вам все еще ​​нужно, чтобы убедиться, что виртуализация включена в BIOS.
[spoilerВывод:]zaka@leptop:~$ egrep -c '(vmx|svm)' /proc/cpuinfo
4[/spoiler]
Ставим все сразу одним махом
Ставим пакеты:
[spoilerqemu-­kvm]Qemu - эмулятор, который может работать и без KVM, но использование аппаратной виртуализации значительно ускоряет работу гостевых систем, поэтому KVM является предпочтительным вариантом. Ставим их в связке.[/spoiler]
[spoilerlibvirt-­bin]Libvirt это инструментарий C для взаимодействия с возможностями виртуализации последних версий Linux (и других ОС). Библиотеки направлена ​​на обеспечение долгосрочного стабильного C API для различных механизмов виртуализации. В настоящее время она поддерживает QEMU, KVM, Xen, OpenVZ, LXC и VirtualBox.[/spoiler]
bridge-­utils - сетевой мост
virt-manager - менеджер виртуальной машины
virt-viewer - клиентская часть
virt-top -мониторинг реального времени

Код: Выделить всё

sudo apt-­get install qemu-­kvm libvirt-­bin ubuntu­vm­builder bridge-­utils kvm virt-manager virt-viewer virt-top
Смотри загрузился ли модуль ядра

Код: Выделить всё

lsmod | grep kvm
[spoilerВывод:]zaka@leptop:~$ lsmod | grep kvm
kvm_intel 49183 4
kvm 299465 1 kvm_intel[/spoiler]
Смотрим запустился ли libvirt-bin

Код: Выделить всё

service libvirt­-bin status
[spoilerВывод:]zaka@leptop:~$ service libvirt-bin status
libvirt-bin start/running, process 1392[/spoiler]
Все ОК если нет то стартуем:

Код: Выделить всё

sudo service libvirt-bin start
и опять смотрим.

Теперь добавим себя в группу libvirtd и kvm что бы запускать пользоваться)

Код: Выделить всё

sudo adduser `id ­-un` libvirtd
sudo adduser `id ­-un` kvm
[spoilerВывод:]id zaka
uid=1000(zaka) gid=1000(zaka) группы=1000(zaka),4(adm),20(dialout),21(fax),24(cdrom),25(floppy),26(tape),29(audio),30(dip),44(video),46(plugdev),104(fuse),110(netdev),111(lpadmin),119(admin),122(sambashare),126(kvm),127(libvirtd)[/spoiler]
P/S Это после перезагрузки до моно посмотреть так:

Код: Выделить всё

cat /etc/group | grep username
username - ваша имя (zaka)
[spoilerВывод:]zaka@leptop:~$ cat /etc/group | grep zaka
adm:x:4:zaka
dialout:x:20:zaka
fax:x:21:zaka
cdrom:x:24:zaka
floppy:x:25:zaka
tape:x:26:zaka
audio:x:29:pulse,zaka
dip:x:30:zaka
video:x:44:zaka
plugdev:x:46:zaka
fuse:x:104:zaka
netdev:x:110:zaka
lpadmin:x:111:zaka
admin:x:119:zaka
zaka:x:1000:
sambashare:x:122:zaka
kvm:x:126:zaka
libvirtd:x:127:zaka[/spoiler]
Если виде kvm, libvirtd то все ОК.
Пере загружаемся:

Код: Выделить всё

sudo shutdown -r now
Проверяем запустился ли libvirt-bin и kvm:

Код: Выделить всё

ps aux | grep kvm
[spoilerВывод:]zaka@leptop:~$ ps aux | grep kvm
root 1377 0.0 0.0 0 0 ? S 15:42 0:00 [kvm-irqfd-clean]
116 12049 31.6 13.9 725260 538232 ? Sl 17:11 5:06 /usr/bin/kvm -S -M pc-0.12 -enable-kvm -m 512 -smp 1,sockets=1,cores=1,threads=1 -name Windows -uuid 99dbd56d-716d-8a6e-3fa7-850ac4462034 -nodefaults -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/Windows.monitor,server,nowait -mon chardev=monitor,mode=readline -rtc base=localtime -no-reboot -boot c -drive file=/var/lib/libvirt/images/Windows.img,if=none,id=drive-ide0-0-0,boot=on,format=raw -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -drive file=/home/zaka/Рабочий стол/work/dist/os/win/WinXPSP3Lic.iso,if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -device rtl8139,vlan=0,id=net0,mac=52:54:00:a2:3a:19,bus=pci.0,addr=0x3 -net tap,fd=40,vlan=0,name=hostnet0 -chardev pty,id=serial0 -device isa-serial,chardev=serial0 -usb -device usb-tablet,id=input0 -vnc 127.0.0.1:0 -vga std -device AC97,id=sound0,bus=pci.0,addr=0x4 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5
zaka 13122 0.0 0.0 10132 876 pts/0 S+ 17:27 0:00 grep --color=auto kvm[/spoiler]

Код: Выделить всё

ps aux | grep libvirtd
[spoilerВывод:]ps aux | grep libvirtd
root 1392 0.5 0.1 222136 6320 ? Sl 15:42 0:33 /usr/sbin/libvirtd -d
zaka 13232 0.0 0.0 10132 876 pts/0 S+ 17:29 0:00 grep --color=auto libvirtd[/spoiler]
Если у вас почти как у мну то все ОК.
Последний раз редактировалось zaka 09 ноя 2011, 20:13, всего редактировалось 3 раза.
Помни прошлое, живи настоящим и думай о будущем.
Изображение
Аватара пользователя
zaka
Эникейщик
Эникейщик
Сообщения: 461
Зарегистрирован: 19 май 2010, 08:52

Re: Qemu-kvm for ubuntu *-)!

Сообщение zaka » 09 ноя 2011, 16:57

Для GUI пользователей ))

[spoilerЗапускаем виртуал менеджер:]Изображение[/spoiler]
[spoilerСоздаем новую машину через мастер:]Изображение[/spoiler]
[spoilerВыбираем тип установки и даем название:]Изображение[/spoiler]
[spoilerВыбираем носителя iso или CD/DVD привод и тип ОС Win*, *nix, other:]Изображение[/spoiler]
В моем случае ISO указываем путь и выбираю Windows XP x86 .
[spoilerВыделяем оперативный память и количество CPU]Изображение[/spoiler]
[spoilerВыделяем место из HDD для вертульной машины:]Изображение[/spoiler]
[spoilerПоказывает общую настройку: Название, ОС, тип установки, ЦПУ, RAM, HDD, Сетевую карту и MAC.]Изображение[/spoiler]
Нажимаем далее и все.
[spoilerНачинаем установку ОС Windows XP]Изображение[/spoiler]
Помни прошлое, живи настоящим и думай о будущем.
Изображение
Аватара пользователя
zaka
Эникейщик
Эникейщик
Сообщения: 461
Зарегистрирован: 19 май 2010, 08:52

Re: Qemu-kvm for ubuntu *-)!

Сообщение zaka » 09 ноя 2011, 19:24

Для фанатов консоли))

Запустить LiveCD-дистрибутив очень просто. Достаточно вставить диск в привод и ввести команду:

Код: Выделить всё

qemu -m 512 -cdrom /dev/cdrom
-m 512 выделяем оперативный память 512 мб.
Если есть ISO-образ, то можно подключить и его:

Код: Выделить всё

qemu -m 512 -cdrom /home/zaka/TinyMe-2008.0.i586.iso

указываем называние (TinyMe-2008.0.i586.iso) и путь (/home/zaka/) файла
Если при запуске эмулятора будет выдаваться сообщение о неактивности модуля kqemu: «Could not open /dev/kqemu - QEMU acceleration layer not activated: Permission denied», то потребуется изменение прав на файл устройства /dev/kqemu (по умолчанию 660):

Код: Выделить всё

 sudo chmod 666 /dev/kqemu
Кстати, раньше нужно было создавать этот файл вручную при помощи команды «mknod /dev/kqemu c 250 0». Теперь в этом нет необходимости. В некоторых системах эмулятор при запуске может потребовать перестроить параметры таймера высокого разрешения – «Could not configure /dev/rtc to have a 1024 Hz timer...». Тогда выполняем команду:

Код: Выделить всё

sudo sh -c "echo 1024 > /proc/sys/dev/rtc/max-user-freq"
Для установки гостевой ОС сначала нужно создать виртуальный диск:

Код: Выделить всё

qemu-img create /home/zaka/test-disk 4G
Указываем путь - /home/zaka/, название - test-disk и размер - 4G.
Использовав параметр info, можно получить информацию о готовом образе. Утилита qemu-img поддерживает параметр convert, позволяющий преобразовывать образы из одного формата в другой:

Код: Выделить всё

qemu-img info /home/zaka/test-disk

Код: Выделить всё

qemu-img convert –f cow cowimage.cow image.raw
Теперь запустим виртуальную машину уже с жестким диском:

Код: Выделить всё

qemu -hda test-disk -cdrom ubuntu-8.04-desktop-i386.iso -m 512 -boot d -localtime
Подключение к гипервизора. Это может быть локальным, или даже удаленных. В большинстве случаев, если вы хотите управлять виртуальных машин, работающих на местных гипервизора:

Код: Выделить всё

virsh connect qemu:///system
Листинг виртуальных машин:

Код: Выделить всё

virsh list
[spoilerman virsh]Приведен вольный перевод man-страницы virsh, дополненый переводом man’а идущего в дистрибутиве libvirt-0.7.6-r1 и данные из help’а самого virsh. Утилита virsh является основным интерфейсом для управления виртуальными окружениями и сетями, пулами хранения данных, сетевыми интерфесами и различными объектами виртуальной инфраструктуры.


Общий синтаксис
virsh <subcommand> [args]

Утилита virsh является основным интерфейсом для управления гостевыми доменами. Программа может использоваться для создания, приостановки и выключения гостевых окружений. Также можно просмотреть список существующих доменов и различную статистическую информацию. Взаимодествие осуществляется через Libvirt – набор программ и библиотек для работы с возможностями виртуализации последних версий Linux (и других ОС). Виртуализация в ОС Linux подразумевает возможность одновременного запуска нескольких независимых друг от друга инстанций различных ОС на одном аппаратном обеспечении, где основные ресурсы находятся под управлением Linux. Libvirt способен работать как с Xen так и с QEmu и KVM.
Основная структура команды выполнит следующим образом:

virsh <command> <domain-id> [OPTIONS]

где command это одна из подкоманд, domain-id это числовой идентификационный номер домена или его имя (которое может быть автоматически транслировано в id), и OPTIONS это дополнительные параметры специфичные для каждой команды. Правда есть несколько исключений из этого правила, в основном это относится к командам применительных для всех доменов, на всю машину или непосредственно на гипервизор. Virsh может быть запущена без параметров, как самостоятельная оболочка в которой можно будет выполнять встроенные команды. Все операции virsh отдаются на выполнение libvirt который в свою очередь обращается к xend/qemu или любой другой системе виртуализации (которую он поддерживает). Учитывая это, следует при загрузке запустить службу xend/qemu, обычно это делается с помощью команды service start libvirtd (для RHEL/Fedora/CentOS). Большинство команд virsh требуют прав root для общения с гипервизором, поэтому команды выполненые из под непривилегированной учетной записи завершатся с ошибкой. Также стоит отметить что выполнение некоторых команды virsh занимает некоторое время (от 30 секунд и более) такие как создание или выключение. Поэтому когда оболочка вернула приглашение для ввода следующей команды, это не значит что операция инициированая предыдущей командой уже завершилась, поэтому периодически следует выполнять ‘virsh list’ для проверки состояния системы.

1. Общие команды. Следующие команды являются базовыми.
help – вывод списка доступных команд, help <command> выведет справку по конкретной программе;
quit – выход из virsh-терминала;
version – отображает версию ПО и версию используемого гипервизора;
connect URI [––readonly] – (пере-)подключиться к гипервизору. Это команда является встроенной и запускается сразу после старта virsh-шелла. Параметр URI может принимать следующие аргументы:

xen:/// – подключиться к xen гипервизору;
qemu:///system – подключиться к службе которая управляет QEmu\KVM-доменами и запущена из под root;
qemu:///session – подключиться к службе которая управляет QEmu\KVM-доменами и запущена из под непривилегированного пользователя.
c дополнительным параметром –readonly выполняется read-only подключение.

hostname – выводит имя хост-системы;
nodeinfo – выводит основную информацию об аппаратных характеристиках хост-системы (cpu, mem, sockets);
capabilities – вывод XML-документа в котором перечислены характеристики гипервизора к которому выполнено подключение;
list [ ––inactive | ––all ] – вывод информации о гостевых доменах. Без параметров выводит информацию о запущенных доменах;
freecell [cellno] – выводит количество свободно памяти хост-системы.

2. Команды применительные к доменам. Следующие команды позволяют напрямую управлять доменами. Большинство команд требуют в качестве первого параметра id домена. ID домена может быть указан в виде имени либо в виде полного значения UUID.
autostart [––disable] <domain-id> – включить автозапуск домена при загрузке. Опция ––disable отключает автозапуск;
console <domain-id> – подключиться к консоли гостевого домена;
create <FILE> – создать домен из XML-файла. Эта команда запускает домен описаный в файле, НО не сохраняет его конфигурацию; конфигурация исчезнет после выключения домена;
define <FILE> – назначить домен из XML-файла. Будет создано описание домена, но сам домен не будет запущен;
destroy <domain-id> – немедленно завершить работу гостевого домена. Эта команда не дает никакой возможности среагировать ОС запущенной в госте, это эквивалентно выдергиванию шнура питания из физической машины. В большинстве случаев вместо нее можно использовать команду shutdown;
domblkstat <domain-name> <block-device> – получить статистику блочных устройств устройств для домена;
domifstat <domain-name> <interface-device> – получить статистику сетевого интерфейса для домена;
dominfo <domain-id> – вывод информации о домене;
domuuid <domain-name-or-id> – конвертация ID домена или его имени в полный UUID;
domid <domain-name> – конвертация доменного имени в ID;
domname <domain-id> – конвертация ID домена в имя;
domstate <domain-id> – вывод состояния указанного домена;
dump <domain-id> <corefilepath> – выполнить дамп ядра гостя в файл для последующего анализа;
dumpxml <domain-id> – вывод информации о домене в XML-формате. Этот формат должен использоваться в командах create и define;
edit <domain-id> – редактировать XML-файл с конфигурацией домена;
migrate [––live] <domain-id> <desturi> <migrateuri> – мигрировать домен на другой хост. Параметр –live применяется для живой миграции. desturi это URI хост-системы назначения, и migrateuri это URI миграции, который обычно опускают;
reboot <domain-id> – перезагрузить домен. Действие аналогичное если бы команда reboot была введена в консоли гостя;
save <domain-id> <state-file> - сохранение запущенного домена в файл, из которого он может быть восстановлен позднее. Однажды сохраненный, домен остается выключенным и высвобожденная память может быть использована для нужд других доменов. Команда virsh restore восстанавливает состояние машины. Это действие эквивалентно процессу hibernate на запущенной машине, со всеми ее ограничениями, например открытые сетевые соединения будут восстановлены, но TCP-таймауты будут истекшими;
restore <state-file> – восстанавливает домен из сохраненного в файл состояния;
schedinfo [––set <parameter=value>] [––weight <number>] [––cap <number>] <domain-id> – просмотр/установка параметров планировщика в домене;
setmem <domain-id> <kilobytes> – изменить текущее выделение памяти в гостевом домене. Действие немедленно вступает в силу. Значение указывается в килобайтах;
setmaxmem <domain-id> <kilobytes> – изменить максимальное значение выделенной памяти для гостевого домена. Это не меняет текущее использование памяти в домене. Значение указывается в килобайтах;
setvcpus <domain-id> <count> – изменить количество виртуальных процессоров в гостевом домене. Значение может быть ограничено хост-системой, гипервизором или оригинальной конфигурацией домена;
shutdown <domain-id> – выключить домен. Гостевая ОС выполняет завершение работы, однако успешное завершение не гарантируется, это зависит длины времени которое уходит на остановку служб в домене;
start <domain-name> – запустить (предварительно назначеный) неактивный домен;
suspend <domain-id> – приостановить запущенный домен. Он держится в памяти, но останавливает свою работу;
resume <domain-id> – запускает остановленный ранее домен. Позволяет передать гипервизору ранее остановленный домен для продолжения работы;
ttyconsole <domain-id> – показать устройство используемое в качестве TTY консоли домена;
undefine <domain-id> – удалить конфигурацию неактивного домена;
vcpuinfo <domain-id> – возвращает информацию о виртуальных процессорах домена, такую как количество, время работы и привязку к физическим процессорам;
vcpupin <domain-id> <vcpu> <cpulist> – назначить виртуальный процессоры к физическим процессорам. Должен быть определен параметр vcpu, cpulist это список физических процессоров перечисленных через запятую (нумерация с нуля);
vncdisplay <domain-id> – вывод информации о ip-адресе и номере VNC-дисплея.

3. Команды для работы с устройствами. Следующие команды управляют связанными с доменом устройствами. ID домена может быть указан в виде имени либо в виде полного значения UUID. Чтобы лучше понять разрешенные значения в параметрах команд, прочтите документацию о формате секции устройств.
attach-device <domain-id> <FILE> – подключить устройство к домену, используя описание устройства из XML-файла;
attach-disk <domain-id> <source> <target> [––driver <driver>] [––subdriver <subdriver>] [––type <type>] [––mode <mode>] – добавить блочное устройство в домен:

<source> и <target> определяет пути к файлам и устройствам;
––driver может быть file, tap или phy в зависимости от типа доступа;
––type может быть cdrom или floppy в отличие от значения disk по умолчанию;
––mode может быть readonly или shareable(доступное для записи).

attach-interface <domain-id> <type> <source> [––target <target>] [––mac <mac>] [––script <script>] – добавить новый сетевой интерфейс в гостевой домен:

<type> может быть network(физическое подключение к сети) или bridge(подключение к сети через мостовое соединение);
<source это само устройство;
––target это целевое устройство в гостевом домене;
––mac позволяет определить mac-адрес;
––script позволяет указать путь к скрипту вместо использующегося по умолчанию;

detach-device <domain-id> <FILE> – отключить устройство от домена. Необходимо тоже XML-описание как и при использовании attach-device;
detach-disk <domain-id> <target> – отключить диск от домена. target это устройство видимое в гостевом домене;
detach-interface <domain-id> <type> [––mac <mac>] – отключить сетевой интерфейс от домена. type может быть network(физическое подключение к сети) или bridge(подключение к сети через мостовое соединение). Если в системе несколько интерфейсов, рекомендуется использовать опцию mac чтобы отличить их.

4. Команды управления виртуальным сетевым окружением. Следующие команды позволяют управлять виртуальными сетями. Libvirt способен назначать виртуальные сетевые окружения которые могут использоваться доменами и могут быть сассоциированы с физическими интерфейсами. Для более детальной информации можно прочесть документацию. Некоторые команды для виртуальных сетей, подобны командам используемыми для доменов и соответственно в параметрах, виртуальную сеть можно также назвать по имени или по ее UUID.
net-autostart <network> [––disable] – включить автозапуск виртуальной сети в при загрузке. Параметр ––disable отключает автозапуск;
net-create <FILE> – создать виртуальную сеть из XML-файла;
net-define <FILE> – назначить сеть из XML-файла, но не запускать ее;
net-destroy <network> – удалить сеть. Действие вступает в силу незамедлительно;
net-dumpxml <network> – вывести информацию о виртуальной сети в XML-формате;
net-edit <network> – редактировать XML-файл с опсианием сети;
net-list [––inactive | ––all] – вывести список активных виртуальных сетей. ––all отображает все сети, ––inactive отображает только неактивные;
net-name <network-UUID> – конвертация UUID сети в ее имя;
net-start <network> – запустить (назначенную ранее) неактивную сеть;
net-undefine <network> – удалить конфигурацию неактивной сети;
net-uuid <network> – конвертация имени сети в ее UUID.

5. Команды управления “секретом”. Следующие команды управляют “секретом” (пароли, секретные фразы, ключи шифрования). Libvirt может хранить секретные данные независимо от их использования и другие объекты (тома или домены) могут использовать их или ссылаться на них. Секреты индентифицируются посредством UUID. Описание XML-формата приведено здесь.
secret-define <FILE> – назначить секрет из XML-файла без ассоциации с секретным значением;
secret-dumpxml <secret> – вывод параметров секрета в XML-формате;
secret-set-value <secret> <base64> – установка значения связанного с секретом (секретную информацию предварительно нужно закодировать в base64);
secret-get-value <secret> – вывести значение секрета закодированное в base64;
secret-undefine <secret> – удалить секрет вместе с ассоциированым значением;
secret-list – вывести список секретов.

6. Команды управления сетевыми интерфейсами. Стоит отметить, чтобы эти функции исправно работали необходимо чтобы в системе был установлен пакет netcf и libvirt был собран с поддержкой netcf.
iface-list [––inactive|––all] – просмотреть список физических сетевых интерфейсов;
iface-name <interface> – конвертация mac-адреса интерфейса в его имя;
iface-mac <interface> – конвертация имени интерфейса в mac-адрес;
iface-dumpxml <interface> – вывод информации о сетевых интерфесах в XML-формате;
iface-define <FILE> – назначить (но не запускать) сетевой интерфейс из XML-файла;
iface-undefine <interface> – удалить конфигурацию сетевого интерфейса;
iface-edit <interface> – редактировать конфигурацию сетевого интерфейса;
iface-start <interface> – запустить сетевой интерфейс;
iface-destroy <interface> – остановить сетевой интерфейс.

7. Команды управления физическими устройствами. Следующие команды позволяют пробрасывать физические устройства в виртуальные окружения.
nodedev-list [––tree] [––cap <string>] – просмотреть список доступных устройств;
nodedev-dumpxml <device> – вывод информации о устройстве в XML-формате;
nodedev-dettach <device> – отключить драйвер от устройства, перед последующим включением устройства в домен;
nodedev-reattach <device> – подключить драйвер к устройству после его извлечения из домена;
nodedev-reset <device> – выполнить сброс устройства, перед его включением в домен, или наоборот после извлечения;
nodedev-create <FILE> – создать устройство из XML-файла. Эта команда включает устройство, в виртуальную машину;
nodedev-destroy <name> – удалить устройство из виртуальной машины.

8. Команды управления пулами хранения. Пулы хранения могут использоваться для хранения виртуальных дисков гостевых систем. Подробнее здесь.
pool-autostart <pool> [––disable] – запускать пул автоматически при загрузке системы. Параметр “––disable” отключает автозапуск;
pool-build <pool> – построить новый пул;
pool-create <FILE> – создать новый пул из XML-файла;
pool-create-as <name> [––print-xml] <type> [<source-host>] [<source-path>] [<source-dev>] [<source-name>] [<target>] – создать новый пул с набором параметров:

<name> – имя пула;
––print-xml - напечатать XML-формат, но не назначать и не создавать конфигурацию;
<type> – тип создаваемого пула;
<source-host> – хост-источник для создаваемого хранилища (например localhost);
<source-path> - путь-источник для хранилища;
<source-dev> – устройство-источник для хранилища;
<source-name> – имя-источника для хранилища;
<target> – путь к хранилищу.

pool-define <FILE> – назначить (но не запускать) пул из XML-файла;
pool-define-as <name> [––print-xml] <type> [<source-host>] [<source-path>] [<source-dev>] [<source-name>] [<target>] – создать пул с набором параметров:

<name> – имя пула;
––print-xml – напечатать XML-формат, но не назначать и не создавать конфигурацию;
<type> – тип создаваемого пула (dir, fs, netfs, logical, disk, scsi, iscsi, mpath);
<source-host> – хост-источник для создаваемого хранилища;
<source-path> – путь-источник для хранилища;
<source-dev> – устройство-источник для хранилища;
<source-name> - имя-источника для хранилища;
<target> – путь к хранилищу.

pool-destroy <pool> – остановить указанный пул;
pool-delete <pool> – удалить пул;
pool-dumpxml <pool> – вывести информацию о пуле в XML-формате;
pool-edit <pool> – редактировать XML-конфигурацию пула;
pool-info <pool> – вывести информацию о пуле;
pool-list [––inactive|––all] – вывести список пулов;
pool-name <uuid> – конвертация UUID пула в его имя;
pool-refresh <pool> – обновить состояние пула;
pool-start <pool> – запустить (предварительно назначеный) неактивный пул;
pool-undefine <pool> – удалить конфигурацию неактивного пула;
pool-uuid <pool> – конвертация имени пула в его UUID.

9. Команды управления томами. Тома используются в качестве виртуальных дисков в гостевых системах.
vol-create <pool> <FILE> – создать том из XML-файла в указанном пуле;
vol-create-from <pool> <FILE> [––inputpool <string>] <vol> – создать том, в указанном пуле;
vol-create-as <pool> <name> <capacity> [––allocation <string>] [––format <string>] – создать том с набором параметров, размер определяется суффиксами k, M, G, T; типы форматов:

raw – обычный файл
bochs – формат образа диска Bochs
cloop – формат сжатого loopback образа диска
cow – формат User Mode Linux
dmg – Mac формат
iso – CDROM формат
qcow – QEMU v1 формат
qcow2 – QEMU v2 формат
vmdk – VMWare формат
vpc – VirtualPC формат

vol-clone [––pool <string>] <vol> <newname> – клонировать существующий том;
vol-delete [––pool <string>] <vol> – удалить указанный том;
vol-dumpxml [––pool <string>] <vol> – вывести информацию о томе в XML-формате;
vol-info [––pool <string>] <vol> – вывести основную информацию о томе;
vol-list <pool> – вывести список томов в указанном пуле;
vol-path [––pool <string>] <vol> – показать путь к тому используя его имя;
vol-name <path> – сконвертировать путь тома в его имя (ориг.текст – convert a vol UUID to vol name);
vol-key <vol> – сконвертировать UUID тома в его имя. (не совсем понятно где взять UUID в XML-описании я его не увидел).

Авторами оригинальных текстов являются Andrew Puch, Daniel Veillard, Sean Dague (xm man page) и Daniel Stekloff.

Примеры:

назначить и запустить пул ‘test’ типа ‘dir’ размещенный в каталоге /var/pooldir (каталог находится на устройстве /dev/volgroup00/var)

virsh> pool-create-as testpool dir localhost /var/pooldir /dev/volgroup00/var testpool /var/pooldir
virsh> pool-autostart testpool

создать том c именем server01-sdb, в пуле testpool, размером 8 Гб с форматом raw

virsh> vol-create-as testpool server01-sdb 8G ––format raw

подключить файл /var/testpool/server01-sdb к гостевой машине server01, как дополнительный диск sdb

virsh> attach-disk server01 /var/testpool/server01-sdb sdb ––driver file ––type disk[/spoiler]

офф сайт
Помни прошлое, живи настоящим и думай о будущем.
Изображение
Аватара пользователя
zaka
Эникейщик
Эникейщик
Сообщения: 461
Зарегистрирован: 19 май 2010, 08:52

Re: Qemu-kvm for ubuntu *-)!

Сообщение zaka » 09 ноя 2011, 20:17

Настраиваем мост (bridge-utils)
1) Мы уже установили пакет bridge-utils или можете отдельно поставить

Код: Выделить всё

sudo apt-get install bridge-utils
Поддержка бриджинга есть в текущих ядрах 2.4 и 2.6 всех основных дистрибутивов Linux. Требуемый комплект утилит для администрирования bridge-utils есть практически во всех дистрибутивах.

Ручная конфигурация
Сетевые карты
Перед тем как вы приступите к настройке коммутатора, убедитесь, что сетевые карты работают нормально. Не устанавливайте на них IP-адресов, и не позволяйте начальным скриптам выполнять DHCP-запрос с них. IP-адреса должны устанавливаться уже после того как бридж сконфигурирован.
Команда ifconfig должна показывать обе (или больше, если их больше) сетевые карты, и они должны быть выключены, т.е. находиться в состоянии DOWN.
Загрузка модуля
В большинстве случаев код коммутатора оформляется в виде модуля. Если модуль сконфигурирован и установлен корректно, он автоматически загружается при первом вызове команды brctl.
Если ваши утилиты bridge-utilities корректно установлены, и ядро и его модуль bridge в порядке, вызовом команды brctl можно будет просмотреть маленькую сводку о синтаксисе команды:
[spoilerПроверяем:]brctl
# commands:
addbr <bridge> add bridge
delbr <bridge> delete bridge
addif <bridge> <device> add interface to bridge
delif <bridge> <device> delete interface from bridge
setageing <bridge> <time> set ageing time
setbridgeprio <bridge> <prio> set bridge priority
setfd <bridge> <time> set bridge forward delay
sethello <bridge> <time> set hello time
setmaxage <bridge> <time> set max message age
setpathcost <bridge> <port> <cost> set path cost
setportprio <bridge> <port> <prio> set port priority
show show a list of bridges
showmacs <bridge> show a list of mac addrs
showstp <bridge> show bridge stp info
stp <bridge> <state> turn stp on/off[/spoiler]
Команда:

Код: Выделить всё

brctl addbr "bridgename"
создаёт экземпляр логического коммутатора с именем bridgename. Для того чтобы выполнять коммутацию пакетов, нужно создать хотя бы один коммутатор . Можно воспринимать логический бридж как контейнер интерфейсов, принимающих участие в коммутации. Каждый экземпляр коммутатора представлен новым сетевым интерфейсом

Соответствующая команда для удаления коммутатора:

Код: Выделить всё

brctl delbr bridgename
Включение устройства в коммутатор
Команда

Код: Выделить всё

brctl addif bridgename device
пример : brctl addif br0 eth0
включает сетевое устройство device в коммутатор с именем "bridgename." Все устройства, включенные в один бридж работают как одна большая сеть. Нельзя добавить устройство в несколько бриджей одновременно, поскольку это не имеет никакого смысла. Коммутатору потребуется небольшое время после того как устройство подключено, для того чтобы узнать его Ethernet-адрес, а затем он начинает делать перенаправление

Соответствующая команда для выключения устройства из коммутатора:

Код: Выделить всё

brctl delif bridgename device
Просмотр устройств
Команда brctl show показывает состояние всех работающих коммутаторов:

Код: Выделить всё

brctl show
Вывод: bridge name bridge id STP enabled interfaces
br549 8000.00004c9f0bd2 no eth0
eth0
Смотри мак адреса бриджа

Код: Выделить всё

brctl showmacs br0
Вывод:
zaka@leptop:~$ brctl showmacs br0
port no mac addr is local? ageing timer
1 00:19:21:3b:be:5b no 0.01
1 00:1d:0f:16:f9:d7 no 109.95
1 00:1d:7d:71:c0:06 no 63.32
1 00:21:97:74:fa:6c no 178.49
1 00:21:97:c8:12:43 no 11.36
1 00:25:11:d1:0d:bf no 31.71
1 00:25:22:25:39:a8 no 54.67
1 00:30:67:15:8a:1d no 236.76
1 00:e0:4c:19:4c:cd no 146.11
1 00:e0:4c:80:25:52 no 8.97
1 d8:5d:4c:6f:d3:f6 no 293.32
1 e8:11:32:1a:8c:17 yes 0.00


Пример настройки
Базовая настройка моста выполняется так (временная настройка до перезагрузки):

Код: Выделить всё

ifconfig eth0 0.0.0.0
 brctl addbr br0 # создаем  мост с именем br0
 brctl addif br0 eth0 # втыкаем br0 в eth0 
 ifconfig br0 up # поднимаем br0
Присваиваем IP

Код: Выделить всё

# ifconfig ик0 192.168.0.62 netmask 255.255.255.0


Для DHCP

Код: Выделить всё

ifconfig eth0 0.0.0.0
brctl addbr br0
brctl addif br eth0
 dhclient br0
но я сделал вот так
прописал в nano /etc/network/interfaces

Код: Выделить всё

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.0.62
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.88
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
Примечание пришлось отключить network-manager )).
Помни прошлое, живи настоящим и думай о будущем.
Изображение
Аватара пользователя
zaka
Эникейщик
Эникейщик
Сообщения: 461
Зарегистрирован: 19 май 2010, 08:52

Re: Qemu-kvm for ubuntu *-)!

Сообщение zaka » 14 ноя 2011, 09:37

время от времени мне понадобилось включать network-manager по этому я сделал так

Код: Выделить всё

touch bridge.sh # создаем файл bridge
вписываем в этот файл скриптик.

Код: Выделить всё

#! /bin/bash
/etc/init.d/network-manager stop
ifconfig eth0 0.0.0.0
brctl addbr br0 
brctl addif br0 eth0 
/etc/init.d/networking start
ifconfig eth0 192.168.0.62 netmask 255.255.255.0
ifconfig br0 up 
даем право на запуска

Код: Выделить всё

chmod +x bridge.sh 
запускаем

Код: Выделить всё

sudo sh ./bridge.sh 
Вроде все работает пинг из виртулки (FreeBSD) до шлюза доходит и наоборот сейчас обновляю порты.
Теперь могу подымать мост только когда надо ))
Помни прошлое, живи настоящим и думай о будущем.
Изображение
Аватара пользователя
Gen1us2k
Модератор
Модератор
Сообщения: 771
Зарегистрирован: 02 мар 2010, 16:13

Re: Qemu-kvm for ubuntu *-)!

Сообщение Gen1us2k » 15 ноя 2011, 17:49

Если запускать линухсы, то kvm хватит, если нет, то qemu
Изображение
Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Re: Qemu-kvm for ubuntu *-)!

Сообщение Raven » 15 ноя 2011, 18:41

У мну фрюх и венды под квм прекрасно себя чувствуют
Я не злопамятный, я просто часто ковыряю логи
Ответить

Вернуться в «Документация *nix»