Это страшное слово – «виртуализация». Мое решение на базе KVM.

Заметка пригодится всем, кому интересно использовать виртуализацию в своей работе. Мое решение вполне может претендовать на промышленное применение и пригодится тем, кто захочет сократить расходы на аппаратную часть при необходимости иметь в наличии разветвленную сетевую инфраструктуру. На подобном варианте базируется некоторые решения от IBM, к примеру. Но эти решения далеко не бюджетные и востребованы лишь в исключительных случаях.
Итак, однажды мне понадобилось в домашних условиях воспроизвести разветвленную сетевую инфраструктуру, состоящую из различных программных платформ. Путь начинался от VMWare Workstation и завершился KVM… Почему именно KVM и как все было, читайте ниже.

1. Немного истории или с чего все началось.
Работая в банке, я вживую столкнулся с виртуализацией. Это была операционная система AIX от IBM, работающая на майнфреймах. С самого начала меня поразила мощь и гибкость подобного подхода. И когда мне понадобилось воспроизвести в тестовых целях дома разветвленную программную инфраструктуру, то сразу базировал все это на принципах виртуализации. Это позволило избежать как значительных затрат на аппаратную часть, так и уместить все весьма компактно в плане пространства.
Для читателя следует учесть, что на самом деле инструментов виртуализации великое множество. Каждый из них имеет свои тонкости и нюансы. Я же ставлю цель рассказать об одном варианте, с которыми работаю лично, описывая по возможности недостатки и особенности остальных.
2. Мой выбор называется KVM (или Kernel-based Virtual Machine).
Подробнее об этом варианте можно почитать тут.
Но лучше все по порядку излагать. Начну с условий отбора и какие из известных мне вариантов этим условиям неудовлетворяют:
— основная система должна быть бюджетной и мощной.

В аппаратном плане я выбрал вариант AMD Phenom X4 9550 / Asus M3A78 / 2x2Gb DDR-II / 1x160Gb IDE + 2x1Tb SATA-II. Видео здесь совершенно не приципиально, кроме того, что в случае встроенной придется учитывать, что она под себя забирает часть оперативной памяти, соответственно для виртуальных машин ее останется меньше. Скажу сразу — выбор материнки с встроенным RAID-контроллером был не совсем корректным. Как выяснилось, RAID этот работает только в программном режиме, т.е. нужны драйвера для Windows систем, ну а в Linux такого же эффекта можно было достичь гораздо проще, используя стандартные средства.
Использование программной платформы для основной системы было однозначно в пользу GNU/Linux, т.к. позволяло получить среду виртуализации без лишних затрат на лицензирование, а также более облегченную в плане нагрузки (вот никогда я не пойму, почему в Windows Server без графики ничего нельзя поставить и сделать…. бессмысленная нагрузка, ИМХО). Изначально планировалось использовать вариант Ubuntu Server Hardy LTS, но почти сразу была произведена миграция на Debian Lenny (он к тому времени как раз вышел).Ни в коем случае не принижаю достоинства Ubuntu, но субьективно Debian стабильнее и быстрее работает.

— система виртуализации должна быть стабильной, общедоступной и нетребовательной к ресурсам.

