<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Александр Горбач</title>
	<atom:link href="http://gorbach.me/feed/" rel="self" type="application/rss+xml" />
	<link>http://gorbach.me</link>
	<description>программирование, админство</description>
	<lastBuildDate>Mon, 28 Nov 2011 01:59:51 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Настройка KVM под Ubuntu Server 10.04 LTS. Часть 7 – FAQ</title>
		<link>http://gorbach.me/2011/ubuntu-10-04-lts-faq/</link>
		<comments>http://gorbach.me/2011/ubuntu-10-04-lts-faq/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 01:59:51 +0000</pubDate>
		<dc:creator>Sash(k)a</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://gorbach.me/?p=85</guid>
		<description><![CDATA[Частые вопросы Как предотвратить конфликты Virtualbox и KVM? Установка kvm загружает модуль kvm (или kvm-intel в моем случае) который не позволяет запуск других программ вирутализации, к примеру virtualbox. Хорошая новость в том, что вы можете отключить kvm и выгрузить его модули. То есть вы просто: 1. Убедитесь что вы полностью выключили все ваши виртуальные машины [...]]]></description>
			<content:encoded><![CDATA[<h2>Частые вопросы</h2>
<h3>Как предотвратить конфликты Virtualbox и KVM?</h3>
<p>Установка kvm загружает модуль kvm (или kvm-intel в моем случае) который не позволяет запуск других программ вирутализации, к примеру virtualbox.<br />
<span id="more-85"></span><br />
Хорошая новость в том, что вы можете отключить kvm и выгрузить его модули. То есть вы просто:</p>
<p>1. Убедитесь что вы полностью выключили все ваши виртуальные машины  kvm (используйте  virt-manager или что-нибудь еще).</p>
<p>2. Выгрузите все его модули:<br />
<code>$ sudo service qemu-kvm stop</code></p>
<h3>Как загрузить виртуальную машину в однопользовательском режиме (single mode)?</h3>
<p>Виртуальная машина имеет нормальный BIOS, и она так же запускает GRUB. Плохо то, что он исчезает через несколько секунд, в большинстве случаев вы не успеваете подключиться, используя virt-viewer. Здесь есть маленький трюк: выключите виртуальную машину, запустите virt-viewer с аргументом &#8211;wait (при этом он будет ждать, когда запустится виртуальная машина и всплывает непосредственно после этого), и затем запустите виртуальную машину; это должно дать вам нормальные две секунды для того чтобы войти в BIOS или получить доступ к меню grub.</p>
<p>Если вы запускаете виртуальные машины, собранные ubuntu-vm-builder, то там есть маленький баг, который не даст вам залогиниться; в grub, выберите линию восстановления (recovery) и нажмите&raquo;e&raquo;; выберите линию, начинающуюся с &laquo;kernel&raquo;, нажмите &laquo;e&raquo; снова. В конце лини добавьте &laquo;init=/bin/sh&raquo; (без кавычек). Подтвердите нажатием enter, и нажмите &laquo;b&raquo; для того, чтобы загрузить ядро с этими настройками.</p>
<h3>Как сконвертировать машины VMware в virt-manager (KVM)?</p>
<p>Если вы хотите сконвертировать Windows (XP) vmdk вы должны вначале сделать две вещи пока ваша машина запущена в VMWare:</p>
<p>1. Включить IDE в реестре. Запустите машину и выполните mergeide.reg. См. <a href="http://pve.proxmox.com/wiki/Migration_of_servers_to_Proxmox_VE#Prepare_the_Windows_operating_system_2">ProxMox wiki</a>.</p>
<p>2. Удалите VMWare tools через Панель управления.</p>
<p>Если это не работает (выдает BSOD когда запускает сконвертированную виртуальную машину), вы может запустить сконвертированную виртуальную машину с Windows XP CD. Не выбирайте &#8216;R = Repair&#8217;, но выберите &#8216;Install&#8217;. Спустя некоторое время, установщик Windows setup покажет вам существующую установку windows (к примеру, расположенную в C:\Windows) и вы согласитесь на попытку восстановить эту установку. Обновления Windows будут сброшены после этой процедуры, но все ваши программы, настройки, документы и т.п. будут на месте. После этой процедуры, вы переактивируете Windows, но виртуальная машина будет загружаться.</p>
<p>Для использования машины VMware внутри virt-manager, файл .vmx должен быть сконвертирован в .xml  libvirt-а. vmware2libvirt создана для того чтобы помочь вам в этом. Она доступна в пакете &#8216;virt-goodies&#8217;. После установки она может быть использована таким образом:<br />
<code><br />
$ vmware2libvirt -f ./file.vmx > file.xml<br />
$ virsh -c qemu:///system define file.xml<br />
</code><br />
Первая команда конвертирует файл VMware &#8216;file.vmx&#8217; в совместимый с libvirt &#8216;file.xml&#8217;. Смотри man vmware2libvirt  для подробностей. Вторая команда импортирует file.xml в libvirt. Импортированный .xml хранится в /etc/libvirt/qemu.</p>
<p><strong>Предостережения</strong><br />
Пока работает vmware2libvirt нормально только с простыми виртуальными машинами, это ограничение присутствует потому что файлы .vmx не всегда содержат достаточно информации, и так же потому что vmware2libvirt старается не делать слишком много предположений что он нашел в конфигах. Пара вещей для размышления:<br />
Когда vmware2libvirt пытается определить 64-битную гостевую машину, убедитесь что ваша 64-битная гостевая машина имеет в своем .xml файле:<br />
<code><br />
&lt;os><br />
 &lt;type arch='x86_64' machine='pc'>hvm&lt;/type><br />
 ...<br />
&lt;/os><br />
</code><br />
vmware2libvirt определяет и использует только первый найденный сетевой контроллер. Дополнительные интерфейсы могут быть добавлены virt-manager.<br />
В настоящий момент первый scsi используется если найден, иначе первый ide диск. Дополнительные диски могут быть добавлены virt-manager.<br />
Перобразованная виртуальная машина использует по умолчанию всегда один процессор. Это может быть изменено с помощью<br />
<code><br />
&lt;vcpu>2&lt;/vcpu><br />
</code><br />
vmware2libvirt не делает (и не умеет) преобразование чего-либо, что является специфичным для VMware. См. &laquo;Примечания к гостевым машинам&raquo; ниже для подробностей.</p>
<h3>Использование и конвертирования файлов виртуальных дисков VMWare</h3>
<p>kvm  имеет возможность непосредственно использовать файлы дисков VMWare.vmdk, пока диск целиком не содержится в едином файле vmdk.</p>
<p>Но VMWare также позволяет разбивать диск по меньшим, обычно 2Гб, файлам. kvm не может их использовать. Вы можете преобразовать эти файлы в единый виртуальный диск используя vmware-vdiskmanager. Он включен в VMWare Server (доступен свободно).</p>
<p><code><br />
$ vmware-vdiskmanager -r &lt;Name of splitted vmdk base file> -t 0 &lt;Name of new single vmdk file><br />
</code><br />
<strong>ВАЖНО: держите в голове что вы должны сначала удалить все снимки (через веб-интерфейс если вы используете VMWare Server 2.0) перед тем как вы это сделаете, иначе ваш преобразованные диск не будет содержать последнее состояние системы. Удаление этих снимков займет всего лишь несколько минут, после чего файлы вида *-000001.vmdk могут исчезнуть из вашей директории.</strong></p>
<p>Измените xml файл виртуальной машины в /etc/libvirt/qemu:<br />
<code><br />
 ...<br />
 &lt;disk type='file' device='disk'><br />
      &lt;driver name='qemu' type='vmdk'/><br />
      &lt;source file='/var/lib/libvirt/images/diskname.vmdk'/><br />
      &lt;target dev='hda' bus='ide'/><br />
 &lt;/disk><br />
 ...<br />
</code><br />
и перезагрузите его:<br />
<code><br />
$ virsh -c qemu:///system define NameOfMachine.xml<br />
</code><br />
<strong>ВАЖНО: помните, что файлы  .vmx, преобразованные в .xml, используются как есть. Пожалуйста, делайте резервные копии, особенно если вы планируете использовать виртуальную машину позже в VMWare.</strong></p>
<p>kvm не может сделать быстрых снимков состояния когда используются файлы дисков vmdk. Так что я рекомендую преобразовать эти диски в формат qemu qcow2. Пакет qemu содержит для этого утилиту qemu-img:<br />
<code><br />
qemu-img convert diskname.vmdk -O qcow2 diskname.qcow2<br />
</code><br />
ИЛИ для raw<br />
<code><br />
qemu-img convert diskname.vmdk -O raw diskname.raw<br />
</code><br />
измените xml файл машины и презагрузите его (см. выше). Добавление диска через virt-manager всегда добавляет его как raw-диск. Вам может понадобиться отредактировать  xml как показано ниже для того, чтобы убедиться что он работает как qcow2. Важное место начинается с &laquo;type=&#8217;qcow2&#8242;&raquo; вместо type=&#8217;raw&#8217;!</p>
<p><code><br />
...<br />
    &lt;disk type='file' device='disk'><br />
      &lt;driver name='qemu' type='qcow2'/><br />
      &lt;source file='/.../diskname.qcow2'/><br />
      &lt;target dev='hdb' bus='ide'/><br />
    &lt;/disk><br />
...<br />
</code></p>
<h4>Нужно ли оставлять VMWare Tools после преобразованийbe?</h4>
<p>Если преобразование из vmware в libvirt, убедитесь что удалили vmware-tools если вы их устанавливали (иначе они перезапишут xorg.conf во время перезагрузки)</p>
<h3>Как преобразовать реальную физическую машину в virt-manager</h3>
<p>Если вы желаете преобразовать физическую машину Windows (XP) вы во-первых должны включить в реестре IDE. Запустите машину и запустите mergeide.reg. См. ProxMox wiki для очень подробной интсрукции.</p>
<h4>использование VMWare Converter</h4>
<p>VMWare Converter это бесплатная утилита для переноса физической машины в VMWare. Таким образом, первый шаг &#8211; это перенос виртуальной машины в образ image. Второй шаг &#8211; это следовать инструкции &laquo;Как преобразовать машину VMWare в virt-manager&raquo; (см. выше).</p>
<h4>использование linux tools</h4>
<p>См. немецкую книгу о переносе.</p>
<h3>Нужно ли использовать ntp для синхронизации времени?</h3>
<p>Гостевым машинам не нужно использовать ntp для синхронизации часов, так что убедитесь что удалили/отключили ntpd</p>
<h3>Какой драйвер необходимо использовать для Xorg?</h3>
<h4>Video</h4>
<p>Когда вы первый раз устанавливаете гостевую машину с Linux, используйте видео драйвер &laquo;cirrus&raquo;. После установки, если вам понадобится разрешение Post выше 800х600, переключитесь на стандартный видео драйвер</p>
<p>xorg.conf &#8211;  &laquo;depreciated&raquo; и таким образом по умолчанию отсутствует в Linux. Для использования &laquo;стандартного&raquo; видео драйвера поместите следующий файл /etc/X11/xorg.conf<br />
<code></p>
<p>Section "ServerLayout"<br />
        Identifier     "BodhiZazen's KVM xorg.conf"<br />
        Screen      0  "Screen0" 0 0<br />
        InputDevice    "Mouse0" "CorePointer"<br />
        InputDevice    "Keyboard0" "CoreKeyboard"<br />
EndSection</p>
<p>Section "Module"<br />
        Load  "record"<br />
        Load  "dri"<br />
        Load  "extmod"<br />
        Load  "glx"<br />
        Load  "dbe"<br />
        Load  "dri2"<br />
EndSection</p>
<p>Section "InputDevice"<br />
        Identifier  "Keyboard0"<br />
        Driver      "kbd"<br />
EndSection</p>
<p>Section "InputDevice"<br />
        Identifier  "Mouse0"<br />
        Driver      "vmmouse"<br />
        Option      "Protocol" "SysMouse"<br />
        Option      "Device" "/dev/sysmouse"<br />
        Option      "ZAxisMapping" "4 5 6 7"<br />
EndSection</p>
<p>Section "Monitor"<br />
        Identifier   "Monitor0"<br />
        VendorName   "Monitor Vendor"<br />
        ModelName    "Monitor Model"<br />
        HorizSync       20.0 - 50.0<br />
        VertRefresh     40.0 - 80.0<br />
        Option          "DPMS"</p>
<p>EndSection</p>
<p>Section "Device"<br />
        Identifier  "Card0"<br />
        Driver      "vesa"<br />
        VendorName  "KVM - std"<br />
        BoardName   "GD 5446"<br />
        BusID       "PCI:0:2:0"<br />
EndSection</p>
<p>Section "Screen"<br />
        Identifier "Screen0"<br />
        Device     "Card0"<br />
        Monitor    "Monitor0"<br />
        SubSection "Display"<br />
                Viewport   0 0<br />
                Modes "1600x1200"<br />
        EndSubSection<br />
EndSection<br />
</code><br />
Измените строку &laquo;Modes &laquo;1600&#215;1200&#8243; на ваше желаемое разрешение.</p>
<p>Обратите внимание, что драйвер мыши vmmouse . vmmouse включен в большинство дистрибутивов (Debian, Fedora, и Ubuntu все включают этот драйвер по умолчанию).</p>
<p>Установка стандартного видеодрайвера отличается от того, как вы используете KVM.</p>
<p><strong>Командная строка</strong> &#8211; используйте опцию -vgs std<br />
<code><br />
kvm -hda ubuntu.qcow -vga std<br />
</code></p>
<p><strong>Virtmanager</strong> (графический фронтенд}</p>
<p>Когда гостевая машина выключена, перейдите на страницу обзора  , выберите вкладку &laquo;Video&raquo; справа, выберите &laquo;vga&raquo; (стоит раньше cirrus) из выпадающего меню.</p>
<p><strong>Libvirt</strong> &#8211; отредактируйте ваш xml, установите видео в std следующим образом:</p>
<p><code>&lt;model type='vga' vram='9216' heads='1'/></code></p>
<h3>Как установить разрешение экрана гостевой машины в Xorg?</h3>
<p>Если предположить, что вы используете xorg.conf из вышеприведенного примера,  вы можете установить разрешение также редактированием /etc/X11/xorg.conf и установкой нового разрешения по умолчанию ( Modes line как выше) или, когда запущена гостевая машина, используйте системное графическое меню для установки разрешения.</p>
<p>В gnome это System -> Preferences -> Monitors</p>
<p>В XFCE это Applications -> Settings -> Display</p>
<h3>Какие специфичный для системы подстройки рекомендуются?</h3>
<h4>Windows (&lt;Vista)</h4>
<p>В Windows (старее чем Vista) виртуальных машинах необходимо подставить следующую строку в .xml:<br />
<code><br />
&lt;features><br />
  &lt;acpi/><br />
&lt;/features><br />
</code><br />
вместо:<br />
<code><br />
&lt;features/><br />
</code></p>
<h4>Windows Vista</h4>
<p>Виртуальные машины с Windows Vista на борту должны добавить это в xml:<br />
<code><br />
&lt;domain type='kvm'><br />
...<br />
  &lt;features><br />
    &lt;acpi/><br />
  &lt;/features><br />
&lt;/domain><br />
</code></p>
<h4>Debian Sarge</h4>
<p>Debian Sarge (oldstable) могут записать неправильно /boot/grub/menu.lst, в результате в следующей загрузке:</p>
<p><code><br />
pivot_root: no such file or directory<br />
/sbin/init: 432: cannot open dev/console: no such file<br />
Kernel panic: Attempted to kill init!<br />
</code><br />
Чтобы исправить это в меню grub, нажмите &#8216;e&#8217; и подправьте root=/dev/hdb1 чтобы стало root=/dev/hda1. После успешной загрузки, вам необходимо обновить /boot/grub/menu.lst чтобы получилось:</p>
<p><code><br />
# kopt=root=/dev/hda1 ro<br />
</code><br />
и запустить:<br />
<code><br />
# update-grub<br />
</code></p>
<h4>OpenBSD 4.1 (и другие?)</h4>
<p>OpenBSD 4.1 (и, возможно, другие) когда используют сетевой драйвер rtl8139 могут показывать плохую производительность сети и выводить такое сообщение на консоль:</p>
<p><code><br />
re0: watchdog timeout<br />
</code><br />
Это исправляется использованием другой сетевой карты (e1000 подходит для нормальной работы). См. &#8216;Изменение модели сетевой карты&#8217; выше.</p>
<h4>OpenBSD 4.5 and later</h4>
<p>Изменения в ядре OpenBSD kernel привели к повисаниям при загрузке при &laquo;setting tty flags&raquo;. Если это происходит у вас, следуйте инструкциям на http://scie.nti.st/2009/10/4/running-openbsd-4-5-in-kvm-on-ubuntu-linux-9-04</p>
]]></content:encoded>
			<wfw:commentRss>http://gorbach.me/2011/ubuntu-10-04-lts-faq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка KVM под Ubuntu Server 10.04 LTS. Часть 6 – Прямая работа с  KVM</title>
		<link>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-directly/</link>
		<comments>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-directly/#comments</comments>
		<pubDate>Sat, 05 Nov 2011 00:47:17 +0000</pubDate>
		<dc:creator>Sash(k)a</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[админство]]></category>

		<guid isPermaLink="false">http://gorbach.me/?p=75</guid>
		<description><![CDATA[Использование KWM напрямую В основном этот мануал фокусируется на использование KVM через libvirt, однако так же возможно работать с KVM напрямую. Это не рекомендуется, так как довольно таки громоздко, но может быть иногда очень полезно. KVM очень похож на на Qemu и он позволяет запускать машины из командной строки. Основной синтаксис : kvm -m 512 [...]]]></description>
			<content:encoded><![CDATA[<h2>Использование KWM напрямую</h2>
<p>В основном этот мануал фокусируется на использование KVM через libvirt, однако так же возможно работать с KVM напрямую.  Это не рекомендуется, так как довольно таки громоздко, но может быть иногда  очень полезно.<br />
<span id="more-75"></span><br />
KVM очень похож на на Qemu и он позволяет запускать машины из командной строки.</p>
<p>Основной синтаксис :<br />
<code>kvm -m 512 -hda disk.img -cdrom ubuntu.iso -boot d -smp 2</code></p>
<ul>
<li>-m = память(in MB)</li>
<li>-hda = первый жесткий диск</li>
<ul>
<li>Вы можете использовать различный форматы образов .img, .cow</li>
<li> Вы так же можете загрузиться и с жесткого диска.<strong>Будте осторожны с этой опцией,если вы не хотите загрузиться с хостового корневого раздела</strong></li>
<ul>
<li>Синтаксис -hda /dev/sda</li>
<li>Это вызовет ваше меню grub из вашей MBR когда вы запустите kvm.</li>
</ul>
</ul>
<li>-cdrom может быть iso образом или приводом CD/DVD.</li>
<li>-boot [a|c|d|n] загрузиться с дисковода (a), жесткого диска (c), CD-ROM (d), или сети (n)</li>
<li>-smp = количество процессоров</li>
<li>-alt-grab изменить комбинацию Ctrl-Alt захвата мыши на  Ctrl-Alt-Shift ( очень полезно, если вы часто используете некоторые быстрые клавиши как Ctrl-Alt-Del или Windows-E)</li>
</ul>
<p>Вообще, опций гораздо больше. Помощь доступна по команде:<br />
<code>kvm --help</code></p>
<h3>Bridged Networking</h3>
<p>Для того, чтобы запустить KVM используя сетевой мост от польователя, нам необходимо сделать некоторую конфигурацию.</p>
<p>1. Для начала сделайте вашу карту сетевым мостом, как описано в <a href="http://gorbach.me/2011/ubuntu-10-04-lts-kvm-netwoking/" title="Настройка KVM под Ubuntu Server 10.04 LTS. Часть 2 – Настройка сети" target="_blank">Настройка сети в KVM</a></p>
<p>2. Установите uml-utilities</p>
<p><code>sudo apt-get install uml-utilities</code><br />
3. Установите себе разрешение на устройство tun. Используя любой редактор, отредактируйте edit /etc/udev/rules.d/40-permissions.rules, добавьте эти строки в конец файла:<br />
<code>KERNEL=="tun", GROUP="kvm", MODE="0660"</code><br />
4. Перезагрузитесь (для того, чтобы поднялся ваш мост и устройства tun).</p>
<p>5. Отредактируйте /etc/kvm/kvm-ifup добавив sudo в начало команд ip и brctl<br />
<code><br />
 #!/bin/sh</p>
<p> switch=$(ip route ls | awk '/^default / { for(i=0;i<NF;i++) { if ($(i) == "dev") print $(i+1) }}')<br />
 '''sudo''' /sbin/ip link set dev "$1" up<br />
 '''sudo''' /usr/sbin/brctl addif ${switch} $1<br />
 exit 0<br />
</code><br />
6. Нам нужен скрипт-обертка для запуска kvm. Я помещу этот скрипт в ~/bin и назову его kvm-bridge. Если ~/bin в вашей переменной path вы можете вызвать набрать команду  в любом месте. Этот скрипт собран из множества источников<br />
<code><br />
 #!/usr/bin/env bash<br />
 # script to manage tap interface allocation<br />
 # for linux kernels >= 2.6.18</p>
<p> # modified by bodhi.zazen from :<br />
 # http://calamari.reverse-dns.net:980/cgi-bin/moin.cgi/FrequentlyAskedQuestions#head-2511814cb92c14dbe1480089c04f83c281117a86<br />
 # http://ubuntuforums.org/showthread.php?t=528046<br />
 # http://www.howtoforge.com/using-kvm-on-ubuntu-gutsy-gibbon</p>
<p> # set up a tap interface for qemu<br />
 # USERID - uid qemu is being run under.<br />
 USERID=`whoami`</p>
<p> # generate a random mac address for the qemu nic<br />
 # shell script borrowed from user pheldens @ qemu forum</p>
<p> ranmac=$(echo -n DE:AD:BE:EF ; for i in `seq 1 2` ; \<br />
 do echo -n `echo ":$RANDOM$RANDOM" | cut -n -c -3` ;done)</p>
<p> # specify which NIC to use - see qemu.org for others<br />
 # model=r8169<br />
 # Set model based on this how-to<br />
 # http://www.howtoforge.com/using-kvm-on-ubuntu-gutsy-gibbon</p>
<p> model=rtl8139<br />
 iface=`sudo tunctl -b -u $USERID`</p>
<p> # start kvm with our parameters<br />
 # echo "Bringing up interface $iface with mac address $ranmac"<br />
 # nohup added to allow kvm to run independent of the terminal<br />
 nohup kvm -net nic,vlan=0,macaddr=$ranmac -net tap,vlan=0,ifname=$iface $@</p>
<p> # kvm has stopped - no longer using tap interface<br />
 sudo tunctl -d $iface &#038;> /dev/null<br />
</code><br />
7. Установит бит запуска на ваш новый скрипт:</p>
<p><code>chmod 0755 ~/bin/kvm-bridge</code><br />
8. Измените группу суперпользователей для того, чтобы разрешить членам группы kvm запускать скрипт-обертку kvm-bridge и создавать сетевые мосты без запуска KVM от root.</p>
<p><code>visudo</code><br />
Добавьте эти строки  в конец файла:<br />
<code><br />
 # Allow members of the kvm group to configure a bridged virtual network interface<br />
 %kvm ALL=(ALL) NOPASSWD: /sbin/ip, /usr/sbin/brctl, /usr/sbin/tunctl<br />
</code><br />
9. Теперь запускайте kvm из командной строки. <strong>Вам не нужно прописывать сетевой интерфейс</strong></p>
<p><code> kvm-bridge -m 512 -hda disk.img -cdrom ubuntu.iso -boot -d -smp 2</code></p>
<h3>iptables</h3>
<p>Добавляем эти правила в iptables :<br />
<code><br />
# allow incoming packets for kvm guest<br />
IPTABLES -A FORWARD -d $IPADDR_FROM_GUEST_OS -j ACCEPT<br />
# allow outgoing packets from kvm<br />
IPTABLES -A FORWARD -s $IPADDR_FROM_GUEST_OS -j ACCEPT<br />
</code><br />
Измените  "$IPADDR_FROM_GUEST_OS" на реальный ip адрес гостевой kvm машины (Я рассчитываю, что вы сконфигурировали вашу гостевую машину на использование статического IP).</p>
]]></content:encoded>
			<wfw:commentRss>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-directly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка KVM под Ubuntu Server 10.04 LTS. Часть 5 – Получение доступа  к консоли KVM</title>
		<link>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-access-guset-console/</link>
		<comments>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-access-guset-console/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 06:47:53 +0000</pubDate>
		<dc:creator>Sash(k)a</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[админство]]></category>

		<guid isPermaLink="false">http://gorbach.me/?p=68</guid>
		<description><![CDATA[Непосредственный доступ к терминалам посредством последовательной консоли (Serial Console) Возможно получить непосредственный доступ к гостевой машине под KVM используя интерфейс последовательной консоли (Serial Console), в этом случае нет необходимости настраивать сетевой мост, SSH, и прочее в том же духе. Доступ через Serial Console предоставляет другой путь для доступа к вашим серверам в дополнение или вместо [...]]]></description>
			<content:encoded><![CDATA[<h2>Непосредственный доступ к терминалам посредством последовательной консоли (Serial Console)</h2>
<p>Возможно получить непосредственный доступ к гостевой машине под KVM используя интерфейс последовательной консоли (Serial Console), в этом случае нет необходимости настраивать сетевой мост, SSH, и прочее в том же духе. Доступ через Serial Console предоставляет другой путь для доступа к вашим серверам в дополнение или вместо VNC.<br />
<span id="more-68"></span><br />
Нижеописанное выполняется с помощью virsh в качестве интерфейса командной строки к libvirt.</p>
<h3>Конкурирование Serial Console в гостевых машинах</h3>
<p>Для начала, нам необходимо настроить последовательную консоль в гостевой машине, для того, чтобы она могла принимать соединения: </p>
<p><code>sudo editor /etc/init/ttyS0.conf</code><br />
Добавляем конфигурацию:</p>
<p><code># ttyS0 - getty<br />
#<br />
# This service maintains a getty on ttyS0 from the point the system is<br />
# started until it is shut down again.</p>
<p>start on stopped rc RUNLEVEL=[2345]<br />
stop on runlevel [!2345]</p>
<p>respawn<br />
exec /sbin/getty -L 115200 ttyS0 xterm</code></p>
<p>Далее запускаем команду для инициализаии последовательной консоли (или перезапускаем виртуальную машину):</p>
<p><code>sudo start ttyS0</code><br />
Здесь мы используем &laquo;xterm&raquo; в качестве типа терминала, который будет прекрасно работать, если мы подключимся с помощью gnome-terminal (или xterm). Крайне предпочтительно устанавливать вид терминала в соответствие с тем типом терминала, которым вы собираетесь подключаться. Этот тип можно узнать используя следующую команду на сервере, когда вы подключены терминалом:</p>
<p><code>echo $TERM</code><br />
К примеру, если вы запустили screen это будет &laquo;screen&raquo;, для byobu &laquo;screen-bce&raquo;, и т.п.</p>
<p>Вы так же можете установить переменную временно, когда вы уже подключены к консоли:</p>
<p><code>export TERM=screen</code></p>
<h3>Подключение с использованием virsh</h3>
<p>Для начала мы подключаемся локально к сессии qemu:</p>
<p><code>virsh -c qemu:///session</code><br />
Теперь мы в оболочке virsh и запускаем виртуальную машину:</p>
<p><code>start my_vm</code><br />
Когда она запустится &#8211; подключаемся к консоли:</p>
<p><code>console my_vm</code><br />
Нажмите &laquo;Ввод&raquo; (Enter)для получения запроса на вход, и войдите в систему как обычно (примите во внимание, что ввод имени пользователя работает даже если не показывается запрос на вход).</p>
<p>Вуаля! Вы вошли! )</p>
<h3>Различные примечания</h3>
<p>Используйте Ctrl + ] для выхода из консоли.</p>
<p>Если консоль ведет себя странно или отображается некорректно, убедитесь, что переменная TERM установлена правильно (см. выше).</p>
<p>Если похоже, что терминал обрезает верх вывод, измените его до размеров 80&#215;24 символов,  к примеру в byobu это означает, что вам нужно где-то разместить строку статуса и собственно размер самого окна получается 80&#215;26</p>
<p>На это странице отсутствует часть процедуры для доступа к консли.  Инструкция не включает конкурирование хостовой машины для последовательного доступа. Вам может быть придется погуглить если вы идите надпись &laquo;No console available for domain&raquo;.</p>
]]></content:encoded>
			<wfw:commentRss>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-access-guset-console/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка KVM под Ubuntu Server 10.04 LTS. Часть 4 – Управление гостевыми системами</title>
		<link>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-managing-ques/</link>
		<comments>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-managing-ques/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 07:20:56 +0000</pubDate>
		<dc:creator>Sash(k)a</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[админство]]></category>

		<guid isPermaLink="false">http://gorbach.me/?p=64</guid>
		<description><![CDATA[Управление виртуальными машинами Из командной строки Вы можете управлять вашими виртуальными машинами из командной строки используя virsh. Вы можете получить список доступных команд если наберете &#171;help&#187;. Наберите &#171;help command&#187; чтобы получить дополнительную информацию о конкретной команде. Создание новых виртуальных машин Перед тем как вы сможете управлять вашей новой виртуальной машиной, вы должны создать ее: $ [...]]]></description>
			<content:encoded><![CDATA[<h2>Управление виртуальными машинами</h2>
<h3>Из командной строки</h3>
<p>Вы можете управлять вашими виртуальными машинами из командной строки используя virsh. Вы можете получить список доступных команд если наберете &laquo;help&raquo;. Наберите &laquo;help command&raquo; чтобы получить дополнительную информацию о конкретной команде.<br />
<span id="more-64"></span></p>
<h3>Создание новых виртуальных машин</h3>
<p>Перед тем как вы сможете управлять вашей  новой виртуальной машиной, вы должны создать ее:<br />
<code><br />
$ virsh --connect qemu:///system<br />
Connecting to uri: qemu:///system<br />
Welcome to virsh, the virtualization interactive terminal.</p>
<p>Type:  'help' for help with commands<br />
       'quit' to quit</p>
<p>virsh # define /etc/libvirt/qemu/newvm.xml<br />
Domain newvm defined from /etc/libvirt/qemu/newvm.xml<br />
</code><br />
Обратите внимание, что для того чтобы увидеть в списке машину newvm, вы должные использовать &#8216;list &#8211;inactive&#8217; или &#8216;list &#8211;all&#8217;, так как команда list без параметров показывает список только запущенных в настоящее время машин.</p>
<h3>Список виртуальных машин</h3>
<p>Virsh позволяет вам получить список доступных виртуальных машин:</p>
<p><code>yhamon@paris:/etc/libvirt/qemu$ virsh --connect qemu:///system<br />
Connecting to uri: qemu:///system<br />
Welcome to virsh, the virtualization interactive terminal.</p>
<p>Type:  'help' for help with commands<br />
       'quit' to quit</p>
<p>virsh # help list<br />
  NAME<br />
    list - list domains</p>
<p>  SYNOPSIS<br />
    list [--inactive | --all]</p>
<p>  DESCRIPTION<br />
    Returns list of domains.</p>
<p>  OPTIONS<br />
    --inactive       list inactive domains<br />
    --all            list inactive &#038; active domains</p>
<p>virsh # list<br />
 Id Name                 State<br />
----------------------------------<br />
 15 mirror               running<br />
 16 vm2                  running</p>
<p>virsh # list --all<br />
 Id Name                 State<br />
----------------------------------<br />
 15 mirror               running<br />
 16 vm2                  running<br />
  - test5                shut off</code></p>
<h3>Определение, удаление определения, запуск, выключение и уничтожение виртуальных машин</h3>
<p>Виртуальные машины, которые можно увидеть с помощью команды list &#8211;all &#8211; это машины которые &laquo;определены&raquo; из XML-файла. Каждая виртуальные машина конфигурируется с помощью XML файла в директории /etc/libvirt/qemu. Если вы желаете удалить виртуальную машину из списка виртуальных машин, вам необходимо удалить ее определение:</p>
<p><code>virsh # undefine test5   # WARNING: undefine will delete your XML file!<br />
Domain test5 has been undefined</p>
<p>virsh # list --all<br />
 Id Name                 State<br />
----------------------------------<br />
 15 mirror               running<br />
 16 vm2                  running</code><br />
Для того чтобы можно было удалить определение виртуально машины, вам для начала нужно ее выключить:</p>
<p><code>virsh # shutdown mirror<br />
Domain mirror is being shutdown</code><br />
Это команда запрашивает мягкое выключение (аналогично выполнению shutdown в командной строке).</p>
<p>Примечание: Ubuntu 10.04 server не имеет установленного по умолчанию acpid. Этот пакет необходимо установить в гостевую операционную систему перед тем как она будет принимать любые запросы от хостовой системы.</p>
<p>Вы так же можете использовать &laquo;destroy&raquo;, команда более нагло выключает виртуальную машину, аналогично выдергиванию шнура питания:<br />
<code><br />
virsh # destroy mirror<br />
Domain mirror destroyed<br />
</code></p>
<p>Если вы сделали изменения в конфигурационном XML-файле, вам необходимо попросить KVM перезагрузить его и перезапустить виртуальную машину:</p>
<p><code>virsh # define /etc/libvirt/qemu/mirror.xml<br />
Domain mirror defined from /etc/libvirt/qemu/mirror.xml</code></p>
<p>Затем перезапустить виртуальную машину:</p>
<p><code>virsh # start mirror<br />
Domain mirror started</code></p>
<h3>Пауза и восстановление виртуальной машины</h3>
<p>Virsh  позволяет вам легко ставить на паузу и восстанавливать виртуальные машины.</p>
<p><code>virsh # suspend mirror<br />
Domain mirror suspended</p>
<p>virsh # resume mirror<br />
Domain mirror resumed</code></p>
<h2>Редактирование свойств виртуальных машин</h2>
<p>libvirt хранит их конфигурационные файлы как xml в &#8216;/etc/libvirt/qemu&#8217;. xml легок для понимания, и аналогичен файлам VMware *.vmx. Если желаете, то можете редактировать эти файлы  и перезапускать libvirt-bin для того, чтобы изменения вступили в силу, но рекомендованный метод изменения свойств виртуальной машины с помощью virsh (или virt-manager, если он поддерживает свойства аппаратной части, которые нужно править). Концепция проста::</p>
<ol>
<li>экспортируйте (aka &#8216;dump&#8217;) xml-описание виртуальной машины, которую вы желаете поправить</li>
<li>отредактируйте xml</li>
<li>импортируйте (aka &#8216;define&#8217;) xml</li>
</ol>
<p>К примеру, для того что бы отредактировать машину с именем &#8216;foo&#8217; (вы можете получить список виртуальных машин с помощью команды &#8216;virsh list &#8211;all&#8217;), сделайте следующее:</p>
<p><code>$ virsh dumpxml foo > /tmp/foo.xml<br />
(edit /tmp/foo.xml as needed)<br />
$ virsh define /tmp/foo.xml</code></p>
<h3>Добавление процессоров</h3>
<p>KVM позволяет вам создатвать многопроцессорные гостевые машины. Для выделения двух CPUs виртуальной машине, экспортируйте xml как описано выше, затем отредактируйте его чтобы получилось:</p>
<p><code>&lt;domain type='kvm'><br />
  ...<br />
  &lt;vcpu>2&lt;/vcpu><br />
  ...<br />
&lt;/domain><br />
</code></p>
<p>Теперь импортируйте виртуальную машину как описано выше.</p>
<h3>Adding Memory</h3>
<p>Для изменения памяти выделенной виртуальной машине, экспортируйте xml, затем отредактируйте его следующим образом:</p>
<p><code>&lt;domain type='kvm'><br />
  ...<br />
  &lt;memory>262144</memory><br />
  &lt;currentMemory>262144&lt;/currentMemory><br />
  ...<br />
&lt;/domain><br />
</code><br />
Теперь импортируйте xml. Помните, что память выделяется в килобайтах, таким образом для выделения 512Мб памяти укажите  512 * 1024, или 524288.</p>
<h3>Изменение модели сетевой карты</h3>
<p>kvm и qemu сейчас по умолчанию использует rtl8139 NIC. Поддерживаемые модели в i82551, i82557b, i82559er, ne2k_pci, pcnet, rtl8139, e1000, и virtio. Для использования другой NIC, экспортируйте xml как описано выше, затем отредактируйте файл чтобы получилось:<br />
<code><br />
&lt;domain type='kvm'><br />
  ...<br />
    &lt;interface type='network'><br />
      ...<br />
      &lt;model type='e1000'/><br />
    &lt;/interface><br />
  ...<br />
&lt;/domain><br />
</code></p>
<p>Теперь импортируйте описание виртуальной машины.</p>
<h3>Добавление проброса USB устройств (USB Pass-through)</h3>
<h3>Ограничения</h3>
<ul>
<li>USB protocol 1.1 only</li>
<li>Device must be plugged in before KVM starts</li>
<li>Apparmor modifications needed</li>
</ul>
<h3>Модификация Apparmor</h3>
<p>Для того, чтобы программы получали доступ к usb устройствам apparmor должен быть изменения. Отредактируйте /etc/apparmor.d/abstractions/libvirt-qemu и отредактируйте:<br />
<code><br />
# WARNING: uncommenting these gives the guest direct access to host hardware.<br />
# This is required for USB pass through but is a security risk. You have been<br />
# warned.<br />
/sys/bus/usb/devices/ r,<br />
/sys/devices/*/*/usb[0-9]*/** r,<br />
/dev/bus/usb/*/[0-9]* rw,</code></p>
<p>После изменений нужно перезапустить apparmor:</p>
<p><code>$ sudo /etc/init.d/apparmor restart</code></p>
<h3>Добавление USB устройств</h3>
<p>Для начала найдите Vendor ID и Product ID usb устройства:</p>
<p><code>$ lsusb<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
Bus 005 Device 012: ID 0a5c:2110 Broadcom Corp. Bluetooth Controller<br />
Bus 005 Device 003: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader<br />
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub</code><br />
В примере Broadcom Corp. Bluetooth Controller имеет вендора и идентификатор продукта соответственно 0a5c и 2110. Это должно быть указано в xml профиле. Это можно сделать с помощью virsh командой  edit <domain> command.:</p>
<p><code><br />
&lt;domain type='kvm'><br />
  &lt;name>windowsxp&lt;/name><br />
  …<br />
  &lt;devices><br />
    …<br />
    &lt;hostdev mode='subsystem' type='usb'><br />
      &lt;source><br />
        &lt;vendor id='0x0a5c'/><br />
        &lt;product id='0x2110'/><br />
      &lt;/source><br />
    &lt;/hostdev><br />
  &lt;/devices><br />
&lt;/domain><br />
</code></p>
<h2>Получение новых идентификаторов</h2>
<p>Для того, чтобы получить новый mac адрес для вставки в xml файл, используйте команду:</p>
<p><code>MACADDR="52:54:$(dd if=/dev/urandom count=1 2>/dev/null | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4/')"; echo $MACADDR</code></p>
<p>Для получения уникального идентификатор (uuid) для вашего xml-файла, используйте: uuidgen</p>
]]></content:encoded>
			<wfw:commentRss>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-managing-ques/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка KVM под Ubuntu Server 10.04 LTS. Часть 3 – Создание гостевых машин</title>
		<link>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-creating-guest/</link>
		<comments>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-creating-guest/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 04:34:29 +0000</pubDate>
		<dc:creator>Sash(k)a</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[админство]]></category>

		<guid isPermaLink="false">http://gorbach.me/?p=53</guid>
		<description><![CDATA[Создание виртуальных машин Теперь, когда KVM установлен, давайте разберем как создать вашу первую виртуальную машину. Это можно сделать используя: virt-manager: графическое приложение virt-install,скрипт на pythonразработанный компанией Red Hat ubuntu-vm-builder, разработанный Canonical. Ubuntu-vm-builder: быстрый и мощный инструмент для создания виртуальных машин Ubuntu JEOS Ubuntu-vm-builder, возможно, лучший инструмент если вы желаете сделать виртуальный машин в Ubuntu JEOS, [...]]]></description>
			<content:encoded><![CDATA[<h2>Создание виртуальных машин</h2>
<p>Теперь, когда KVM установлен, давайте разберем как создать вашу первую виртуальную машину.<br />
<span id="more-53"></span><br />
Это можно сделать используя:</p>
<ul>
<li>virt-manager: графическое приложение</li>
<li>virt-install,скрипт на pythonразработанный компанией Red Hat</li>
<li>ubuntu-vm-builder, разработанный  Canonical.</li>
</ul>
<h3>Ubuntu-vm-builder: быстрый и мощный инструмент для создания виртуальных машин Ubuntu JEOS</h3>
<p>Ubuntu-vm-builder, возможно, лучший инструмент если вы желаете сделать виртуальный машин в Ubuntu JEOS, так как установка полностью автоматизирована.</p>
<p>Инструмент есть в пакетах в репозитарии:</p>
<p><code>sudo apt-get install ubuntu-vm-builder</code><br />
Примечание: вам необходимо, чтобы был установлен grub, чтобы vmbuilder заработал. Если вы используете lilo для запуска вашей хост-машины, вам все равно необходимо установить пакет Grup. Вы можете продолжать использовать lilo как бут-менеджер основной системы, но  гостевые машины будут использовать grub. grub используется для создания загрузочных образов гостевых систем.</p>
<p>Примечание: убедитесь, что у вас хватает места на разделе с директорией /tmp (1Гб или больше). Также, некоторые локали глючат с ubuntu-vm-builder; en_US &#8211; точно будет рабочей.</p>
<h3>Простое использование</h3>
<p>Ниже самый простой пример как использовать утилиту:</p>
<p><code>sudo ubuntu-vm-builder kvm hardy</code><br />
Это сделает  Ubuntu Hardy, со всеми параметрами, установленными по умлочанию.</p>
<p>Или же вы можете использовать эту ссылку для Javascript-ового инструмента, который генерирует кучу параметров, доступных для ubuntu-vm-builder:</p>
<p><code>http://people.ubuntu.com/~kirkland/ubuntu-vm-builder.html</code><br />
Примечание: если вы используете Virsh для управления вашими виртуальными машинами, как описано ниже, то вам необходимо добавить параметр:<br />
<code>--libvirt qemu:///system</code><br />
Скрипт, к сожалению, не может добавить этой опции.</p>
<p>Примечание: когда используется параметр &#8211;libvirt, xml-файл отправляется в libvirt и не сохраняется локально. Используйте virsh -c qemu:///system или virt-manager -c qemu:///system для запуска вашей машины или изменения ее конфигурации.</p>
<h3>Более продвинутый пример</h3>
<p>Теперь разберем более продвинутый пример:<br />
<code>ubuntu-vm-builder kvm hardy \<br />
                  --domain newvm \<br />
                  --dest newvm \<br />
                  --arch i386 \<br />
                  --hostname hostnameformyvm \<br />
                  --mem 256 \<br />
                  --user john \<br />
                  --pass doe \<br />
                  --ip 192.168.0.12 \<br />
                  --mask 255.255.255.0 \<br />
                  --net 192.168.0.0 \<br />
                  --bcast 192.168.0.255 \<br />
                  --gw 192.168.0.1 \<br />
                  --dns 192.168.0.1 \<br />
                  --mirror http://archive.localubuntumirror.net/ubuntu \<br />
                  --components main,universe \<br />
                  --addpkg acpid \<br />
                  --addpkg vim \<br />
                  --addpkg openssh-server \<br />
                  --addpkg avahi-daemon \<br />
                  --libvirt qemu:///system ;</code></p>
<p>Этак команда создаст новую виртуальную машину Ubuntu Hardy с именем &laquo;newvm&raquo;, сетевое имя машины будет &laquo;hostnameformyvm&raquo;, сеть будет сконфигурирована со статическим IP-адресом и адрес шлюза будет 192.168.0.1. Ключ &#8211;mirror указывает скрипту на то, чтобы  скачивать пакеты с локального зеркала Ubuntu вместо сервера по умолчанию (это может сэкономить много времени при создании виртуальной машины). Параметр components включает репозитарии main и universe по умолчанию в виртуальной машине, &#8211;addpkg vim устанавливает vim, и, наконец, последний аргумент добавляет только что созданную виртуальную машину в KVM.</p>
<p>Добавлением &#8216;openssh-server&#8217; с помощью &#8211;addpkg, мы делаем возможным подключение по ssh к нашей новой машине после ее запуска (если сеть будет работать правильно).</p>
<p>Добавлением &#8216;avahi-daemon&#8217; виртуальная машина добавляет запись MDNS (&#8216;ubuntu.local&#8217; в этом примере), так что вы можете подключиться по ssh right без выяснения какой адрес DHCP присвоил машине.</p>
<p>Примечание: Это руководство не рассматривает опцию &#8211;exec, используемую для запуска скрипта во время процесса сборки виртуальной машины. Если вы используете ключ &#8211;exec, то вы должны указать полный путь к скрипту, который желаете выполнить. Если этого не сделать, можно насечься на сообщение установщика, что он не может найти скрипт.</p>
<p>Предупреждение о багах:  похоже, что пакет &#8216;linux-package&#8217; не будет находиться во время сборки машины, пока &#8216;restricted&#8217; так же указано в опции component ubuntu-vm-builder а. Если не указано, то вы получите нефункионирующую систему, которая может только загружаться в grub. Эта строчка работает:</p>
<p><code>--components 'main,universe,restricted'</code><br />
Скорее всего это глюк ubuntu-vm-builder.</p>
<p>Предупреждение о необходимых пакетах: Когда вы управляется гостевыми машинами, команды выключения и перезагрузки (shutdown/reboot), отправляемые virsh &#8211; это события ACPI. Таким образом чтобы машина нормально перезагружалась/выключалась необходимо включить поддержку ACPI. Если гостевая операционная система Ubuntu &#8211; выполните &laquo;sudo apt-get install acpid&raquo;.</p>
<h3>Запуск машины, созданной в &laquo;продвинутом примере&raquo;</h3>
<p>Единожды создав гостевую машину, вы можете увидеть ее набрав следующее:</p>
<p><code>virsh 'list --all'<br />
You'll see :</p>
<p> Id Name                 State<br />
----------------------------------<br />
 - YourGuestName         shut off</code></p>
<p>Для запуска вашего виртуального сервера, вы можете набрать:</p>
<p><code>virsh start YourGuestName</code></p>
<h3>Доступ к новому серверу удаленно, используя SSH туннель / VNC</h3>
<p>Если ваш сервер удаленный, то вы можете использовать две следующие команды с вашей локальной машины.</p>
<p>Первая гостевая машина доступна по умолчанию по адресуvnc:127.0.0.1:5900. Если вы удаленно подключетесь к серверу, вы можете настроить ssh туннель и удаленно подключиться по vnc к виртуальному серверу.</p>
<p>Из терминала на локальной машине:</p>
<p><code>ssh YOURUSER@YOURSERVER -L5900:127.0.0.1:5900</code><br />
Теперь идите в  Приложения -> Интернет-> Подключение к удаленному рабочему столу. Протокол : VNC Хост : 127.0.0.1 Все остальное по умолчанию.</p>
<p>Это позволит вам подключиться к вашей первой гостевой машине.</p>
<h3>Установка на не форматированные блочные устройства (raw devices)</h3>
<p>Ubuntu-vm-builder не поддерживает создание виртуальных машина на raw блочных устройствах (таких как отдельный раздел или iSCSI шара). Вы можете использовать ubuntu-vm-builder для создания образа qcow2 и затем переместить виртуальную машину на блочное устройство с помощью qemu-img, например, если /dev/sdb это блочное устройство, на которое вы желаете перенести виртуальную машину:</p>
<p><code>sudo qemu-img convert root.qcow2 -O raw /dev/sdb</code></p>
<p>Отредактируйте XML файл виртуальной машины в /etc/libvirt/qemu/, и установит параметр source file:</p>
<p><code><source file='/dev/sdb'/></code></p>
<p>Переопределите виртуальную машину и запустите ее; теперь он работает с /dev/sdb.</p>
<p>Ubuntu-vm-builder это очень мощный инструмент &#8211; для получения более подробного описания ее возможностей наберите ubuntu-vm-builder &#8211;help.</p>
<h2>Создание виртуальных машин с другими операционными системам: virt-install</h2>
<p>Virt-install кардинально отличается в способе работы. Вместо автоматического создания новой виртуальной машины, он позволяет вам загрузить iso &#8211; образ, и, поэтому, установить практически любую операционную систему. Для списка поддерживаемых операционных систем, просмотрите официальную страницу KVM.</p>
<p>Так как нам необходим virt-install для установки гостевых систем Windows, здесь мы опишем как установить гостевой системой windows XP. В проессе установки возникает много мелких нюансов, потому опишем так же обходные пути.</p>
<h3>Пример установки Windows</h3>
<p><a href="http://gorbach.me/files/2011/08/windows-kvm.png"><img src="http://gorbach.me/files/2011/08/windows-kvm.png" alt="установка windows на kvm" title="установка windows на kvm" width="648" height="536" class="aligncenter size-full wp-image-56" /></a></p>
<p>Скопируйте ISO-образ системы, которую вы желаете установить в вашу рабочую директорию:</p>
<p><code>yhamon@paris:~$ ls *.iso<br />
ubuntu-8.04-server-i386.iso  windowsxpsp2.iso</code><br />
или создайте ISO из cd/dvd:</p>
<p><code>dd if=/dev/dvd of=dvd.iso</code><br />
Установка virt-install:<br />
<code>sudo apt-get install python-virtinst</code><br />
Затем, вам необходимо запустить virt-install.</p>
<p><code>sudo virt-install --connect qemu:///system -n xpsp2 -r 512 -f windows.qcow2 -s 12 -c windowsxpsp2.iso --vnc --noautoconsole --os-type windows --os-variant winxp</code></p>
<p>Эта команда загрузит новую виртуальную машину с ISO-образа. Присоединитесь к новой виртуальной машине с помощью virt-viewer:</p>
<p><code>virt-viewer -c qemu:///system xpsp2</code><br />
Или, если KVM запущен на другом сервере:</p>
<p><code>virt-viewer -c qemu+ssh://ip/system xpsp2</code></p>
<p>Теперь вы можете приступить к установке. Другая проблема возникает после первой перезагрузки в процессе установки, когда установщик виндовс будет ругаться на то, что он не видит больше диска. В XML файле вируталной машине добьте следующее к списку устройств:</p>
<p>&lt;code>&lt;domain type=&#8217;kvm&#8217;><br />
  [...]<br />
  &lt;devices><br />
    [...]<br />
    &lt;disk type=&#8217;file&#8217; device=&#8217;cdrom&#8217;><br />
      &lt;source file=&#8217;//home/yhamon/windowsxpsp2.iso&#8217;/><br />
      &lt;target dev=&#8217;hdc&#8217; bus=&#8217;ide&#8217;/><br />
      &lt;readonly/><br />
    &lt;/disk><br />
  &lt;/devices><br />
&lt;/domain>&lt;/code><br />
Переопределите  VM в virsh (sudo virsh define /etc/libvirt/qemu/xpsp2.xml) и перезапустите гостевую машину &#8211; все должно заработать.</p>
<p>Другая проблема с virt-install в сочетании с Windows в том, что созданный образ диска поврежден. При первой установке все вроде бы работает, но после перезагрузки она останавливается с сообщением &#8216;A read error occured&#8217; (произошла ошибка чтения). Это может быть легко исправлено созданием нового образа диска (перед установкой):</p>
<p><code>qemu-img create -f qcow2 disk0.qcow2 12G</code><br />
Перезапишите файл qcow2, созданный virt-install новым файлом, перезагрузите гостевую машину и можно продолжать.</p>
<h3> Пример установки Ubuntu</h3>
<p>Вы можете использовать нижеследующее для установки Ubuntu Hardy:</p>
<p><code>sudo virt-install --connect qemu:///system -n hardy -r 512 -f hardy.qcow2 -s 12 -c hardy-server-amd64.iso --vnc --noautoconsole --os-type linux --os-variant ubuntuHardy --accelerate --network=network:default<br />
</code><br />
Опция &#8216;&#8211;network&#8217; настраивает машину на использование дефолтной сети libvirt. Вы можете просмотреть доступные сети libvirt networks с помощью:</p>
<p><code>virsh net-list --all</code></p>
<h3>Другие операционные системы</h3>
<p>Другие операционные системы могут быть установлены при помощи методов, описанных выше. Изучайте &#8216;man virt-install&#8217; для более подробной информации о друиг параметрах для ваших виртуальных машинах и поддерживаемых типах операционных систем и видов.</p>
<p>Внимание: этот метод не работает с установкой Fedora LiveCD, и, вобзможно другими; см ошибку здесь: https://bugs.launchpad.net/ubuntu/+source/kvm/+bug/220463</p>
<h2>Клонирование виртуальной машины</h2>
<p>Вы можете клонировать существующую виртуальную машину используя утилиту virt-clone. Она копирует образ диска и устанавливает конфигурацию виртуального домена машины.</p>
<p>Если вы желаете склонировать виртуальную машину с именем srchost в новую машину newhost, убедитесь, что машина srchost не запущена и выполните следующую команду.</p>
<p><code>$ virt-clone --connect=qemu:///system -o srchost -n newhost -f /path/to/newhost.qcow2</code></p>
<h2> Создание виртуальной машины на существующем образе</h2>
<p>Если предположить что:</p>
<ul>
<li>Virt-manager используется для управления виртуальными машинами.</li>
<li>Вы жалете добавить уже существующий образ в virt-manager.</li>
</ul>
<p>Вариант решения:</p>
<p>Используя qcow2 с наложением, вы можете по жесткой экспериментировать с вашими виртуальными машинами без заморочек с полной переустановкой вашей машины при ее повреждении. Побочный эффект этого метода по сравнению с клонированием, это более экономное использование дискового пространства.</p>
<p>Процедура по шагам:</p>
<p>1. Создайте образ жесткого диска формата qcow2:</p>
<p><code>$ qemu-img create -f qcow2 <image name>.qcow2</code><br />
2. Установите виртуальную машину, используя  virt-manager:</p>
<p>Вместо разрешения virt-manager у создать новый образ диска, просто перенаправьте его на использование образа, который мы сделали в предыдущем шаге.</p>
<p>3. создание наложения:</p>
<p><code>$ qemu-img create -f qcow2 -b <image name>.qcow2 <image name>.ovl</code><br />
4. Создайте XML-файл описания виртуального образа:</p>
<p>Прочтите сначала:</p>
<p><code>$ man virt-image<br />
$ man 5 virt-image<br />
</code><br />
Скопируйте XML-файл, созданный ранее в шаге 2:</p>
<p><code>$ cp ~/.libvirt/qemu/<vm name>.xml overlay.xml</code><br />
Теперь, используя ваш любимый редактор, откройте и отредактируйте скопированный XML-файл:<br />
<code>$ <editor> overlay.xml</code></p>
<p>Создайте XML описание виртуального образа, опираясь на страницу мана virt-image(5). Я просто закомментировал оригинальный текст, и использовал его как руководство по созданию нового описания.</p>
<p>5. Создайте новую виртуальную машину из описания образа:</p>
<p><code>$ virt-image --vnc overlay.xml</code><br />
6. Запустите и проверьте новую виртуальную машину, основанную на технологии наложения.<br />
Откройте новую виртуальную машину в virt-manager и проверьте, что все что дорого вашему сердцу на месте. Если вы поломали виртуальную машину, просто удалите ее. Затем, пересоздайте образ-наложение (overlay image) и пересоздайтевиртулаьную машину как описано выше. Вы можете если желаете зафиксировать изменения в базовый образ (см man qemu для подробностей).</p>
<h2>Смотри так же</h2>
<p>Специфичные для систем рекомендации см в FAQ.</p>
<p>apt-cacher-ng для зеркалирования. Вы можете уменьшить время установки на 3-4 минуты при использовании ubuntu-vm-builder для соответствующих машин.</p>
]]></content:encoded>
			<wfw:commentRss>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-creating-guest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка KVM под Ubuntu Server 10.04 LTS. Часть 2 – Настройка сети</title>
		<link>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-netwoking/</link>
		<comments>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-netwoking/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 08:19:08 +0000</pubDate>
		<dc:creator>Sash(k)a</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[админство]]></category>

		<guid isPermaLink="false">http://gorbach.me/?p=38</guid>
		<description><![CDATA[Есть несколько различных способов настройки доступа виртуальной машины в сеть. Конфигурация виртуальной сети по умолчанию называется Usermode Networking. Трафик NAT-ится через интерфейс хост машины во внешнюю сеть. Или же вы можете настроить Bridged Networking (сетевой мост) для того, чтобы разрешить внешним машинам непосредственный доступ к сервисам, запущенным на гостевой операционной системе. Usermode Networking Это конфигурация [...]]]></description>
			<content:encoded><![CDATA[<p>Есть несколько различных способов настройки доступа виртуальной машины в сеть.</p>
<p>Конфигурация виртуальной сети по умолчанию называется Usermode Networking. Трафик NAT-ится через интерфейс хост машины во внешнюю сеть.<br />
Или же вы можете настроить Bridged Networking (сетевой мост) для того, чтобы разрешить внешним машинам непосредственный доступ к сервисам, запущенным на гостевой операционной системе.<br />
<span id="more-38"></span></p>
<h2>Usermode Networking</h2>
<p>Это конфигурация по умолчанию, при которой гостевая операционная система получает доступ к сетевым сервисам, но невидима для других машин в сети. Гостевая система может, к примеру, просматривать интернет-страницы, но не может иметь доступный веб-сервер.</p>
<p>По умолчанию, гостевая операционная система имеет адрес из пространства адресов 10.0.2.0/24 и хостовая операционная система доступна по адресу 10.0.2.2.</p>
<p>Вы можете получить доступ по ssh к хостовой операционной системе (по адресу 10.0.2.2) из гостевой операционной системы и использовать scp для копирования файлов туда-сюда.</p>
<p>Если эта конфигурация вам подходит, то больше ничего делать не надо.</p>
<p>Если ваши гостевые операционки не имеют доступа к сети &laquo;из коробки&raquo;, смотрите секцию Возможные ошибки ниже.</p>
<h2>Сетевой мост (Bridged Networking)</h2>
<p>Сетевой мост позволяет виртуальным интерфейсам соединяться со внешней сетью через физический интерфейс, давая им возможность появляться как нормальный хост для всей остальной сети.</p>
<p>Внимание: сетевые мосты не буду работать, если физический сетевой интерфейс (к примеру, eth1, ath0) используется для построения моста как беспроводные интерфейсы (к примеру, ipw3945), так как большинство драйверов беспроводных интерфейсов не поддерживают режим сетевых мостов.</p>
<h3>Получение доступа к возможностям CAP_NET_ADMIN</h3>
<p>Сетевые мосты не работают по умолчанию. Начиная с релиза ядра  2.6.18 в сентябре 2006, расширение CAP_NET_ADMIN необходимо для использования сетевых возможностей TUN/TAP(bug #103010).</p>
<p>Устанавливаем пакет qemu-kvm:<br />
<code>sudo apt-get install qemu</code><br />
Устаналиваем инструментарий расширений линукса:<br />
<code>sudo apt-get install libcap2-bin</code><br />
Даем разрешения пользователям к расширению CAP_NET_ADMIN. Доступ к это расширению нужно давать с осторожностью, так как оно позволяет пользователю нарушить полностью функционирование сети в системе.<br />
Даем qemu экземпляр расширения CAP_NET_ADMIN, для 64-х битных:<br />
<code>sudo setcap cap_net_admin=ei /usr/bin/qemu-system-x86_64</code><br />
для 32-х битных:<br />
<code>sudo setcap cap_net_admin=ei /usr/bin/qemu</code><br />
Дам разрешения определенным пользователям использовать возможности расширения CAP_NET_ADMIN редактируя /etc/security/capability.conf:<br />
<code>cap_net_admin        USER-NAME-HERE</code></p>
<p>Обратите внимание, что расширения файловой системы выше, будут потеряны после каждого обновления qemu, так как расширения файловой системы не поддерживаются системой управления пакетов Ubuntu (см. FilesystemCapabilities). Хорошее обозрения расширений Linux и QEMU см. эту статью.</p>
<h3>Создание сетевого моста на хост-системе</h3>
<p>Устанавливаем пакет bridge-utils:<br />
<code>sudo apt-get install bridge-utils</code><br />
Мы переходим к изменению сетевой конфигурации. Для того, чтобы сделать это корректно, остановим сначала сеть:<br />
<code>sudo invoke-rc.d networking stop</code><br />
Если вы подключены по удаленному соединению, и вы не можете остановить работу сети, то продолжайте выполнять следующие команды, и выполните sudo invoke-rc.d networking restart в конце. Если вы где-то сделаете ошибку, то придется все-равно топать ножками до сервера. </p>
<p>Для настройки сетевого интерфейса моста, открываем на редактирование /etc/network/interfaces и комментируем или удаляем существующую конфигурацию и заменяем следующим (с заменой значений на данные вашей сети):</p>
<p><code>auto lo<br />
iface lo inet loopback</p>
<p>auto eth0<br />
iface eth0 inet manual</p>
<p>auto br0<br />
iface br0 inet static<br />
        address 192.168.0.10<br />
        network 192.168.0.0<br />
        netmask 255.255.255.0<br />
        broadcast 192.168.0.255<br />
        gateway 192.168.0.1<br />
        bridge_ports eth0<br />
        bridge_stp off<br />
        bridge_fd 0<br />
        bridge_maxwait 0<br />
</code><br />
или для использования DHCP</p>
<p><code>auto lo<br />
iface lo inet loopback</p>
<p>auto eth0<br />
iface eth0 inet manual</p>
<p>auto br0<br />
iface br0 inet dhcp<br />
        bridge_ports eth0<br />
        bridge_stp off<br />
        bridge_fd 0<br />
        bridge_maxwait 0</code></p>
<p>Эта конфигурация создат виртуальный интерфейс br0.</p>
<p>Теперь перезапускаем сеть:</p>
<p><code>sudo /etc/init.d/networking restart</code></p>
<p>Если ваш хост виртуальных машин &laquo;повисает&raquo; на несколько секунд после перезапуска или остановки гостевых машин в KVM, которые используют сетевые мосты, то это происходит потому то мост в линуксе  получает физический адрес самого нижнего пронумерованного интерфейса из всех присоединенных интерфейсов.  Чтобы обойти это, добавьте следующую строчку к вашей конфигурации моста:</p>
<p><code>post-up ip link set br0 address f4:6d:04:08:f1:5f</code><br />
и замените f4:6d:04:08:f1:5f физическим адресом ethernet-адаптера, который всего будет частью моста.</p>
<h3>Конфигурация ubuntu-vm-builder для создания гостевых операционных систем с сетевыми мостами по умолчанию </h3>
<p>Виртуальные машины описаны в XML файлах. ubuntu-vm-builder это инструмент, который мы будем использовать для создания виртуальных машин опирась на шаблон /etc/vmbuilder/libvirt/libvirtxml.tmpl.</p>
<p>В Ubuntu 10.04 файл libvirtxml.tmplиспользует переменные окружения пользователя, так что устанавливаем bridge=br0 в /etc/vmbuilder.cfg или ~/.vmbuilder.cfg (для конфигураций для всей системы или для отдельного пользователя соответственно).</p>
<p>Ниже  пример файла /etc/vmbuilder.cfg. Если вы намереваетесь его использовать, поменяйте хотя бы example.com на ваш домен:</p>
<p><code>[DEFAULT]<br />
# Default is 1G tmpfs; Uncomment this line if you've >=2G of free RAM.<br />
#tmpfs = suid,dev,size=2G</p>
<p>#arch = amd64<br />
arch = i386<br />
domain = example.com<br />
part = vmbuilder.partition<br />
user = localadmin<br />
name = LocalAdmin<br />
pass = default</p>
<p>[kvm]<br />
libvirt = qemu:///system<br />
#network = br0<br />
bridge = br0<br />
virtio_net = true</p>
<p>[ubuntu]<br />
#mirror = http://127.0.0.1:9999/ubuntu<br />
# If using package cache software (apt-proxy), uncomment line below and set correct IP and Port:<br />
#install-mirror = http://127.0.0.1:9999/ubuntu<br />
suite = lucid<br />
flavour = virtual<br />
#components = main,universe,restricted,multiverse<br />
components = main,universe<br />
# Example adding PPA and installing extra software packages after base OS installation:<br />
#ppa = bcfg2/lucidtesting<br />
#addpkg = openssh-server, unattended-upgrades, bcfg2, acpid</code></p>
<h3>Генерирование физических MAC-адресов для KVM</h3>
<p>Если вы управляете вашими гостевыми системами через командную строку, нижеследующий скрипт будет полезен для генерирования случайных MAC-адресов:</p>
<p><code>MACADDR="52:54:$(dd if=/dev/urandom count=1 2>/dev/null | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4/')"; echo $MACADDR</code><br />
Для параноиков, которые боятся что сгенерировали уже использующийся MAC-адрес будет полезным проверить вывод команды &laquo;ip neigh&raquo;.</p>
<h3>Конвертирование существующих гостевых систем</h3>
<p>Если вы уже создали виртуальную машину, вы можете перевести ее на использование сетевых мостов изменением XML файла (in /etc/libvirt/qemu/) в разделе сетевых интерфейсов, скорректировав MAC-адрес:</p>
<p><code> &lt;interface type='network'><br />
      &lt;mac address='00:11:22:33:44:55'/><br />
     &lt;source network='default'/><br />
    &lt;/interface></code><br />
в:</p>
<p>    <code>&lt;interface type='bridge'><br />
      &lt;mac address='00:11:22:33:44:55'/><br />
     &lt;source bridge='br0'/><br />
    &lt;/interface></code><br />
Примечание: Убедитесь что первый октет в вашем MAC адресе EVEN (т.е. 00:) так как MAC-адрес с ODD первым байтом (т.е. 01:) зарезервирован для широковещательных протоколов и может создать загадочные проблемы при работе. К примеру,  гостевая система будет принимать ARP-пакеты и отвечать на них, но ответы буду смущать остальные машины доводя их до негодования. Это не грабли KVM, это просто так устроен мир (Ethernet в частности).</p>
<p>Вам необходимо перезапустить libvirtd для загрузки изменение; самый легкий путь это зайти в virsh (утилита командной строки для управления виртуальными машинами), остановить виртуальную машину, перечитать ее конфигурационный файл, и перезапустить виртуальную машину:</p>
<p><code>yhamon@paris:/etc/libvirt/qemu$ ls<br />
mirror.xml  networks  vm2.xml<br />
yhamon@paris:/etc/libvirt/qemu$ virsh --connect qemu:///system<br />
Connecting to uri: qemu:///system<br />
Welcome to virsh, the virtualization interactive terminal.</p>
<p>Type:  'help' for help with commands<br />
       'quit' to quit</p>
<p>virsh # list<br />
 Id Name                 State<br />
----------------------------------<br />
 10 vm2                  running<br />
 15 mirror               running</p>
<p>virsh # shutdown mirror<br />
Domain mirror is being shutdown</p>
<p>virsh # define mirror.xml<br />
Domain mirror defined from mirror.xml</p>
<p>virsh # start mirror<br />
Domain mirror started</code></p>
<p>Виртуальная машина &laquo;mirror&raquo; теперь использует сетевой мост.</p>
<h3>Настройка DNS и DHCP для гостевых машин</h3>
<p>libvirt использует dnsmasq для раздачи IP адресов гостевым машинам, которые настроены на использование dhcp. Если вы добавите на вашей зостовой машине 192.168.122.1 (IP-адрес по умолчанию для для вашего хоста в libvirt) как ваш первичный сервер имен в /etc/resolv.conf, тогда вы сможете использовать разрешение имен для ваших гостевых машин. dnsmasq достаточно умен для того, чтобы использовать другие записи &#8216;nameserver&#8217; в вашем /etc/resolv.conf для разрешения адресов не из libvirt. К примеру, содержимое вашего /etc/resolv.conf:</p>
<p><code>search example.com<br />
nameserver 10.0.0.1</code><br />
Меняете на:</p>
<p><code>search example.com<br />
nameserver 192.168.122.1<br />
nameserver 10.0.0.1</code><br />
Теперь, если у вас есть виртуальная машина с именем &#8216;hardy-amd64&#8242;, после ее запуска вы можете сделать:</p>
<p><code>$ host hardy-amd64<br />
hardy-amd64 has address <IP address given by dnsmasq></code><br />
Обратите внимание, что если вы используете ssh, вам может понадобиться использовать завершающую точку &#8216;.&#8217; после имени хоста:</p>
<p><code>$ ssh hardy-amd64.</code><br />
И на конец, чтобы все это заработало, ваши гостевые машины должны отправлять их имя хоста как часть dhcp запроса. Это происходит автоматически на больщинстве операционных систем. Для систем, которые не отправляют имя автоматически и используют dhcp3, вы можете подправить файл dhclient.conf. К примеру для Ubuntu 6.06 LTS (Dapper), подправить /etc/dhcp3/dhclient.conf чтобы получить:</p>
<p><code>send host-name "<your guest hostname here>";</code><br />
ВАЖНО: В зависимости от вашей сетевой конфигурации, ваши хосты в  /etc/resolv.conf могут быть периодически перезаписываться. Вы должны будете подправить каждый dhcp сервер в вашей сети для поддержки дополнитеьного сервера имен libvirt для хостов, управляемых libvirt, или подправить соответственно каждую хост-машину. Так как здесь возможно большое количество вариантов настроек и топологий поощряется самостоятельно заглянуть в resolv.conf и/или man interfaces.</p>
<h2>Загрузка через сеть, используя PXE</h2>
<p>KVM и QEMU могут эмулировать множество сетевых карт.ROM-файлы включенные в kvm-pxe:</p>
<p><code>'KVM Name' nic,model=<br />
'Etherboot Identification'<br />
'Etherboot Filename'<br />
'KVM filename'<br />
e1000<br />
((e1000:e1000-0x1026 -- [8086,1026]))<br />
gpxe-0.9.3-e1000-0x1026.rom<br />
pxe-e1000.bin<br />
ne2k_pci (default)<br />
ns8390:rtl8029 -- [10ec,8029]<br />
gpxe-0.9.3-rtl8029.rom<br />
pxe-ne2k_pci.bin<br />
pcnet<br />
pxe-pcnet.bin<br />
rtl8139<br />
pxe-rtl8139.bin<br />
virtio<br />
pxe-virtio.bin</code><br />
Другие ROM-файлы включают:</p>
<p><code>'KVM Name' nic,model=<br />
'Etherboot Identification'<br />
'Etherboot Filename'<br />
'KVM filename'<br />
i82551<br />
pxe-i82551.bin<br />
i82557b<br />
pxe-i82557b.bin<br />
i82559er<br />
pxe-i82559er.bin<br />
ne2k_isa<br />
pxe-ne2k_isa.bin<br />
smc91c111<br />
pxe-smc91c111.bin<br />
lance<br />
pxe-lance.bin<br />
mcf_fec<br />
pxe-mcf_fec.bin</code><br />
Скопируйте приглянувшиеся файлы в /usr/share/kvm и/или /usr/share/qemu.</p>
<h2>IP псевдонимы</h2>
<p>Псевдоним IP-адресов предоставляют aliases provide a удобный путь для раздачи виртуальным машинам собственных внешних IP-адресов:</p>
<p>1. Настройте сетевые мосты.</p>
<p>2. Создайне необходимые псведонимы IP адресов на хостовой машине как обычно: поместите  /etc/network/interfaces, к примеру:</p>
<p><code>auto eth0:0<br />
iface eth0:0 inet static<br />
address 192.168.0.11<br />
netmask 255.255.255.0</code><br />
3. Закрепите гостевые IP адреса, или поменяйте их на статические , например  192.168.122.99, в /etc/network/interfaces на гостевой машине или с помощью описания хостов в конфигурации dhcp (см. ниже).</p>
<p>4. Включите маршрутизацию на хосте: раскоментируйте net.ipv4.ip_forward=1 в /etc/sysctl.conf (/etc/ufw/sysctl.conf если используется ufw),или временно с помощью 1 >/proc/sys/net/ipv4/ip_forward.</p>
<p>5. Измените перенаправление  virtlib с nat на route и поправьте диапазон dhcp для того, чтобы исключить адреса, используемые для гостевых систем. (как вариант &#8211; добавьте записи в хостах для них): virsh net-edit default и измените xml следующим образом:</p>
<p><code>&lt;network><br />
  &lt;name>default</name><br />
  &lt;uuid>12345678-1234-1234-1234-123456789abc</uuid><br />
  &lt;forward mode='route'/><br />
  &lt;bridge name='virbr0' stp='on' delay='0' /><br />
  &lt;ip address='192.168.122.1' netmask='255.255.255.0'><br />
    &lt;dhcp><br />
      &lt;range start='192.168.122.100' end='192.168.122.254' /><br />
      &lt;host mac"=00:11:22:33:44:55" name="guest.example.com" ip="192.168.122.99" /><br />
    &lt;/dhcp><br />
  &lt;/ip><br />
&lt;/network></code><br />
6. Направьте трафик с внешнего интерфейса во внутренний и обратно:</p>
<p><code>iptables -t nat -A PREROUTING -d 192.168.0.11 -j DNAT --to-destination 192.168.122.99<br />
iptables -t nat -A POSTROUTING -s 192.168.122.99 -j SNAT --to-source 192.168.0.11<br />
</code></p>
<p>Место, куда это поместить зависит от способа запуска и установки вашего фаервола; если вы используете ufw вы можете использовать /etc/ufw/before.rules. Вам так же может понадобиться поправить фильтрующие правила вашего фаервола.</p>
<h2>Перенаправление портов в виртуальную машину</h2>
<p>Если вы желаете перенаправить определенные порты с хостовой в виртуальную машину, например, если вы хотите иметь почтовый сервер на ваиртуальной машине с адресом 192.168.122.90 и перенаправить порт smtp 25 и хост машину с адресом 192.168.0.10, то это можно сделать как-то так (на хост-машине):</p>
<p><code>iptables -t nat -A PREROUTING -d 192.168.0.10 -p tcp --dport 25 -j DNAT --to-destination 192.168.122.90:25</code></p>
<h2>возможные ошибки</h2>
<h3>Не работает DNAT в KVM qemu</h3>
<p>Мне помогло добавить запись:<br />
<code>iptables -I FORWARD -i eth0 -o virbr0 -p tcp -m state --state NEW -j ACCEPT</code></p>
<h3>Нет связи по умолчанию</h3>
<p>Если вы используете режим сети по-умолчанию (usermode), но ваши гостевые операционные системы не имеют связи, возможно у вас проблема с конфигурацией фаервола. libvirtd делает очень много записей в  iptablesво время установки.</p>
<p>В частности, при просмотре таблицы nat фаервола::</p>
<p><code>sudo iptables -t nat -L</code><br />
Вы должны увидеть:<br />
<code><br />
...<br />
Chain POSTROUTING (policy ACCEPT)<br />
target     prot opt source               destination<br />
MASQUERADE  all  --  192.168.122.0/24    !192.168.122.0/24<br />
...</code><br />
Если это правило отсутствует, попробуйте создать его:</p>
<p>Остановите все ваши виртуальные машины.<br />
Удалите и пересоздайте сеть по умолчанию:<br />
<code>virsh net-destroy default<br />
virsh net-start default<br />
</code></p>
<h3>Сетевой мост теряет соединение</h3>
<p>Большое количество людей имеют проблемы в виде потери соединения сетевым мостом после большого количества переданных данных (например во время выполнения rsync). Для клиентов Hardy или Intrepid , попробуйте включить режим virtio.</p>
<h3>Сетевой мост недоступен в Virt-Manager</h3>
<p>Сетевой мост, сконфигурированный, как описано выше не будет виден в virt-manager когда используется сессия удаленного управления, см. ошибку #520386.</p>
]]></content:encoded>
			<wfw:commentRss>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-netwoking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка KVM под Ubuntu Server 10.04 LTS. Часть 1 &#8211; Установка</title>
		<link>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-install/</link>
		<comments>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-install/#comments</comments>
		<pubDate>Sun, 21 Aug 2011 13:14:24 +0000</pubDate>
		<dc:creator>Sash(k)a</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[админство]]></category>

		<guid isPermaLink="false">http://gorbach.me/?p=20</guid>
		<description><![CDATA[В одном проекте пришлось сильно заморочиться виртуализацией. Так как опыта было маловато, то рылся серп на полную катушку. Самый толковый мануал оказался, как ни странно на сайте убунту, но в английском варианте. В общем для себя и всех делаем перевод, кое-где будут ремарки от себя). Так же опущены инструкции для систем ниже 10.04 Установка Проверка [...]]]></description>
			<content:encoded><![CDATA[<p>В одном проекте пришлось сильно заморочиться виртуализацией. Так как опыта было маловато, то рылся серп на полную катушку. Самый толковый мануал оказался, как ни странно на сайте убунту, но в английском варианте. В общем для себя и всех делаем перевод, кое-где будут ремарки от себя). Так же опущены инструкции для систем ниже 10.04<br />
<span id="more-20"></span></p>
<hr />
<h2>Установка</h2>
<h3>Проверка </h3>
<p>Во-первых проверяем, что процессор поддерживает вирутализацию.</p>
<p>Для того, чтобы установить KVM, необходимо чтобы процессор поддерживал аппаратную виртуализацию. Intel и AMD обе разработали поддержку в своих процессорах, соотвественно Intel VT-x (кодове имя Vanderpool) и AMD-V (кодовое имя Pacifica). Для того, чтобы видеть поддерживает ли процессор виртуализацию выполните команду:</p>
<p><code>egrep -c '(vmx|svm)' /proc/cpuinfo</code></p>
<p>Если увидели 0, то это значит что ваш процессор не поддерживает аппаратную виртуализацию.<br />
Если 1 (или более) &#8211; поддерживает, но вы все еще должны убедиться, что вирутализация включена в BIOS.
</p>
<p>По умолчанию, если вы загрузились в ядро в окружении XEN вы не увидите установленные флаги svm или vmx процессора с помощью команды grep. Для того чтобы увидеть вклюены они или нет из окружения xen, введите:</p>
<p><code>cat /sys/hypervisor/properties/capabilities</code></p>
<p>Вы должны увидеть флаги hvm в выводе.</p>
<p>Или же вы можете выполнить:</p>
<p><code>kvm-ok </code></p>
<p>который выведет на экран что-то вроде вот этого:</p>
<p><code>INFO: Your CPU supports KVM extensions<br />
INFO: /dev/kvm exists<br />
KVM acceleration can be used</code></p>
<p>Если вы увидели :</p>
<p><code>INFO: Your CPU does not support KVM extensions<br />
KVM acceleration can NOT be used<br />
</code></p>
<p>Вы все-таки можете запускать виртуальные машины, но они будут работать гораздо медленнее без расширений KVM.</p>
<h3>Используйте по возможности 64-х битное ядро</h3>
<p>Запуск 64-х битного ядра на хостовой операционной системе рекомендуется, но не обязательно.</p>
<ol>
<li>Для использования 2Гб оперативной памяти для ваших виртуальных машин, вы должны использовать 64-х битное ядро(см. 32bit_and_64bit).  На 32-х битном ядре, вы сможете использовать не более 2 Гб оперативной памяти для каждой виртуальной машины.</li>
<li>Так же на 64-х битной системе можно запускать 32-х и 64-х битные гостевые система. На 32-х битной только 32-х битные гостевые системы.</li>
</ol>
<p>Для того, чтобы убедиться что ваш проецссор 64-х битный запустите команду:</p>
<p><code>egrep -c ' lm ' /proc/cpuinfo</code></p>
<p>Если выводится 0, то это хначит, что ваш процессор не 64-х битный.</p>
<p>Если 1 или больше, то оно самое. Примечание: lm  &#8211; сокращение для Long Mode (Длинный Режим <img src='http://gorbach.me/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )  что эквивалентно обозначению 64-х битный процессор.</p>
<p>Теперь, чтобы убедиться что запущено 64-х битное ядро, просто смотрим команду:</p>
<p><code>uname -m</code></p>
<p>x86_64 обозначает, что запущено 64х битное ядро. Если вы увидели i386, i486, i586 или i686, у вас запущено 32-х битное ядро.</p>
<p>Примечание: x86_64 это синоним для amd64.</p>
<h2>Установка KVM</h2>
<h3>Установка необходимых пакетов</h3>
<p>Для нижеследующей инструкции по установке, мы принимаем во внимание, что вы запускаете KVM на сервере, и, следовательно, мы не не имеем никаких X серверов на машине.</p>
<p>Вам необходимо сперва установить неcколько пакетов:</p>
<p><code>$ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils</code></p>
<ul>
<li>libvirt-bin устанавливает libvirtd который необходим для администрирования экземпляров qemu и kvm использующих libvirt</li>
<li>qemu-kvm  это бакэнд &#8211; набор управляющих утилит</li>
<li>ubuntu-vm-builder удобный инструмент для создания виртуальных машин</li>
<li>bridge-utils создает мост (bridge) из вашей сети на виртуальные машины</li>
</ul>
<p>Вы так же можете установить virt-viewer, для просмотра экземпляров виртуальных машин.</p>
<h3>Добавление пользователей и групп</h3>
<p>Пакет libvirtd-bin автоматически добавит вас в группу libvirtd. Вам нет необходимости добавлять себя в группу kvm.</p>
<p>После установки <strong>необходимо перелогиниться</strong>, чтобы пользователь стал эффективным членом группы libvirtd. Члены этой группы могут запускать виртуальные машины. (Вы так же можете написать &#8216;newgrp kvm&#8217; в терминале, но это бдует иметь эффект только для этого терминала.)</p>
<h3>Проверка установки</h3>
<p>Вы можете проверить успешность установки следующей командой:</p>
<p><code>$ virsh -c qemu:///system list<br />
 Id Name                 State<br />
----------------------------------</p>
<p>$<br />
</code></p>
<p>Если же вы увидели что-то вроде этого:</p>
<p><code>$ virsh -c qemu:///system list<br />
libvir: Remote error : Permission denied<br />
error: failed to connect to the hypervisor<br />
$</code></p>
<p>Что-то где-то напортачено.( к примеру, забыли перелогиниться) и вы, возможно заимеете безумное желание исправить это, до того как продвинетесь дальше. Собственно ошибка означает, что вы не можете получить доступ на запись к /var/run/libvirt/libvirt-sock.</p>
<p>Файл сокета должен иметь разрешения аналогичные этому:</p>
<p><code>$ sudo ls -la /var/run/libvirt/libvirt-sock<br />
srwxrwx--- 1 root libvirtd 0 2010-08-24 14:54 /var/run/libvirt/libvirt-sock</code></p>
<h3>На любителя: Установка virt-manager (графическое приложение)</h3>
<p>Если вы работаете на десктопе, вы можете пожелать установить графический инструмент для управления виртуальными машинами.</p>
<p><code>$ sudo apt-get install virt-manager</code></p>
<p>Virtual Machine Manager будет находиться в Applications -> System Tools menu. Сначала создайте новое соединения с локальным экземпляром QEMU из меню File -> Add Connection. Localhost (QEMU) должен появиться в списке виртуальных машин. Примечание: там уже присутствует соединения (QEMU Usermode)  но оно не работает, по крайней мере на Ubuntu 10.04.</p>
<p>Создайте виртуальную машину нажатием кнопки в верхнем левом углу Create a new virtual machine.</p>
]]></content:encoded>
			<wfw:commentRss>http://gorbach.me/2011/ubuntu-10-04-lts-kvm-install/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Определение источника ошибки авторизации SQL Server (18456 ошибка)</title>
		<link>http://gorbach.me/2010/sql_server_login_error_18456/</link>
		<comments>http://gorbach.me/2010/sql_server_login_error_18456/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 04:00:58 +0000</pubDate>
		<dc:creator>Sash(k)a</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[MS SQL Server]]></category>
		<category><![CDATA[админство]]></category>

		<guid isPermaLink="false">http://gorbach.me/?p=4</guid>
		<description><![CDATA[Недавно решил навести порядок в журнале подопечного SQL сервера. Большое количество записей состояло из ошибки 18456 &#8211; ошибка авторизации, причем в качестве источника стояла local system &#8211; что немного вводило в ступор. Вроде как кроме инстанса SQL сервера ничего больше на сервере не крутится.  В итоге выяснилось, что это был Report Server, которому была дадены [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно решил навести порядок в журнале подопечного SQL сервера. Большое количество записей состояло из ошибки 18456 &#8211; ошибка авторизации, причем в качестве источника стояла local system &#8211; что немного вводило в ступор. Вроде как кроме инстанса SQL сервера ничего больше на сервере не крутится.  В итоге выяснилось, что это был Report Server, которому была дадены необходимые права и журнал сервера стал горрраздо читабельнее )). В ходе писоков нашел мануал, котороый в принципе один мог бы почомчь разбораться в ситуации, если бы попался первым )<a href="http://www.eraofdata.com/blog/2009/01/">http://www.eraofdata.com/blog/2009/01/</a>. За это его перевод:<br />
<span id="more-4"></span></p>
<hr />
<h2>Определение источника ошибки авторизации SQL Server (18456 ошибка)</h2>
<p>Всем нам периодически приходится определять источник ошибок авторизации  (login failures), и, заметив рост количества тем на форумах с просьбой о помощи в это вопросе, я решил начать новый год с поиска быстрого способа точного определения этих ошибок.   Я порыскал в интернете,в предположении, что эта тема была много раз обсосана и закрыта на других форумах или блогах, но с удивлением обнаружил, что хотя и есть много статей о том, что такое &laquo;ошибка авторизации&raquo; и что означают все коды, возвращаемые в сообщениях ошибки, я не смог найти пошагового описания того, что должен сделать DBA для определения откуда пришел запрос на авторизацию приведший к ошибке. Эта запись &#8211; моя попытка исключить этот пробел и показать как выделить процесс, вызывающий эту проблему.</p>
<p>Технология крайне не зависима от версий,  так что это не критично в каком пакете Вы это будете делать, но я предполагаю, что вы знаете как использовать SQL Server Profiler для трассировки запросов.</p>
<h3>Ошибка входа 18456</h3>
<p>Ошибка входа вызывает ошибку 18456 и сопровождается соответствующей записью в журнале SQL сервера (SQL Server 2000 не отображает IP адрес):<br />
<code>2009-01-15 09:40:24.55 Logon Error: 18456, Severity: 14, State: 8.<br />
2009-01-15 09:40:24.55 Logon Login failed for user 'Domain\User'. [CLIENT: xxx.xxx.xxx.xxx]<br />
2009-01-15 09:40:24.55 Logon Error: 18456, Severity: 14, State: 8.2009-01-15 09:40:24.55 Logon Login failed for user 'Domain\User'. [CLIENT: xxx.xxx.xxx.xxx]</code></p>
<p>Severity в логе указывает на серьезность ошибки. Severity: 14 означает, что ошибка может быть исправлена пользователем, что вполне логично для ошибок авторизации.<br />
Следующее число указывает на номер состяния. Большинство ошибок имеют связанный с ними  номер  состояния , который обозначает дополнительную информацию обычно уникальную для каждой ошибки. Для ошибки авторизации состояние 8, показанное в приведенном выше примере, указывает что был использован некорректный пароль.</p>
<p>Следовательно, номер состояния предоставляет неоцинимую информацию  о причине ошибки авторизации и зачастую его достаточно для определения причины возникновения ошибки 18456.</p>
<p>В приведенной ниже таблице приведены расшифровки некоторых значений:</p>
<table style="border-collapse: collapse;" border="1" cellpadding="10">
<tbody>
<tr>
<td>Состояние (State)</td>
<td>Описание ошибки</td>
</tr>
<tr>
<td>1</td>
<td>Аккаунт заблокирован</td>
</tr>
<tr>
<td>2</td>
<td>ID пользователя не верно</td>
</tr>
<tr>
<td>5</td>
<td>ID пользователя не верно</td>
</tr>
<tr>
<td>7</td>
<td>Используемый логин отключен</td>
</tr>
<tr>
<td>8</td>
<td>Неверный пароль</td>
</tr>
<tr>
<td>9</td>
<td>Неподходящий пароль</td>
</tr>
<tr>
<td>11-12</td>
<td>Авторизация верная, но доступ к серверу невозможен</td>
</tr>
<tr>
<td>16</td>
<td>авторизация верная, но доступ к выбранной базе не разрешен</td>
</tr>
<tr>
<td>18</td>
<td>Истек срок действия пароля</td>
</tr>
<tr>
<td>27</td>
<td>Первоначальная база данных не найдена</td>
</tr>
<tr>
<td>38</td>
<td>Авторизация верная, на база данных не доступна( или нет разрешения)</td>
</tr>
</tbody>
</table>
<p>Следующий пункт информации &#8211; логин (SQL сервера или Windows), сгененрировавший ошибку, затем IP адрес хоста, скоторго была предпринята попытка авторизации, который предоставляет полезную информацию для перекрестного поиска, для подтверждения что мы исследуем верный хост для выделения ошибки авторизации.</p>
<h3>Определение ошибки авторизации.</h3>
<p>Если информации, содержащейся в журнале ошибок не достаточно для определения источника ошибки, то следующей шаг это запустить трассировку SQL сервера для получения большего количества информации.<br />
Наикратчайший путь для определения ошибок авторизации лежит через трассироку с помощью SQL Server Profiler (SSP).</p>
<p>Если Вы используете SQL Server 2005 или выше т у Вас до сих пор включен трассировщик по умолчанию (который включен по умолчанию в установке из коробки), тогда вам не нужна начинать новую трассировку. Проверьте вместо этого мою запись <a href="http://www.eraofdata.com/blog/2009/09/the-sql-server-default-trace/">The SQL Server default trace</a>.</p>
<p>Если у вас более ранняя версия SQL Serverm или же трассировка по умолчанию выключена (или же у вас проблемы с английским) &#8211; читайте дальше. (Нничего страшного не произойдет, если запустите еще один поток трассировки).</p>
<p>Запустите SSP, и, используя или ваш любимы шаблон трасировки, или же создав новый (File &gt; Templates &gt; New Templates…), убедитесь что выбраны следующие колонки:<br />
<code><br />
ClientProcessID<br />
Hostname<br />
LoginName<br />
NTUserName<br />
NTDomainName<br />
ApplicationName<br />
</code></p>
<p>Эти столбцы можно найти в диалоговом окне Trace Properties в закладке Events Selection. Если они не видны, поставте флажок &laquo;Show all columns&raquo;. Обратите внимание, что столбе SPID выбран по умолчанию и не может быть убран.</p>
<p>В столбце Events выберите поле Audit Login в группе Security Audit. Так как мы заинтересованы только в ошибках авторизации, то это будет единственным выбранным событием, и мы будем уверенны что своим вмешательством мы создадаим минимальную нагрузку на систему. В &laquo;боевых&raquo; системах не желательно (ИМХО) запускать гафическую трассировку SSP на сервере, всегда желательно использовать <a href="http://msdn.microsoft.com/ru-ru/library/ms191443(SQL.90).aspx">трассировку на стороне сервера</a>.</p>
<p>Нижеследующий рисунок показываает завршенный шаблон трассировки:</p>
<div id="attachment_5" class="wp-caption aligncenter" style="width: 310px"><a href="http://gorbach.me/files/2010/08/loginErrs_Fig1.jpg"><img class="size-medium wp-image-5" title="loginErrs_Fig1" src="http://gorbach.me/files/2010/08/loginErrs_Fig1-300x190.jpg" alt="Шаблон поиска ошибки авторизации" width="300" height="190" /></a><p class="wp-caption-text">Шаблон поиска ошибки авторизации</p></div>
<p>Это может выглядеть несколько уныло, но мы заинтересованы только в поиске конкретной ошибки.</p>
<p><strong>Шаг 1</strong></p>
<p>Сохраните измененный шаблон трассировки и запустите новую трассировку, определив сохраненный шаблон в качестве шаблона для новой трассировки и ждите появления ошибки авторизации. Остановите трассировку после появления ошибки авторизации.</p>
<p><strong>Шаг 2</strong></p>
<p>Столбец Hostname должен содержать запись имени сервера на котором произошел неверный логин, и ClientProcessID должен содержать идентификатор проблемного процесса (PID)  (или процессов, если есть несколько связанных процессов).</p>
<p><strong>Шаг 3</strong></p>
<p>Заходим на сервер, на которм произошла ошибка и просматриваем подходящие процессы с помощью диспетчера задач (Task Manager). Для просмотра  PID с помощью диспетчера задач, запустите этот диспетчер (Shift+Ctrl+Esc), идем в пунтк View-&gt;Select Columns&#8230; и выбираем флажок PID (Process Identifier) и нажимаем Ok.</p>
<p>Нажимаем на вкладку Processes  для просмотра процессов, запущенных на сервере (убедитесь что стоит флажок  Show all processes from all users) и нажмите на заголовок колонки PID, для сортировки по убыванию или возрастанию.</p>
<p><strong>Шаг 4</strong></p>
<p>После того, как Вы определите проесс по его PID, остается всего-лишь вопрос определения где процесс хранит настройки авторизации SQL сервера и проверить их Обычно, это процесс является сервисом, так что это вопрос всего0лишь вопрос запуска оснастки Services через Панель управления, или Start-&gt;Run-&gt; services.msc</p>
<p>Так что, счастливой охоты!</p>
]]></content:encoded>
			<wfw:commentRss>http://gorbach.me/2010/sql_server_login_error_18456/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

