Показаны сообщения с ярлыком Debian. Показать все сообщения
Показаны сообщения с ярлыком Debian. Показать все сообщения

четверг, 27 февраля 2014 г.

Production сервер для Ruby on Rails

Начнем, пожалуй! =)
Нужно выбрать веб-сервер, который мы будем использовать. Для целей разработки в Rails есть встроенный Webrick, который запускает написанное приложение на http://localhost:3000
Но это же несерьезно, использовать его на production сервере =)
В итоге я выбрал связку Nginx и Passenger. Можно спросить, почему? Просто она дает бОльшую производительность (в настройках по default), чем Apache + Passenger и менее сложна в настройке, чем Nginx + Unicorn. Во всяком случае, мне так кажется =)
Доступ по SSH. Консоль, откройся!
1
2
apt-get update
apt-get upgrade
Только что мы обновили все пакеты в системе. Теперь остановим и удалим Apache (если он есть), раз уж ставим вместо него Nginx.
1
/etc/init.d/apache2 stop && apt-get purge apache2*
Теперь займемся установкой rvm (контроль версий Ruby)
1
2
apt-get install curl
\curl -L https://get.rvm.io | bash -s stable --rails
В конце установки rvm даст правильную команду для своего запуска. У меня это было:
1
source /usr/local/rvm/scripts/rvm
Теперь поставим зависимости rvm. Команда
1
rvm requirements
Подскажет нам, что же именно еще нужно установить. Это длинный список разных пакетов.
1
/usr/bin/apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion pkg-config
Запускаем и ждем, покуда все установится =)
Установим Ruby (версия у Вас может быть и новее) и укажет, какую версию мы будем использовать в системе по умолчанию.
1
2
rvm install 1.9.3
rvm use 1.9.3 --default
Далее установим RubyGems
1
rvm rubygems current
и рельсы
1
gem install rails
Теперь займемся, собственно, сервером.
Ставим Passenger
1
gem install passenger
В качестве модуля для Passenger устанавливаем Nginx.
1
rvmsudo passenger-install-nginx-module
Инсталлер nginx скажет нам, если ему чего-нибудь не хватает. Мне не хватало одного пакета:
1
apt-get install libcurl4-openssl-dev
Если все зависимости установлены, в меню установки nginx выбираем «1″ для быстрой установки.
Примечание: init.d (файл для запуска) для nginx при такой установке не создается, так что тырим его с linode.com =)
1
2
3
4
wget -O init-deb.sh http://library.linode.com/assets/660-init-deb.sh
sudo mv init-deb.sh /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
sudo /usr/sbin/update-rc.d -f nginx defaults
Далее стартуем nginx.
1
sudo service nginx start
Теперь зайдя на адрес нашего vps мы можем увидеть стандартную заглушку nginx. Это значит, что все идет хорошо =)
Лишним не будет установить node.js
1
sudo apt-get install nodejs
Теперь настроим nginx. Для этого нужно подредактировать его файл nginx.conf (у меня он был в /opt/nginx/conf/nginx.conf). Его расположение зависит, конечно, от директории, в которую nginx установился.
1
nano /opt/nginx/conf/nginx.conf
Найдите в файле участок «server { тут настройки по-умолчанию }». Придадим ему следующий вид:
1
2
3
4
5
6
7
8
9
10
server {
        listen      80;
        server_name имя_вашего_сервера;
        rails_env production;
        passenger_use_global_queue on;
        root /var/www/название_вашего_приложения/public;
        passenger_enabled on;
        error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;
    }
В строке root должен быть путь к папке public вашего приложения.
После правки не забываем перезапустить сервер nginx.
1
service nginx restart
И не забывайте, что теперь мы работаем не с development базой данных, а с production.
Возможно, еще придется сделать:
1
rake assets:precompile
Пока я не ставил Capistrano для нормального деплоя приложений…
Если будут вопросы — задавайте их в комментариях =)

воскресенье, 23 февраля 2014 г.

Установка PHP 5.5.x на Debian

vim /etc/apt/sources.list.d/dotdeb.list


deb http://packages.dotdeb.org wheezy-php55 all
deb-src http://packages.dotdeb.org wheezy-php55 all

Если есть прокси:
export http_proxy='101.198.130.118:3128'
wget http://www.dotdeb.org/dotdeb.gpg
sudo apt-key add dotdeb.gpg
apt-key add dotdeb.gpg
apt-get update

Для apache :
apt-get install php5

или lighttpd :
apt-get install php5-cgi

php -v || php-cgi -v
Оригинал: http://www.dev-metal.com/setup-latest-version-php-5-5-debian-wheezy-7-07-1-fix-gpg-key-error/

среда, 22 января 2014 г.

Установка Ruby on Rails на Debian

Установка

Перед установкой Rails вам придется поставить Apache и MySQL. Для установки пакета Apache обратитесь к разделу руководства HTTPD - Apache2 интернет сервер. Для инструкций по установке MySQL смотрите раздел MySQL.
Как только пакеты Apache и MySQL установлены, вы готовы к установке пакета Ruby on Rails.
Чтобы установить базовые пакеты Ruby и Ruby on Rails, вы можете выполнить следующую команду в терминале:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install rails
$ sudo apt-get install ruby
$ sudo apt-get install ruby-dev
$ export http_proxy=127.0.0.1:3128
$ sudo gem  install rails --verbose
$ sudo apt-get install libsqlite3-dev
$ sudo gem install sqlite3 --verbose
$ sudo gem install libv8 --verbose -- --with-system-v8
$ sudo gem install execjs --verbose
$ rails new blog
$ cd ./blog/ 
 
upd: Полезные гемы:
 gem install rspec --verbose
 gem install capybara --verbose
 gem install spork-rails
 gem install guard-spork --verbose
 gem install 'bootstrap-sass' -v '2.3.2.0' --verbose
 gem install net-ping --verbose
 gem install net-snmp --verbose
 gem install net-ssh --verbose
 gem install pony --verbose