От выбора разбегаются глаза, но после изучения отзывов в интернете и попыток использования сложилось субьективное мнение.
Продукты VMWare не подходят. Workstation платная, ESXi не удалось поставить на мою систему из-за неподдерживаемого чипсета (он у меня оказался более современным). Неплохим выбором был бы VMWare Server, но судя по отзывав она тяжеловата и периодически падает, сам я не стал пробовать после неудачи с ESXi. Не подошли они еще по одной причине — компания все таки продает свои продукты и только часть из них доступна в свободном доступе.
VirtualBox оказался весьма удачным вариантом. Существует в двух вариантах — OSE и Freeware. В открытом доступе исходников Freeware-версии нет, зато компенсируется это функциональностью. Из известных мне различий — это отсутствие в OSE версии поддержки USB, ограничения при работе с сетью, неподдерживается графическая акселерация (кстати, дающая весьма приличный прирост скорости работы виртуальной машины). VirtualBox идеально подходит для простейшей реализации, т.к. позволяет быстро получить работоспособную виртуальную машину без лишних телодвижений и внимательного изучения руководства. Приятной особенностью оказалась поддержка работы из консоли, что позволяет не использовать графических надстроек и соответственно снимается дополнительная нагрузка на хост-машину. Для начинающих «домашних виртуализаторов» я бы посоветовал именно такой вариант. Лично я до сих пор его использую на личном ноутбуке для быстрого поднимания тестовой среды, а также для работы в Windows (там уже давно и стабильно обосновалась Ubuntu в качестве основной системы). По субьективным ощущениям работает VirtualBox гораздо шустрее VMWare Workstation, занимает меньше места как на диске, так и в памяти. Для каждой машины выделяется отдельное окно, а также при установленных драйвера в гостевой системе (есть «из коробки») есть возможность интегрировать в рабочий стол хоста, что очень удобно и позволяет разнести задачи на разные виртуальные столы.
QEMU — очень мощная штука. Но когда вспомнил про нее, уже обратил внимание на виртуализацию на базе ядра и информацию про Xen и KVM, потому близко знакомится с чистым QEMU не стал.
Xen — идеальная система для виртуализации. Но имеет весьма существенный недостаток — гостевая система должна быть заранее подготовленна.
KVM, базируется на QEMU, по скорости почти не уступает Xen, зато обладает более гибкой функциональностью, всей мощью настроек QEMU (хотя основная часть необходимых мне была и в VirtualBOX). Оба варианта, Xen и KVM реализованы во всех современных дистрибутивах и для использования не надо прилагать серьезных усилий. Но есть между ними принципиальное отличие, о котором пойдет речь дальше.

— необходимо иметь возможность воспроизвести на виртуальных машинах различные программные платформы.

Несмотря на доступность в этом плане продуктов VMWare и VirtualBOX, от их использования я отказался еще ранее, так что рассматривать не буду… А вот применительно к Xen и KVM опишу чуток подробнее, т.к. сам искал информацию весьма долго.
Xen не позволяет запускать системы отличные от хостовой!!!, а точнее не подготовленные заранее для работы в виртуальной среде. И к сожалению (а может к счастью), подобной обработке не поддаются дистрибутивы Windows. Что меня не устраивало, потому в итоге выбор пал на варианте использования KVM, для которого заранее подготавливать гостевую систему не надо.

Итак причины выбора KVM кратко:

1. Реализация доступна из коробки в любом большом дистрибутиве;
2. Реализовано на базе ядра Linux, соответственно обладает большой скоростью;
3. Используется такими гигантами, как RedHat и Ubuntu, что говорит о высокой стабильности и гибкости;
4. Не требуется дополнительных махинаций с гостевой системой для установки в виртуальную машину.

3. Как я сделал это на Debian.
Дальше пойдет больше техническое описание, описывающее по шагам, как я сделал свой сервер, свободно тянущий с десяток виртуальных серверов.
Несмотря на то, что мой любимый дистрибутив Ubuntu, в итоге под базовую системы был выбран Debian. В рамках статьи объяснять тонкостей не буду, что да как, но на десктопе я все также предпочитаю использовать Ubuntu. Большинство инструкций для Ubuntu и Debian актуальны для обоих вариантов, потому при настройке я использовал и это и то и другое.
Итак, начнем ставить сервер.
Берем дистрибутив Debian. Чтобы не качать лишнего потом и сразу получить свежую систему, я брал вариант netinstall, при помощи которого устанавливал только вариант «Стандартная система», большего нам и не надо. Кстати, я использую 64-битный выпуск, чтобы получить поддержку большего количества оперативной памяти (>3Гб) без обходных путей и выкрутасов (к примеру, 32-битное серверное ядро дистрибутива Ubuntu поддерживает больше, чем 3Гб, но только при наличии такой возможности в чипсете).
Я использую под системные разделы («/», «/home», swap) жесткий диск IDE, дабы не иметь проблем при работе системы при установке на RAID-массив (а они есть). При установке сразу создаю RAID-1 на основе двух жестких дисков SATA для достижения большей сохранности данных (основная информация будет храниться на нем). В дальнейшем для работы с софтовым RAID-массивом следует использовать утилиту mdadm.
Свежеустановленную систему я немного ретуширую. Для начала устанавливаю ssh, чтобы можно было сразу засунуть системник подальше и отключить от него уже ненужный монитор:sudo apt-get install sshМногие советуют переключить порт с стандартного 22 на другой. Но это следует делать только в том случае, если вы уверены в своих действиях и ваш сервер подключен напрямую к интернету. Кстати, следует упомянуть, что если будет использоватся нестандартный порт, то потом возникнут сложности с удаленным управлением KVM-виртуализацией. Поэтому я оставил стандартный порт, но через аппаратный маршрутизатор сделал переброску на нестандартный, доступный снаружи.