После этого при попытке запустить rails server , мы получим ошибку. Требуется установить nodejs . Но если вы используете Ubuntu, то у вас есть проблема: в стандартных репозиториях такого пакета нет. А значит, что вам придётся собирать, устанавливать и настраивать nodejs самостоятельно. Это не слишком сложно, но не очень очевидно. Решается подключением репозитория sid debian ( http://packages.debian.org/ru/sid/i386/nodejs/download ) : 
echo 'deb http://ftp.de.debian.org/debian sid main' >> /etc/apt/source.conf .

После этого выполняем :
$ sudo apt-get update
$ sudo apt-get install nodejs

Не забудьте удалить подключенный репозиторий из /etc/apt/source.conf и сделать apt-get update .

Настройка

Измените файл настроек /etc/apache2/sites-available/default для настройки ваших доменов.
Первое, что стоит изменить, это инструкция DocumentRoot:
DocumentRoot /path/to/rails/application/public
Затем измените секцию <Directory "/path/to/rails/application/public">:
<Directory "/path/to/rails/application/public">
        Options Indexes FollowSymLinks MultiViews ExecCGI
        AllowOverride All
        Order allow,deny
        allow from all
        AddHandler cgi-script .cgi
</Directory>
Вы также можете разрешить модуль mod_rewrite для Apache. Для включения модуля mod_rewrite введите, пожалуйста, следующую команду в терминале:
sudo a2enmod rewrite
Наконец вам потребуется изменить владельца каталогов /path/to/rails/application/public и /path/to/rails/application/tmp на пользователя, который используется для запуска процесса Apache:
sudo chown -R www-data:www-data /path/to/rails/application/public
sudo chown -R www-data:www-data /path/to/rails/application/tmp
 
Использованные ресурсы:
http://habrahabr.ru/sandbox/49699/ 

вторник, 14 января 2014 г.

Сборка Squid3 с SSL в Debian

apt-get update
apt-get install openssl
apt-get install devscripts build-essential libssl-dev

apt-get source squid3
apt-get build-dep squid3
cd squid3-3.1.20
vim debian/rules
 

Находим секцию DEB_CONFIGURE_EXTRA_FLAGS . Добавляем :
--enable-ssl
--with-open-ssl="/etc/ssl/openssl.cnf"
 

Сохраняемся и выходим.
debuild -us -uc
cd ..
dpkg -i squid3_3.1.20-2.2_i386.deb

четверг, 21 ноября 2013 г.

Организация приема SNMP trap’ов и их отправки на коммутаторах DLink

В рамках поставленной задачи (узнавать о появлении новых MAC-адресов на портах
коммутаторов DLink) понадобилось организовать настройку SNMP-trap'ов на
коммутационном оборудовании с последующим приемом их на сервере и дальнейшей
обработкой в зависимости от пришедшего события.

Для начала надо установить и настроить демон, который будет принимать трапы от
оборудования и при нужном MIB вызывать наш обработчик. Установка net-snmp -
тема отдельная, выполняется из пактов или портов, и особых трудностей не вызывает.

Собственно приемом трапов занимается snmptrapd. Для обработки заданного трапа
пишем в snmptrapd.conf:

    traphandle 1.3.6.1.4.1.171.11.63.6.2.20.0.2 /scripts/trap.php

Теперь после рестарта демона snmptrapd, он начнет принимать приходящие трапы и
при наличии трапа с заданным MIB (1.3.6.1.4.1.171.11.63.6.2.20.0.2 - в нашем
случае), будет вызывать наш обработчик, который уже будет совершать необходимые
нам действия.
Обработчик SNMP-трапов

Принимать SNMP trap-ы на самом деле достаточно просто. Вот пример простого
обработчика SNMP-трапов на PHP:

      #!/usr/bin/php -q
      <?php
      $message = "";
      $fd = fopen("php://stdin", "r");
      while (!feof($fd)) $message .= fread($fd, 1024);
      ?>

Все что делает этот скрипт - получает в переменную $message текст, который
передается демоном snmptrapd. Текст приходит разделенный знаками конца строки.
Первая строка - это всегда имя хоста (который прислал трап), вторая - IP-адрес
этого хоста, третья - его uptime, четвертая - MIB пришедшего трапа. Остальные
строки в сообщении - это детальная информация касательно пришедшего трапа, если
она предусмотрена.


Для отправки Trap-ов на коммутаторе исполняем такие команды:

    create snmp community trap_com view CommunityView read_only
    create snmp host x.x.x.x v2c trap_com

Где х.х.х.х - IP-адрес сервера, котоырй будет принимать SNMP traps.

Далее надо включить опцию дабы коммутатор отсылал трап при появлении на порту
нового мака. Делается это через SNMP

    snmpset -v2c -c write_commenity switch_ip 1.3.6.1.4.1.171.11.63.6.2.1.2.19.0 i 3

Выключить эту опцию можно так

    snmpset -v2c -c write_commenity switch_ip 1.3.6.1.4.1.171.11.63.6.2.1.2.19.0 i 2

Узнать текущее состояние опции можно так

    snmpwalk -v2c -c read_commenity switch_ip 1.3.6.1.4.1.171.11.63.6.2.1.2.19


Вся информация справедлива для коммутаторов 3028. Для других моделей MIB-ы
могут сильно отличаться - к сожалению, DLink любит менять их от серии к серии.
Надо заметить, что опция отправки трапа при появлении нового мака на порту
доступна далеко не на всех моделях DLink-овых коммутаторов - например, 3010
такой возможности не поддерживает.

вторник, 19 ноября 2013 г.

Централизованный сбор, хранение и просмотр Syslog в Debian Linux

В качестве стандартного syslog-сервиса в Debian используется rsyslog. Дальше рассказывается, как отправлять копии журналов на сервер, сохранять их в SQL-базе и просматривать через удобный Веб-интерфейс.



Отправка с клиентских машин на центральный сервер


Создаём файл /etc/rsyslog.d/send2server.conf со строкой:
*.* @hostname-или-fqdn-или-ip-адрес-сервера
Например:
*.* @netlog.lan
Чтобы не собирать отладочный мусор, можно заменить "*.*" на "*.notice" или "*.warning".
Перечитываем настройки: /etc/init.d/rsyslog restart

Протокол доставки


  • по умолчанию используется udp/514
  • если указать "@@" вместо "@", то вместо стандартного UDP станет использоваться TCP (нестандартное расширение!).
  • если нужна 100% надёжность доставки, вместо udp/tcp следует использовать модули omrelp на клиенте и imrelp на сервере.


Приём на сервере


В /etc/rsyslog.conf должны быть раскомментированы строки:
$ModLoad imudp
$UDPServerRun 514

$ModLoad imtcp
$InputTCPServerRun 514

Перечитываем настройки: /etc/init.d/rsyslog restart

Хранение в MySQL


  • apt-get install rsyslog-mysql
  • аккуратно отвечаем на все задаваемые вопросы,
  • если не считать паролей, достаточно подтверждать предлагаемые значения,
  • настройки сохраняются в /etc/rsyslog.d/mysql.conf


Просмотр в LogAnalyzer


  • Страница скачивания: loganalyzer.adiscon.com/downloads (в пакетах Debian отсутствует)
  • Установка зависимостей: apt-get install libapache2-mod-php5
  • Из архива с исходными текстами внутрь /var/www требуется скопировать папку ./src и переименовать её в «loganalyzer».
  • Рекомендуемое исправление для ./include/functions_common.php, чтобы убрать предупреждения из логов Apache:
    --- loganalyzer/include/functions_common.php.orig 2011-11-14 14:32:32.000000000 +0200
    +++ loganalyzer/include/functions_common.php 2011-11-16 02:05:58.982834986 +0200
    @@ -1163 +1163,2 @@
    - $content['EXTRA_METATAGS'] .= '/>';
    + if (array_key_exists($content['HeaderDefaultEncoding']))
    + $content['EXTRA_METATAGS'] .= '/>';
  • Создание пустого файла конфигурации, будет заполнен инсталлятором:
    touch config.php
    chmod 666 config.php


Подготовка SQL-баз для LogAnalyzer



SQL-таблицу Syslog.SystemEvents стандартного формата LogAnalyzer автоматически дополняет собственными столбцами, но для этого потребуется давать ему слишком большие привилегии. Чтобы разрешить ему только SELECT, создадим столбцы вручную:
ALTER TABLE `SystemEvents` ADD `processid` varchar(60) NOT NULL DEFAULT '';
ALTER TABLE `SystemEvents` ADD `checksum` int(11) UNSIGNED NOT NULL DEFAULT '0';



Настройка LogAnalyzer


  • Открываем netlog.lan/loganalyzer/install.php и проходим все шаги.
  • Формат syslog-базы = MonitorWare.
  • Имя базы Syslog и таблицы SystemEvents являются регистрозависимыми.

После завершения установки:
chmod 644 config.php
rm install.php

Первый пользователь имеет права администратора.
Рекомендуется зайти в «Admin Center / Users» и зарегистрировать гостя с флагом «ReadOnly User».

пятница, 8 ноября 2013 г.

Восстановление пароля root

Для смены пароля root, не зная его, делаем следующее:
Получив физический доступ к компьютеру, нажимаем Ctrl + Alt + Del (возможно дважды) - система уходит в перезагрузку.

1 вариант)
  • Попробовать загрузиться в однопользовательском режиме (single mode). Для этого в меню загрузчика (Grub или Lilo - всё равно) отредактировать вариант, начинающийся со слова kernel - добавить в конец 1 или слово single, заменив также режим монтирования диска (если указан) с ro на rw (чтобы можно было сохранить новый пароль).
  • Если при загрузке запрашивает пароль root'a, то нужно перезагрузиться и изменить команду загрузчика по другому, добавив вместо single параметр init=/bin/bash, заменив также режим монтирования диска (если указан) с ro на rw

2 вариант)
  • Входим в интерактивный режим загрузчика (см выше) и указываем ему опцию:
linux init=/bin/bash
  • После загрузки оболочки необходимо перемонтировать корневой раздел в режим RW:
mount -o remount,rw /
  • Меняем пароль:
passwd
  • Сбросим данные из кеша на диск. Для этого достаточно просто перемонтировать корневой раздел обратно в режим только для чтения:
mount -o remount,ro /
  • Теперь можно перезагрузить компьютер в обычный режим. Не забывайте, что скрипты инициализации для нашего сеанса /bash не работают.

понедельник, 4 ноября 2013 г.

Настройка VLAN в Linux

1. Модуль ядра для работы с VLAN
Для работы в Linux с VLAN необходимо загрузить модуль ядра: 8021q
# modprobe 8021q
Для этого, ядро должно быть сконфигурировано с поддержкой стандарта IEEE 802.1Q (включается при конфигурировании ядра: в kernel/net/8021q включить 802.1Q VLAN Support или в Network options / 802.1Q VLAN Support). Во многих современных дистрибутивах Linux (Debian, CentOS, openSUSE и т.д) такая поддержка уже включена в ядре и модуль можно загружать.

 2. Использование утилиты vconfig для настройки VLAN
Что бы настроить на интерфейсе необходимые VLAN, можно воспользоваться утилитой vconfig она находится в пакете vlan либо в пакете vconfig, в зависимости от дистрибутива Linux.
vconfig имеет следующие опции:
 add [interface-name] [vlan_id] — добавить VLAN с номером vlan_id (от 0 до 4095) на интерфейсе interface-name
 rem [vlan-name] — удалить VLAN, именованый как vlan-name (имя vlan-name зависит от того, какой тип именования выбран см. ниже)
 set_flag [interface-name] [flag-num] [0 | 1] — указывает следует ли делать перестановку (reorder) заголовка Ethernet кадра. Если значение 1 — перестановка включена, и трафик в снифферах (tcpdump и т.д)  будет выглядеть как трафик обычного сетевого устройства без тегов VLAN. Если значение 0 - перестановка отключена, и трафик видится с тегами VLAN. Значение по умолчанию: 0.
 set_egress_map [vlan-name] [skb_priority] [vlan_qos] - указывает, что для исходящих пакетов через vlan-name с определённым приоритетом буфера сокетов (sk_buff) skb_priority, должна выполняться маркировка приоритета VLAN в значение vlan_qos (3-х битное значение в VLAN заголовке). По умолчанию значение приоритета VLAN vlan_qos: 0.
 set_ingress_map [vlan-name] [skb_priority] [vlan_qos] - указывает, что входящие пакеты через vlan-name с определённым приоритетом VLAN vlan_qos, должны помещаться в очередь буфера сокетов с приоритетом  skb_priority. Значение по умолчанию приоритета очереди буфера сокетов skb_priority: 0.
 set_name_type [name-type] - задаёт тип именования VLAN интерфейсов, при их добавлении. Возможные значения name-type:
    VLAN_PLUS_VID — имя vlan-name будет вида  vlan0020
    VLAN_PLUS_VID_NO_PAD - имя vlan-name будет вида vlan20
    DEV_PLUS_VID - имя vlan-name будет вида eth0.0020
    DEV_PLUS_VID_NO_PAD - имя vlan-name будет вида eth0.20
 Пример добавление VLAN 100 и VLAN 200 на интерфейсе eth0:
#
# modprobe 8021q
# vconfig add eth0 100
    Added VLAN with VID == 100 to IF -:eth0:-
# vconfig add eth0 200
    Added VLAN with VID == 200 to IF -:eth0:-
#
Посмотреть существующие VLAN можно в файле "/proc/net/vlan/config"
# cat /proc/net/vlan/config
   VLAN Dev name | VLAN ID
   Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
   eth0.100 | 100 | eth0
   eth0.200 | 200 | eth0
#
Задать IP адрес на  VLAN интерфейсах и включить их, можно командой ifconfig:
#
# ifconfig eth0.100 192.168.100.1 netmask 255.255.255.0 up
# ifconfig eth0.200 192.168.200.1 netmask 255.255.255.0 up
#

 3. Сохранение конфигурации VLAN интерфейсов при перезагрузке системы 