Затем включаем синхронизацию времени через интернет (настоятельно советую, пригодится).
sudo apt-get install ntp ntpdate
Для контроля температуры чипсетов, процессора и жестких дисков:
sudo apt-get install lm-sensors hddtemp
Утилита hddtemp работает сразу, для настройки lm-sensors запускаем после установки:sudo sensors-detectотвечаем на все вопросы утвердительно.
Использовать очень просто:
— узнать температуру процессора, чипсета и других характеристик sudo sensors получаем что-то вроде:

it8712-isa-0290
Adapter: ISA adapter
VCore 1: +1.33 V (min = +3.54 V, max = +3.30 V) ALARM
VCore 2: +3.76 V (min = +1.39 V, max = +1.01 V) ALARM
+3.3V: +3.28 V (min = +4.00 V, max = +0.91 V) ALARM
+5V: +6.69 V (min = +3.04 V, max = +6.10 V) ALARM
+12V: +12.67 V (min = +15.23 V, max = +5.57 V) ALARM
-12V: -15.33 V (min = -0.85 V, max = -12.39 V) ALARM
-5V: +2.85 V (min = +3.06 V, max = +3.47 V) ALARM
Stdby: +5.99 V (min = +0.11 V, max = +6.37 V)
VBat: +3.31 V
fan1: 2922 RPM (min = 3260 RPM, div = 2)
fan2: 0 RPM (min = 5400 RPM, div = 2) ALARM
fan3: 0 RPM (min = 2732 RPM, div = 2) ALARM
M/B Temp: +44.0°C (low = -73.0°C, high = -49.0°C) sensor = transistor
CPU Temp: +32.0°C (low = -65.0°C, high = -9.0°C) sensor = transistor
Temp3: +128.0°C (low = +23.0°C, high = -66.0°C) sensor = disabled
cpu0_vid: +0.000 V

— узнать температуру 1 жесткого диска SATA — sudo hddtemp /dev/sda получаем что-то вроде:

/dev/sda: WDC WD1001FALS-00J7B0: 33°C

Для дальнейшей работы рекомендую обзавестись сторонним DHCP-сервером и на нашем сервере виртуализации настроить bridge-интерфейс.
Установим нужные утилиты: sudo apt-get install bridge-utils
Я использую в качестве DHCP-сервера свой роутер, а bridge-интерфейс создавал по инструкции. По той же инструкции рассказано, как сделать, чтобы виртуальная машина в KVM создавалась по умолчанию с использованием этого способа подключения. Для ускорения перезагрузки (совершенно не критичная ситуация, если сервер будет включен круглосуточно) советую заранее указать статический адрес на интерфейс даже при условии доступности DHCP.

И самое вкусное, устанавливаем KVM модули и полезные утилиты. Сразу добавим текущего пользователя в соответствующую группу для доступности использования KVM. Описание использования утилит можно найти по уже указанным руководствам.sudo aptitude install kvm libvirt-bin virtinst virt-top python-virtinst
sudo adduser softovick libvirt
Фактически сразу можно использовать. Описывать все команды смысла не вижу, для этого есть man. Но покажу, как я создаю виртуальную машину:
для Linux virt-install -n linux -r 512 -f linux.img -s 15 -c образ.iso --accelerate --vnc --vncport=5900 --noautoconsole --os-type=linux --os-variant=generic26
для Windows virt-install -n windows -r 512 -f windows.img -s 15 -c образ.iso --accelerate --vnc --vncport=5901 --noautoconsole --os-type=windows --os-variant=win2k3 --noacpiПосле этого дальнейший ход установки и экран гостевой машины можно контролировать, подключившись при помощи VNC-клиента к серверу по порту 5900 и 5901(рекомендую для каждой машины заранее определять порт VNC, чтобы было удобно подключаться). Есть еще несколько полезных опций, я их не использую лишь потому, что не столкнулся с их необходимостью.

И еще один штрих, но не последний. Как подключить к гостевой системе возможность что-то писать напрямую на физический раздел или папку на рейде, я пока не понял, хотя и старался. Поэтому в случае Linux я подключаюсь к данным на сервере при помощи nfs, а в случае Windows — при помощи Samba. Настройка Samba достаточно тривиальна, устанавливаем sudo aptitude install samba и правим конфигурационный файл /etc/samba/smb.conf под свои задачи. А вот установка и настройка nfs не совсем тривиальна. Я использую такой вариант установки, позволяющий подключаться к нужным папкам с любого ip-адреса локальной сети (вида 192.168.10.*):sudo aptitude install nfs-kernel-server portmap
perl -pi -e 's/^OPTIONS/#OPTIONS/' /etc/default/portmap
echo "portmap: 192.168.10." >> /etc/hosts.allow
/etc/init.d/portmap restart
echo "/media/raid 192.168.10.0/255.255.255.0(rw,no_root_squash,subtree_check)" >> /etc/exports
/etc/init.d/nfs-kernel-server reload
После приведенных действий достаточно на гостевой системе сделать так:
sudo mount сервер:/media/raid локальная_папка
При необходимости можно включить автоматическое монтирование при загрузке, поправив конфигурационный файл /etc/fstab, добавив туда строку типа:
virtual:/media/raid /media/raid nfs defaults 0 2
Ну вот, в целом настройка нашего сервера виртуализации завершена. Управлять им можно как в консоли, так и при помощи графических инструментов virsh или virtual manager.

P.S.:
Некоторые полезные советы:
1. Если вы указали конкретный порт VNC для гостевой машины, то через Virtual Manager вы не сможете автоматически запустить графическую консоль.
2. Virtual Manager не сможет подключиться, если у вас переопределен порт ssh. Точнее для этого придется долго и нудно разбираться.
3. Обязательно используйте для гостевой Windows Server режим —noacpi, чтобы она нормально установилась.
4. Аккуратно настраивайте режим сбережения энергии на гостевых системах, ни в коем случае не отключайте экран, иначе не сможете потом подключится по VNC.
5. Если вы хотите удаленно выключать и перезагружать машины через Virtual Manager, то отключайте хранитель экрана, т.к. он блокирует управление питанием.

9 марта 2009 (понедельник) – Ubuntu Testing Day

9 марта 2009 года объявлен очередным1 днём тестирования Ubuntu. В России 9-е марта это выходной. Так что сразу как опохмелитесь после Великого Женского Праздника™, не сочтите за труд загрузить себе свежий альфа-CD с вашим любимым u/ku/xu-buntu и тщательно изучить его.

  • Запишите диск и загрузитесь с него на всех компьютерах что у вас есть под рукой. Внимательно проверьте что всё доступное вам оборудование распознаётся LiveCD и работает корректно;
  • После этого поставьте на работающую систему пакет virtualbox-ose, после чего установите в него свежую Ubuntu и проверьте, все ли возможности программ, которыми вы пользуетесь, на месте? Все ли заявленные функции работают;
  • Проверьте, исправлены ли все ошибки, на которые вы натыкались в процессе эксплуатации предыдущих версий дистрибутива;
  • Внимательно запишите все выявленные недочёты создайте баг-репорт в Launchpad2, или хотя бы запишите на форуме в разделе «Тестирование Ubuntu»3;
  • Если вы в ладах с английским — зайдите на IRC канала #ubuntu-testing и узнайте, не требуется ли какая-либо помощь с вашей стороны;
  • Помните, тестирование нового дистрибутива — это самый простой путь поблагодарить сотни людей, что трудятся над Ubuntu! Даже если вы ничего не найдёте — это будет замечательно, значит новая версия дистрибутива действительно готова к выпуску.