Создание VLAN через vconfig и их настройка через ifconfig позволяет сохранить настройки до перезагрузки системы, что бы настройка применялась при загрузке операционной системы, необходимо создать специальные файлы конфигурации для VLAN интерфейсов.
Конфигурация VLAN интерфейсов зависит от того, какие скрипты инициализации сети используется в дистрибутиве Linux (initscripts, sysconfig или interfaces). Что бы узнать, какая система инициализации сети у Вас, следует:
  — Выполнить команду "rpm -qf /sbin/ifup" на экране отобразится название пакета, название начинается на "initscripts" либо на "sysconfig". Этот пакет и предоставляет скрипты инициализации сети.
  - Если в директории "/etc/network" присутствует файл "interfaces", то в Вашей системе используется interfaces для инициализации сети
 Рассмотрим примеры настройки для всех трёх типов инициализации сети.

Настройка VLAN в Linux с использованием initscripts
Примером дистрибутивов Linux, использующих для настройки сети initscripts, являются RedHat, CentOS, Fedora и пр.
Файлы описания (конфигурации) для VLAN интерфейсов следует создавать в "/etc/sysconfig/network-scripts/". Имя файла должно быть вида: ifcfg-ethX.Y, либо вида ifcfg-vlanY (тогда в самом файле ifcfg-vlanY необходимо задать соответствующее значение параметра VLAN_NAME_TYPE ), где X — номер сетевого интерфейса, Y — идентификатор (номер) VLAN (VID)
Для примера, на интерфейсе eth0 добавим два VLAN 100 и 200. Что бы рассмотреть пример обоих файлов, создадим в "/etc/sysconfig/network-scripts/" один файл ifcfg-eth0.100 (описание для VLAN 100) и второй ifcfg-vlan200 (описание для VLAN 200).
 Содержание файла "ifcfg-eth0.100":
VLAN=yes
DEVICE=eth0.100
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.100.1
NETMASK=255.255.255.0
 Содержание файла "ifcfg-vlan200":
VLAN=yes
VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
DEVICE=vlan200
PHYSDEV=eth0
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.200.1
С такими файлами, после перезагрузки системы, на интерфейсе eth0 будут присутствовать два VLAN 100 и 200. Модуль ядра 8021q, при этом, загрузился автоматически.
Проверка:
#
# lsmod | grep 8021q
    8021q 20355 0
    garp 5703 1 8021q
#
# cat /proc/net/vlan/config
     VLAN Dev name | VLAN ID
     Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
     eth0.100 | 100 | eth0
     vlan200  | 200 | eth0
#
#
# ifconfig eth0.100
   eth0.100 Link encap:Ethernet HWaddr 00:0C:29:64:7F:04
            inet addr:192.168.100.1 Bcast:192.168.100.255 Mask:255.255.255.0
            inet6 addr: fe80::20c:29ff:fe64:7f04/64 Scope:Link
            UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
            RX packets:0 errors:0 dropped:0 overruns:0 frame:0
            TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:0
            RX bytes:0 (0.0 b) TX bytes:768 (768.0 b)

# ifconfig vlan200
   vlan200 Link encap:Ethernet HWaddr 00:0C:29:64:7F:04
           inet addr:192.168.200.1 Bcast:192.168.200.255 Mask:255.255.255.0
           inet6 addr: fe80::20c:29ff:fe64:7f04/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
           TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:0
           RX bytes:0 (0.0 b) TX bytes:768 (768.0 b)
#
 Видно, что модуль ядра 8021q загружен, созданы VLAN 100 и 200, подняты соответствующие им интерфейсы с заданными IP адресами. (Значение RX равно 0, так как на интерфейс ещё не подан транк со стороны коммутатора).

Настройка VLAN в Linux с использованием sysconfig
Одним из примеров дистрибутива Linux, использующего для настройки сети sysconfig, является SuSE Linux.
Нужно создать в директории "/etc/sysconfig/network/" файлы для конфигурации необходимых VLAN. Имя файла имеет вид: ifcfg-vlanX, где X — номер VLAN (VID)
В содержание файла, помимо настроек сети (IP адрес, маска сети и т.д.), необходимо добавить параметры: ETHERDEVICE и VLAN

Пример создания двух VLAN 100 и 200 на интерфейсе eth0:
Создаем в "/etc/sysconfig/network/" два файла, первый с именем  ifcfg-vlan100 и второй с именем ifcfg-vlan200
Содержание файла "ifcfg-vlan100":
ETHERDEVICE="eth0"
IPADDR="192.168.100.2"
NETMASK="255.255.255.0"
NETWORK="192.168.100.0"
BROADCAST="192.168.100.255"
STARTMODE="onboot"
VLAN="YES"
Содержание файла "ifcfg-vlan200":
ETHERDEVICE="eth0"
IPADDR="192.168.200.2"
NETMASK="255.255.255.0"
NETWORK="192.168.200.0"
BROADCAST="192.168.200.255"
STARTMODE="onboot"
VLAN="YES"
После перезагрузки системы или выполнения команды "/etc/init.d/network restart", на интерфейсе eth0 появятся два VLAN 100 и 200, а VLAN интерфейсы vlan100 и vlan200 будут подняты с заданной настройкой IP адреса и маской сети. Так же модуль ядра 8021q будет загружен автоматически.
Проверить результат можно таким же способом, как описано в случае с initscripts ("lsmod | grep 8021q", "cat /proc/net/vlan/config","ifconfig")

Настройка VLAN в Linux с использованием interfaces (ifupdown)
Примером дистрибутивов Linux, использующих для настройки сети interfaces, являются Debian, Ubuntu и пр.
Настройка производится в файле: "/etc/network/interfaces", в который необходимо добавить дополнительные строки, описывающие VLAN интерфейсы и их настройку.

Пример создания двух vlan 100 и 200 на интерфейсе eth0:
Добавить в файл "/etc/network/interfaces" строки:
auto eth0.100
iface eth0.100 inet static
   address 192.168.100.3
   netmask 255.255.255.0
   vlan_raw_device eth0

auto eth0.200
iface eth0.200 inet static
   address 192.168.200.3
   netmask 255.255.255.0
   vlan_raw_device eth0

После перезагрузки, или после выполнения команд "# ifup eth0.100″ и "# ifup eth0.200″, на интерфейсе eth0 появятся два VLAN 100 и 200, интерфейсы eth0.100 и eth0.200 будут подняты с заданными сетевыми настройками. Так же модуль ядра 8021q будет автоматически загружен.
Проверить результат можно таким же способом, как описано в случае с initscripts ("lsmod | grep 8021q", "cat /proc/net/vlan/config","ifconfig")

понедельник, 28 октября 2013 г.

Конвертация flv to avi, swf to avi