Счастливого тестирования!

P.S.
Пожалуйста, разместите данное объявление у себя в блоге!

Ссылки:
1. Testing/UbuntuTestingDay/20090309
2. Launchpad
3. Тестирование Ubuntu // Русское сообщество Ubuntu

Источник

Реорганизация блога

Всё течёт, всё меняется.

Этот блог существует почти два года, и на нём я и мои знакомые публиковали свои заметки о том как что-то настроить или подключить в Ubuntu Linux. Но время идёт, опыта работы в Linux становится всё больше и больше, и многие начинают пробовать свои силы в работе с другими дистрибутивами. И зачастую, методы, которые они используют для решения тех или иных задач в других дистрибутивах, можно смело применять и в Ubuntu.

В связи с чем я хочу объявить о реорганизации философии блога. Раньше она была: «Я» в значении каждый пользователь Ubuntu, и «Ubuntu» в значение Операционная Система Ubuntu Linux. А теперь это — «Я» в значении каждый пользователь мира Linux и «Ubuntu» в значении человечного отношения к другим пользователям мира Linux.

Теперь любой желающий может поделиться своим, зачастую уникальным и бесценным, опытом не только в области Ubuntu Linux, но и в области других Linux систем.

Если у вас тоже есть о чём рассказать, то пишите мне на электронную почту (адрес есть в виде картинки в правой колонке), и я подключу вас к блогу как соавтора. Не стоит создавать разобщённые малопосещаемые блоги и описывать на них поистине ценный опыт, давайте лучше создадим большое сообщество на базе данного блога и будем делиться своим опытом с пользой, а не в пустую.

Самое главное не стоит бояться делиться опытом! В этом блоге не ставят оценок и не будут опускать карму за то что вы написали не открытие достойное нобелевской премии, а маленькую заметку как что-то наладить. Единственное о чём здесь просят — уважайте друг друга, а также правила создания публикаций.

Не бойтесь — всё большое складывается из маленького!

P.S.
В ближайшее время будет ещё один маленький приятный сюрприз. О нём я напишу в этой же теме.

Добавлено 11 марта 2009 в 10:30
Вот теперь блог обзавёлся своим доменом второго уровня: meandubuntu.ru

Красивые шрифты в Ubuntu

Я не дизайнер и моё представление о «красоте» шрифта может отличаться от общепринятого, но после прочтения заметки Почему я не могу перейти на Kubuntu/Ubuntu etc и увиденного в комментариях снимка с экрана с такими шрифтами:
Шрифты в Ubuntu // Fonts in Ubuntu
я подумал, а что же я сделал чтобы шрифты у меня выглядели хорошо?

Поискав в этом блоге я нашёл одно из выполненных мною действий — Расширенные настройки шрифтов в Ubuntu. Но я вспомнил ещё об одном, которое почему-то не нашёл здесь.

Открываем меню Система — Параметры — Внешний вид. Переходим на вкладку Шрифты. И выбираем параметр Субпиксельное сглаживание (для ЖК-мониторов):
Субпиксельное сглаживание (для ЖК-мониторов) в Gnome в Ubuntu

В результате этих манипуляций у меня вот как выглядит та же лента.ру:
Красивые шрифты в Ubuntu после настройки

Обзор за неделю [2009-9]

Обзор интересного за прошедшую неделю

What uses your resources? [Что использует ресурсы вашей системы] // Tips4Linux.com

Which are your most-used Linux commands? [Какие Линукс команды вы чаще всего используете?] // Tips4Linux.com

Backup HDD To Remote Host [Резервное копирование жёсткого диска на удалённый сервер] // txt

Замер веса всех JPG в каталоге // ЛинСовет: Полезные Советы По Linux

Imagemagick. Создать из jpeg pdf // ЛинСовет: Полезные Советы По Linux // Правда, не очень понятно зачем это делать.

Российская общественность выступает против Windows // Linux.org.ru News

Как ограничить доступ к серверу только по SFTP // ЛинСовет: Полезные Советы По Linux

LAMP на ноутбуке

LAMP — это аббревиатура от Linux Apache MySQL PHP. То есть это полноценный Web-сервер. Так как ноутбук это мобильное устройство, а в моём случае это даже не ноутбук, а нетбук MSI Wind, то я его часто ношу с собой. Иногда между встречами образуется достаточно серьёзный промежуток времени и его хочется потратить с большей продуктивностью. Поэтому я и решил установить на нетбук LAMP. Установка LAMP описана очень подробно во многих источниках, но при установке у меня было одно маленькое требование, которое нигде, где я смотрел, не описано.

Читать дальше

Обзор за неделю [2009-8]

И вновь всё самое интересное из множества моих подписок.

Алиас для показа самых больших файлов и директорий в текущей директории // ЛинСовет: Полезные Советы По Linux;

Ограничение использования CPU каким-либо процессом // ЛинСовет: Полезные Советы По Linux;

Переключение на внешний монитор из командной строки // ЛинСовет: Полезные Советы По Linux;

List only directories from the command line [Получение только списка директорий из командной строки] // Tips4Linux.com;

How many files? [Узнать сколько файлов в директории из командной строки] // Tips4Linux.com;

Записки Плюшевого Крыса: Подсветка синтаксиса в nano // RuNIX.org — планета блогов о *NIX на русском языке.

Русская консоль в Ubuntu без доп. пакетов

Многие сталкивались с проблемой неправильного отображения русского языка в консоли Ubuntu.

Перепробовав несколько вариантов с форума я пришёл к наиболее приемлемому и простому.
Узнать

Установка GRUB

GRUB У меня есть старый компьютер на котором установлено два жёстких диска. Это компьютер используется для экспериментов и хранения старых данных. Несколько недель назад у меня появилась потребность кое-что отсканировать, поэтому я установил на один из жёстких дисков (hd0) Windows XP. Ставил на hd0 так как Ubuntu находилась на hd1, а устанавливать две ОС на один физический диск мне не очень хотелось. Только после установки до меня дошло что загрузчик от Ubuntu находился на том HDD на который я установил Windows, а следовательно программа установки Windows его удалила. Была, конечно, идея переустановить Ubuntu, но этого делать не хотелось, так как Ubuntu уже была настроена так как мне нужно, а настраивать её заново очень не хотелось.

В результате поиска в Интернете я нашёл очень простое, быстрое и элегантное решение:

  1. Загружаемся с Live CD;
  2. Монтируем жёсткий диск в произвольную папку (я примонтировал в /media/disk);
  3. Выполняем
    sudo grub-install /dev/hda --recheck --root-directory=/media/disk

    Опция recheck используется для того чтобы проверить корректность файла /boot/grub/device.map и если что исправить его.

После перезагрузки и извлечения LiveCD, я снова смог загрузится в установленную Ubuntu.

Обзор за неделю [2009-7]

Продолжаю вести обзоры интересных статей за неделю.

/bin/cat: /sys/block/hda/dev: No such file or directory // ЛинСовет: Полезные Советы По Linux // Статья повествует о том как человек поменял на сервере, находящегося под управлением Debian, материнскую плату, процессор и память, а потом заставил его работать без переустановки системы.

Full Circle Magazine на русском // Хабрахабр // На мой взгляд, там есть что можно почитать, но этого очень мало.

Смотрим видео в терминале // ЛинСовет: Полезные Советы По Linux // Теперь и на сервере можно смотреть видео.

JavaScript в Firefox/Wine работает быстрее чем в Firefox/Linux // Linux.org.ru News

Материалы распространяются под лицензией Creative Commons: Атрибуция — Некоммерческое использование — С сохранением условий (Attribution-NonCommercial-ShareAlike) 3.0 Unported.
Рейтинг@Mail.ru