Добрый день. Возникла необходимость сконвертировать видео flv в avi, для просмотра на IPad и Android устройствах. Наверное есть какие-то приложения для Android и IOS, которые позволяют смотреть flv, но приложений под IOS, которые просматривают swf точно нет, т.к. для проигрывания swf нужен Flash. От конвертации под Windows я сразу отказался, по трём причинам:
1.  Происхождение приложений. Скачивая приложения с непонятных сайтов и устанавливая их с правами администратора, можно получить очень "интересные" последствия. Наверное, я параноик, но устанавливать непонятные Win-приложения я не хочу.
2. Интерфейс у приложений, какой-то не очень для меня очевидный. Может быть я тупой или ленивый, но разбираться в невероятном количестве менюшек мне не хотелось.
3. В процессе конвертации видео на моём бюджетном ноутбуке, выяснилось что время, затрачиваемое на конвертацию, чуть ли не больше, чем время воспроизведения файла. Т.е. на конвертацию 20 часов видео потратиться более суток и если при этом что-то, программа  вернёт ошибку, то сколько то часов времени будет потеряно.

И тут мне в голову пришла совершенно очевидная мысль: не может быть, что бы в репозиториях для Debian не было средства для конвертации. Первая же ссылка в поиске привела меня на форум OpenNet . А дальше дело техники:
# apt-get install ffmpeg

Сам код для конвертации без потери качества, для тех кому день читать man :
ffmpeg -i src.flv -vcodec copy -acodec copy dst.avi

И маленький скриптик:

#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10 11 12
do
        ffmpeg -i $i.flv -vcodec copy -acodec copy $i.avi &
done

exit 0


Кстати, очень важно наличие амперсанда & в конце команды :

ffmpeg -i $i.flv -vcodec copy -acodec copy $i.avi

Т.к. это позволяет запустить конвертацию в несколько "потоков" и отвязать выполнение скрипта от консоли в которой он запущен. Т.е. после запуска скрипта проверяем наличие ffmpeg
в top и можно закрывать консоль. На моём сервере с древним Xeon и 2 Гб оперативной памяти все процессы (12 шт.) ffmpeg "съели" 4% процессорного времени и всё видео (20 часов) сконвертировалось в течении 3-4 минут.

Желающие могут усовершенствовать скрипт использую BASH Guide .
Конвертация проходит без потери качества.
Удачи:)

четверг, 17 октября 2013 г.

Lighttpd + WebDAV


Ставим пакеты:

apt-get update
apt-get install -y lighttpd
apt-get install -y lighttpd-mod-webdav

Добавляем в конфиг файл
vi /etc/lighttpd/lighttpd.conf

$HTTP["url"] =~ "^/dav($|/)" {
webdav.activate = "enable" # allow module
webdav.is-readonly = "disable" # enable write
webdav.sqlite-db-name = "/var/run/lighttpd/lighttpd.webdav_lock.db" # access to locaks and metadata database
}

Около блока "server.modules" ищем строку "mod_webdav" и убираем знак диеза слева, если он установлен.

После этого нам требуется создать хотя бы одну папку с доступом по WebDAV. Корнем веб сервера устанавливается папка /var/www, если вас устраивает такое положение, можете её так и оставить, в противном случае можете изменить её местоположение в конфиг файле. После этого создаем папку для WebDAV доступа:
mkdir /var/www/dav
chown www-data:www-data /var/www/dav

Ну и напоследок применяем настройки:
/etc/init.d/lighttpd restart

После это можно каким-нить WebDAV клиентом (я использовал nd) попробовать поиграться с папкой http://ваш_сайт/dav

Я использовал версию (в случае же проблем, обновляемся на более новую):
lighttpd-1.4.13 (ssl) - a light and fast webserver
Build-Date: Apr 15 2008 08:23:10

Играемс:
nd -d http://домен.ru:81/dav/suxx.ics --- удаление файла
nd -p wammu.log http://домен.ru:81/dav/suxx.log -- загружаем файл
nd -m http://домен.ru:81/dav/suxx555.log http://домен.ru:81/dav/suxx.log -- перемещаем файл
nd -v http://домен.ru:81/dav/555suxx.log -- запрос свойств объекта
У меня было выдано:
Status: 0
Last-Modified:
Created:
Size:
Content-Type:
Resource-Type:

Зададим новое свойство:
nd -l http://домен.ru:81/dav/suxx555.log -- блокируем объект
Lock: token="opaquelocktoken:aebb8df4-3321-4604-a8aa-cf69429c2725",
scope="exclusive",
owner-href="",
timeout="Second-600"

nd -u -t opaquelocktoken:aebb8df4-3321-4604-a8aa-cf69429c2725 http://домен.ru:81/dav/suxx555.log -- разлочим объект посредством "ключа", выданного нам при блокировке
nd -k http://домен.ru:81/dav/folder1 -- создаем новую папку

А вот далее интереснее:
nd -e test=12345 http://домен.ru:81/dav/suxx555.log
nd -v http://домен.ru:81/dav/suxx555.log
Name: http://домен.ru:81/dav/suxx555.log
Status: 0
Last-Modified:
Created:
Size:
Content-Type:
Resource-Type:


Как видите, вновь заданное свойство не показывается (хотя в sqlite лайта базе данных оно имеется). Это баг nd / lighttpd или же я туплю ? Попробуем другой WebDAV клиент, пожалуй, это будет cadaver.
nrg@dell:~$ cadaver
dav:!> open http://домен.ru:81/dav
dav:/dav/> propset suxx555.log suxx 777
dav:/dav/> propget suxx555.log suxx
Fetching properties for `suxx555.log':
Value of suxx is: 777


Таки выходит, глюк nd. Ну вот и все, осталось только придумать, для чего использовать такой замечательный протокол :)

вторник, 15 октября 2013 г.

Cacti не рисует графики

Cacti не рисует графики - что делать?

imageОчень часто, когда мы начинаем писать свои скрипты получения данных, нас начинает преследовать так называемая проблема NaN - график не отображает данные. Когда я делал первые свои графики это просто ужас как бесило и заставляло меня ругать Cacti. Тратил кучу времени на то что вновь и вновь заново создавал источники данных, переписывал скрипт, искал чорт знает что вобщем. Потом, всеже успокоившись, решил перейти к методическому убийству данной проблемы. В результате набрел на хороший англоязычный ман по лечению данной проблемы и вольно перевел его для себя и глядишь тем пригодится кто только отправляется в битву за графики с Cacti. Итак пошаговое руководство в борьбе с NaN в Cacti.

Проверка Cacti логфайла

В первую очередь следует заглянуть в него. Обычно он находится по адресу /log/cacti.log. В противном случае необходимо заглянуть в настройки - Settings, Paths. В случае если в данном лог файле будет встречаться

SPINE: Host[...] DS[....] WARNING: SNMP timeout detected [500 ms], ignoring host '...'

Это означает вероятнее всего, что опрашиваемое вами устройство не может полностью отработать, то количество SNMP OID в SNMP запросе, которое к нему приходит. Для устранения этой ошибки следует уменьшит количество SNMP OID в запросе. Идем в Settings, Poller и уменьшаем значение The Maximum SNMP OID's Per SNMP Get Request. Следует установить значение в 1 и после того как poller начнет собирать требуемую статистику, следует его постепенно увеличить, выбрав подходящее для вашего случая значение.

Проверка функционирования вашего скрипта

Хоть это и очевидно, но всеже не стоит игнорировать - следует проверить лишний раз работу вашего скрипта, выдающего данные в командной строке. Сделать это следует обязателно с привилегиями пользователя cacti.

su - cactiuser
/full/path/to/perl your-perl-script.pl p1 p2
... (проверяем ответ)

Если вы получаете данные посредством snmp запроса, то для проверки следует использовать snmpget, в запросе укажите OID, используйте тоже значение community и укажите версию snmp, туже что вы определили в cacti. Например опрос OID of .1.3.6.1.4.blablabla, со значением community "very-secret" и версией 2 SNMP опрашиваемый хост target это будет выглядеть вот так:

snmpget -c very-secret -v 2c target .1.3.6.1.4.blablabla
.... (проверяем ответ)


Проверяем Cacti Poller

В первую очередь проверьте наличие poller.php в cron. Эта программа вызывает базовый скрипт cmd.php, или spine, альтернативный метод запросов данных, написанный на C. Установить какой поллер используется встроенный или spine можно в настройках - Settings, Poller. Если вы хотите использовать Spine, то его следует установить отдельно, в базовую установку Cacti он не входит.
Теперь следует очистить лог файл /log/cacti.log (ну или переименуйте его, чтобы не было "старого мусора"). Затем измените настройки - Settings, Poller Logging Level установив значение DEBUG.
Теперь вам следует определить ID вашего запроса и ID вашего хоста. Найти требуемый вам ID запроса следует в меню Data Sources. ID хоста определяется в меню Devices.
Теперь следует запустить наш poller вручную и только для выбранного нами запроса данных. Делается это следующим образом -

php -q cmd.php id id

если вы используете Spine, то запустить такую проверку в режиме логгирования на уровне Debug можно вот так:

./spine --verbosity=5 id id

В обоих случаях мы увидим ответ в STDOUT. Данную процедуру можно повторять не дожидаясь установленного в Cacti временного интервала. Кроме того это очень удобно - вам не надо искать ошибку в сотнях записей лога, когда у вас уже очень большое количество данных мониторится в Cacti.

Проверка состояние MySQL

В большинстве своем данная проверка является излишней, и ее можно на первом этапе дабага проблемы просто опустить, но в случае если все далее описанные шаги, показывают что все работает правильно, то следует ее всеже сделать.
В дебаг логе, найдите запрос MySQL update соответствующий исследуемому хосту. Там будет SQL запрос который следует выполнить непосредственно на сервере mysql либо через терминал, либо средствами phpmyadmin. Проверьте что запрос сервером mysql выполняется корректно.

Проверка обновления RRD файла

Проверьте лог файл, в нем должны быть примерно такие строки:

rrdtool update filename --template ...

Для каждого RRD файла должна быть одна строка в логе.
RRD файлы должны создаваться изначально самим поллером. Если он их не создал то соответственно не пойдет и их обновление. Если их нет, проверьте Poller Cache в меню Utilities и проверьте там запрос к файлу.

Проверка владельца RRD файлов

Если rrd файлы были созданы с правами root-а, а поллер запущен в системи с привилегиями cactiuser , то естественно поллер не сможет обновить данные в RRD файле.

cd /var/www/html/cacti/rra
ls -l localhost*
-rw-r--r-- 1 root root 463824 May 31 12:40 localhost_load_1min_5.rrd
-rw-r--r-- 1 cactiuser cactiuser 155584 Jun 1 17:10 localhost_mem_buffers_3.rrd
-rw-r--r-- 1 cactiuser cactiuser 155584 Jun 1 17:10 localhost_mem_swap_4.rrd
-rw-r--r-- 1 cactiuser cactiuser 155584 Jun 1 17:10 localhost_proc_7.rrd
-rw-r--r-- 1 cactiuser cactiuser 155584 Jun 1 17:10 localhost_users_6.rrd


Выполните следующую команду для решения такой проблемы, если она у вас присутствует:

chown cactiuser:cactiuser *.rrd

Проверка пределов в RRD файле

Возможно причиной ваших проблем являются некорректно установленные пределы MAXIMUM и MINIMUM в RRD файле данных. Выполните следующее:

rrdtool fetch rrd_file AVERAGE

просмотрите 10-20 строк и если вы там видите NaN, то:

rrdtool info rrd_file

нас интересуют значения ds[loss].min ds[loss].max (loss - это частный пример - у вас будет имя ваших данных) и в результате вы увидите например такую картину:

ds[loss].min = 0.0000000000e+00
ds[loss].max = 1.0000000000e+02


В данном примере мы имеем MINIMUM = 0 и MAXIMUM = 100. Теперь следует сравнить значение ds.[…].type=ВЕЛИЧИНА, то есть мы убеждаемся что полученная нами ВЕЛИЧИНА находится в установленных значениях максимума и минимума.
Если значение не укладывается в установленные пределы , то недостаточно изменить пределы в Data Template, следует выполнить :

rrdtool tune rrd_file --maximum ds-name:new_ds_maximum>

где ds_name имя для данных определенное внутри RRD файла, а new_ds_maximum - новое значение максимума для данных. (Изменение минимума делается аналогично).
На этом шаге следует также проверить значения step и heartbeat интересующего нас RRD файла.

Проверка связи RRD файла и графика


Наконец следует проверить те ли хранилища данных использует график, который мы пытаемся получить. Идем в Graph Management и выбираем наш график. В данном режиме выбираем Turn On Graph Debug Mode и в появивишемся окне RRDTool Command: видим к каким RRD файлам обращается наш график (на это указывает выражение DEF).

Разное

До версии 0.8.6j, poller_output мог "вылезти за грани разума" ).
Эо обычно происходило из-за параметров настройки памяти в php.ini в значение 8 МБ. Измените данное значение по крайней мере на 64 MB.
Чтобы проверить это, выполните sql запрос через mysql cli (или phpmyadmin)
select count(*) from poller_output;
Для устранения проблемы выполните:
truncate table poller_output;
Данная проблема решена, начиная с версии 0.8.7

Установка через RPM

Некоторые RPM инсталяции некорректно встраивают поллер в cron - в результате поллер присутствует в cron в двух таблицах. Необходимо сделать проверку /etc/crontab и таблицы cron пользователя cactiuser (ну или как вы там у себя его назвали) и настроить cron так чтобы вызов шол однократно.

Не Nan , но значение 0

Во первых, внимательно пишите свои скрипты. Если в ы в скрипте используете внешние команды, то не надо надеятся на переменную $PATH. Указывайте нормальный, полный путь до команды /full/path/to/external/command

Во вторых, следите чтобы скрипт выполнялся быстро. Если в логах cacti вы видите “U”, это значит что Cacti устал ждать выполнения скрипта , и в результате вы словите NaN. Скрипт должен выполняться быстро! Но это уже ваша забота по его оптимизации.


Проблема : CACTID: ERROR: Problem with MySQL: 'Can't find file: 'poller_output' (errno: 2)'
 Проблема возникает из-за гибели таблички poller_output (обычное дело для myisam табличек при переполнении диска):

select TABLE_NAME,TABLE_TYPE,ENGINE,TABLE_ROWS,DATA_FREE,CHECK_TIME,CHECKSUM,TABLE_COMMENT from information_schema.tables;
...
| poller_output                         | BASE TABLE  | NULL   |       NULL |      NULL | NULL                |     NULL | Can't find file: 'poller_output' (errno: 2)      
...
Решается  :
mysql -uroot -p -e'repair table cacti.poller_output';

или

mysql -uroot -p -e'truncate table poller_output';

среда, 7 августа 2013 г.

KVM на Debian.

Несколько недель назад я выбрал себе KVM для виртуализации. Сразу отвечу на вопросы «почему?»: виртуальные машины под KVM шустры и позволяют запускать любую ОС. Еретические ОС я не пробовал, но Debian и FreeBSD бегают под KVM+Debian очень и очень неплохо — это признают даже бывалые администраторы.
Если вы готовы за скорость заплатить удобством настройки и использования хост-машины — просим под кат.

Устанавливал я KVM на машинку с процессором core i7. Рекомендую использовать именно многоядерные процессоры с HT. При том не стоит отдавать виртуальным машинам виртуальных процессоров больше, чем есть ядер на хост-машине. В случае с i7 я получил 8 ядер, которые в дальнейшем смогу разделить как пожелаю между контейнерами.  Если раздать больше процессоров чем есть — это может сказаться на производительности.
Первым делом проверяем — поддерживает ли процессор аппаратную виртуализацию:
cat /proc/cpuinfo | egrep ‘(svm|vmx)’
Если после ввода команды на экране появился какой-либо текст — то ваш процессор поддерживает аппаратную виртуализацию. Если вывод команды пустой — то не стоит использовать KVM. Да и вообще не стоит использовать современные гипервизоры.
Теперь устанавливаем необходимые пакеты:
sudo apt-get install kvm libvirt-bin virtinst bridge-utils
После чего стоит перезагрузить хост. Конечно же стоит использовать последнее доступное стабильное linux-ядро, доступное в репозиториях.
Проверяем, установился ли KVM:
virsh -c qemu:///system list —all
Вывод команды опять же должен быть не пустым и не содержать ошибок вида «команда не найдена».
Приступим к настройке сети на хост машине. Приведем файл /etc/network/interfaces к следующему виду:
auto lo
iface lo inet loopback
auto  eth0
iface eth0 inet static
auto br0
iface br0 inet static
address   178.ххх.ххх.137
netmask   255.255.255.192

network 178.ххх.ххх.0
broadcast 178.ххх.ххх.191
gateway   178.ххх.ххх.129
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
После чего применяем все сетевые настройки:
/etc/init.d/networking restart
Для удобства создадим каталоги:
mkdir /iso && mkdir /vms
И скачаем образ установочный образ debian:
cd /iso && wget -c http://cdimage.debian.org/debian-cd/5.0.4/amd64/iso-cd/debian-504-amd64-CD-1.iso
Теперь перейдём к созданию виртуальной машины:
virt-install -n vm1 -r 1024 -f /vms/vm1.img -s 50 -c /iso/debian-cd/5.0.4/amd64/iso-cd/debian-504-amd64-CD-1.iso —accelerate —os-type=linux —os-variant=generic26 -v —vnc -w bridge:br0
Расскажу о приведенных выше опциях:
-n vm1 — имя домена (виртуальной машины)
-r 1024 — количество оперативной памяти
-f /vms/vm1.img — расположение «жесткого диска».
-s 50 — размер «жесткого диска»
-c /iso/debian-cd/5.0.4/amd64/iso-cd/debian-504-amd64-CD-1.iso — указываем iso образ, с которого будем производить установку системы. Рекомендую запускать 64х битные образы под 64й битной ОС хост-машины.
—accelerate —os-type=linux —os-variant=generic26 -v — оптимизируем VDS для работы с виртуальным Linux с ядром 2.6.хх
—vnc — запускаем VNC-сервер для доступа к виртуальной машине.
-w bridge:br0 — указываем, что виртуальная машина должна использовать сетевлй мост br0  хост-машины
Теперь перейдем к установке ОС на виртуальную машину.
На вашем компьютере (не на сервере, а на рабочей станции с графической средой) вводим команды:
ssh -L 5900:localhost:5900 root@178.ххх.ххх.137
И во второй консоли:
vncviewer localhost:5900
Теперь вы должны увидеть в VNC установщик Debian. Ставим всё как обычно (возможно вам будет недоступна сеть). После того, как установщик Debian отправит систему в перезагрузку — виртуальная машина выключится, вместо того, чтобы перезагрузиться.
Самое время изменить количество выделенных процессоров для виртуальной машины:
virsh -c qemu:///system setvcpus vm1 2
Эта команда сработает, только если виртуальная машина находится в выключенном состоянии.  Теперь запустим её снова:
virsh -c qemu:///system start vm1
Теперь нужно настроить сеть на виртуальной машине. Заходим на неё по VNC и приводим файл /etc/network/interfaces к следующему виду:
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
address 178.xxx.xxx.177
netmask 255.255.255.192
network 178.xxx.xxx.128
broadcast 178.xxx.xxx.191
gateway 178.xxx.xxx.137
Шлюзом необходимо указать ip-адрес хост-сервера. Так же стоит прописать NS в файл /etc/resolv.conf
Теперь ваша виртуальная машина работает и доступна из сети (а в моём случае она стала доступна и из интернета).
Осталось сделать aptitude update && aptitude upgrade && aptitude install openssh-server и зайти на виртуальный сервер по SSH.
Пользуясь случаем расскажу вам, что у хостера QS.biz сдаются в аренду VDS на KVM.

Kernel Based Virtual Machine (KVM)

Kernel Based Virtual Machine (KVM)


KVM - это технология полной виртуализации для Linux, поддерживающая аппаратную виртуализацию для процессоров с поддержкой Intel VT или AMD-V. Сам KVM состоит из из подгружаемого модуля ядра kvm.ko, предоставляющего базовый функционал, а также специфичного для процессора модуля kvm-intel.ko или kvm-amd.ko.

Установка

В Lenny он находится в пакете 'kvm', в Squeeze - 'qemu-kvm'. Объяснение смены названия пакета можно найти в файле README.Debian.gz для пакета qemu-kvm.

Использование virt-manager

Следующая команда установит kvm и virt-manager
aptitude install kvm virt-manager
По зависимостям будет установлен демон libvirt-bin. Его задачей является загрузка соответствующего для процессора модуля kvm-amd или kvm-intel во время запуска системы. Для управления виртуальными машинами из-под учётной записи, отличной от root, необходимо добавить пользователя в группу libvirt:
adduser <youruser> libvirt
Если Вы предпочитаете управлять через консоль и визуальная оболочка Вам не нужна, тогда установить kvm можно следующим образом:
aptitude install kvm libvirt-bin
Для управления виртуальными машинами можно использовать virsh(1) . За более подробной информацией следует обратиться к странице посвящённой libvirt.

Squeeze

Установить KVM можно так, при этом управление виртуальными машинами kvm аналогична управлению виртуальными машинами в QEMU.
aptitude install qemu-kvm

Использование virt-manager

Установка qemu-kvm следующей командой автоматически установит Менеджер Виртуальных Машин (Virtual Machine Manager) virt-manager.
aptitude install qemu-kvm virt-manager
Будет установлен демон libvirt-bin, который будет запускаться во время старта системы и подгружать специфичный для процессора модуль kvm-amd или kvm-intel. Для управления виртуальными машинами из-под непривилегированного пользователя, необходимо данного пользователя добавить в группу libvirt:
adduser <youruser> libvirt
В случае когда графический интерфейс не нужен, то установить kvm можно следующей командой:
aptitude install qemu-kvm libvirt-bin
Командой virsh(1) управлять виртуальными машинами.

Диагностика

No network bridge available:
virt-manager uses a virtual network for its guests, by default this is routed to 192.168.122.0/24 and you should see this by typing ip route as root.
If this route is not present in the kernel routing table then the guests will fail to connect and you will not be able to complete a guest creation.
Fixing this is simple, open up virt-manager and go to "Edit" -> "Host details" -> "Virtual networks" tab. From there you may create a virtual network of your own or attempt to fix the default one. Usually the problem exists where the default network is not started.

Смотри также

Ссылки

четверг, 1 августа 2013 г.

Добавление блочных устройств в виртуальную машину XEN или страшная ошибка Device vbd could not be connected. Failed to find an unused loop device

Доброго времени дня. Понадобилось мне добавить к одному из моих виртуализованных Windows  серверов несколько жёстких дисков, что делается несложной правкой в конфига.
Например добавляем 4 жёстких диска vhd{1,2,3,4}.img :

Установка паравиртуальной CentOS в Xen

Итак, у нас есть задача - установить Linux CentOS 5 как гостевую паравиртуальную виртуальную машину в гипервизор Xen (здесь мы будем рассматривать Xen 4.0.1 как последний на момент написания статьи).

Установка показана на примере Xen 4.0.1 с доменом-0 Linux Debian. Путь к виртуальным машинам оставлен по-умолчанию:
/etc/xen

вторник, 30 июля 2013 г.

Виртуализация Windows Server 2008R2 на Xen

Добрый день. Сегодня поговорим о виртуализации Windows Server 2008R2 на Xen.
Готовим disk image под Windows Server 2008R2 :
dd if=/dev/zero of=xenwin2008.img bs=1024k seek=40000 count=0
Внимание! Размер диска будет 39 с хвостиком Гб. Убедитесь заранее в наличии свободного места.

суббота, 20 апреля 2013 г.

Устновка proxmox Debian x64

Устанавливаем Proxmox VE на Debian Squeeze(amd64)


Вообще хочется отметить что Proxmox VE проще установить из специально подготовленного ISO-файла, но в некоторых случаях, например если у вас файл хранилище более 2Тб, это ограничение MBR. Если у вас диск на 3Тб либо RAID большего объёма, вам придётся использовать файловую таблицу GPT а соответственно ставить голую систему на которую придётся накатить Proxmox в ручную.

Почему именно Proxmox?
  1. Возможность использования как KVM так и OpenVZ.
  2. Web vnc-client.
  3. Возможность кластеризации.
  4. Неплохая система бэкапов виртуальных машин.

Установка



Для начала пропишем репозитарий.
cat >> /etc/apt/sources.list <<EOF
# PVE packages provided by proxmox.com
deb http://download.proxmox.com/debian squeeze pve
EOF

wget -O- "http://download.proxmox.com/debian/key.asc" | apt-key add -

apt-get update
Обновим систему.
apt-get update
apt-get autoremove
apt-get dist-upgrade -y
Теперь установим ядро Proxmox VE.
apt-get install \
 `apt-cache search pve-kernel | egrep -E \
 "^pve-kernel-|\-pve\ \-\ The\ Proxmox\ PVE\ Kernel\ Image" \
 | awk '{ print $1 }' | head -n1` -y
и если хотите так сказать опционально headers.
apt-get install \
 `apt-cache search pve-headers | egrep -E \
 "^pve-headers-|\-pve\ \-\ The\ Proxmox\ PVE\ Kernel\ Image" \
 | awk '{ print $1 }' | head -n1` -y
Теперь перезагрузимся, и удостоверимся что загрузилось нужное нам ядро.

uname -r
2.6.32-6-pve

Настало время установки самого Proxmox VE.
apt-get install \
 `apt-cache search proxmox-ve | egrep -E \
 "^proxmox-ve-|\-\ The\ Proxmox\ PVE\ Kernel\ Image" \
 | awk '{ print $1 }' | head -n1` -y
Подключим VirtualHost pve-redirect в apache2
a2ensite pve-redirect.conf
Enabling site pve-redirect.conf.
Run '/etc/init.d/apache2 reload' to activate new configuration!

И перезапустим apache2
/etc/init.d/apache2 restart
Restarting web server: apache2 ... waiting .
Установим еще несколько полезных программ и сервисов.
apt-get install ntp ssh lvm2 postfix ksm-control-daemon vzprocps -y
При установке Postfix задаст пару вопросов, я предпочёл ответить так:


По окончании операции можно подключиться к WEB интерфейсу, в моём случае http://192.168.0.109, он меня автоматом редиректит на https://192.168.0.109:8006/#v1:0:18:4:::::

Залогинимся используя root-овую учётную запись

 из новшеств, появилась консоль сервера
так же если ваше хранилище данных находится в месте отличном от /var/lib/vz советую указать его в ручную.
Теперь чтобы виртуальные машины видели локальную сеть, добавим наш сетевой интерфейс в моём случае eth0 в бридж(vmbr0), и перенесём на него ip адрес.
Эти изменения применяться после перезагрузки.