Вышел Proxmox VE 3.0

upd 28.05.13
Полностью зарелизили версию 3.0
Теперь можно создавать шаблоны для будущего удобного развёртывания и клонировать свои виртуальные машины.
Выдержка из proxmox wiki:

  • Templates — Templates are pre-configured operating system environments that deploy in a couple of clicks
  • Linked Clone — A linked clone VM requires less disk space but cannot run without access to the base VM Template
  • Full Clone — A full clone VM is a complete copy and is fully independant to the original VM or VM Template, but requires the same disk space as the original.

    Перевод:

  • Шаблоны — это заранее настроенные окружения ОС, которые разворачиваются в пару кликов
  • Связанный Клон — такая виртуальная машина требует меньше дискового пространства, но не работает без доступа к оригинальному шаблону ВМ
  • Полноценный Клон — полная независимая копия оригинальной ВМ или шаблона, однако требующая столько же места, сколько и оригинал

Release Candidate 1 вышел 8 мая 2013
Перевод списка изменений:

  • основан на Debian 7.0 (Wheezy)
  • добавлена функция клонирования виртуальной машины
  • новый сервер событийно-ориентированного API (pveproxy)
    • полностью заменён apache2
    • эффективная поддержка HTTP keep-alive
  • поддержка bootlogd (лог загрузки можно смотреть через интерфейс)
  • qemu-kvm обновлён до 1.4.1
  • ядро обновлено до vzkernel-2.6.32-042stab076.7.src.rpm
    • стандартный планировщик ввода-вывода (IO Scheduler) изменён на ‘deadline
    • обновлены сетевые драйвера Intel для e1000e, igb и ixgbe
  • множественные баг-фиксы (подробнее на bugtracker и GIT)

Release Candidate 2 вышел 16 мая 2013 
Перевод списка изменений:

  • pve-kernel-2.6.32 2.6.32-100
  • обвнолены пакеты ceph до 0.61.2
  • libpve-common-perl 3.0-4:
    • исправлен баг #381: use persistent reservation file for ports
  • libpve-storage-perl 3.0-6
    • rbd : клонирование тома в один пул с оригиналом
    • список storage API дополнен полезными параметрами клонирования
    • исправлен баг сканирования сессии iscsi
  • pve-cluster 3.0-2
    • исправлен баг 383: перезапуск pveproxy вместо apache2
  • pve-manager 3.0-17
    • StorageSelector: позволяет выбрать новое хранилище для использования клонирования
    • исправлен баг #385: некорректно обрабатывался Accept-Encoding
    • исправлен баг #374: некорректно удалялся уничтоженный контейнер из пула
  • pve-qemu-kvm 1.4-12
    • создание vma: хранится только basename имя  (без пути и суффиксов) файла конфига
  • qemu-server 3.0-12
    • клонирование диска: сохраняются параметры оригинального тома
    • клонирование: добавлена проверка возможности клонирования в указанное хранилище
    • исправлен баг #381: PVE::Tools::next_migrate_port()
    • восстановление: опция «не восстанавливать шаблон»
  • vncterm 1.1-3
    • снова включён javascript-events.patch (необходим для работы миграции)

Удобное крепление крышки объектива на шнурке/верёвке для зеркальной камеры

Довольно скоро после приобретения зеркалки Nikon D5000 с китовым объективом меня посетила мысль, что во время съёмки снимать у оного объектива крышку и искать для неё место в кармане/на плоскости/где-то ещё — неудобно и гораздо логичнее было бы оставлять висеть её на верёвке. Тогда, вооружившись зажигалкой и иголкой, я проплавил в пластиковой крышке отверстие, куда продел тонкую верёвку, другой конец которой был закреплён на металлическом ушке для обычного ремня.
Однако после покупки второго объектива от этой конструкции пришлось избавиться, т.к. из-за того, что верёвка была жёстко привязана к крышке и самому фотоаппарату, а крышки от разных объективов отличались по размеру, каждый раз при смене объектива отвязывать её было бы крайне неудобно.

Итак, решение проблемы найдено в завалявшихся шнурках для бейджиков/флешек с пластмассовой защёлкой.

1) Зажим «папа» со шнурком крепится на фотоаппарате;

2) Зажимы «мама» крепятся на крышках объективов, в которых предварительно проплавляется/просверливается аккуратное маленькое отверстие;


 

Меняем сетевое имя (hostname) устройства на Android (root required)

Как ясно из заголовка, нам потребуются рутованое устройство, а также эмулятор терминала на Android.

1) Запускаем эмулятор терминала, в которым вводим команды:
2) su
3) mount -o remount,rw /system
4) vi /system/build.prop
5) Добавляем в конце без кавычек новую строку «net.hostname=XXX», где XXX — желаемое имя устройства
6) Перезагружаемся.

Теперь определить своё устройство по wifi гораздо легче.

Выключение гостевых виртуальных машин Windows 7/2008 в KVM

KVM использует ACPI для подачи сигнала завершения в гостевую виртуальную машину, но по-умолчанию в Windows 7/2008 стоит запрет на завершение работы, если нет залогиневшегося пользователя.
1) Убеждаемся, что ACPI включён для нашей виртуальной машины;
2) Запускаем в командной строке gpedit.msc, ищем и включаем следующий параметр:

Computer ConfigurationWindows SettingsSecurity SettingsLocal PoliciesSecurity OptionsShutdown: Allow system to be shut down without having to log on

Конфигурация компьютераКонфигурация WindowsПараметры безопасностиЛокальные политикиПараметры безопасности
Завершение работы: разрешить завершение работы системы без выполнения входа в систему 
3) Если хотим завершать работу через ACPI даже при залогинившимся пользователе, правим реестр:
Создаём файл с разрешением .reg следующего содержания :

и запускаем его.
4) Перезагружаемся и получаем профит

Kaspersky Security Center «MMC не удается инициализировать оснастку»

В Kaspersky Security Center 9 при выборе пункта «Управляемые компьютеры» вылезает ошибка «MMC не удается инициализировать оснастку». Лечится так:
 

1) Останавливаем службу «Сервер администрирования Kaspersky Security Center» 
2) Удаляем файл оснастки CS Admin Kit.msc в следующих директориях:
  • С:Users<user_account>AppDataRoamingMicrosoftMMC in Windows Vista, 7, 2008. 

  • C:Documents and Settings<user_account>Application DataMicrosoftMMC in Windows XP.

3) Снова запускаем службу.

Все данные о присоединённых клиентах, группах, задачах и политиках сохранятся.

Proxmox. Проброс usb-устройств в гостевую виртуальную машину. На примере ключей 1С HASP

обновлено 16.05.13

Немного теории о usb:
«Физическое соединение устройств осуществляется по топологии многоярусной звезды. Центром каждой звезды является хаб, каждый кабельный сегмент соединяет две точки — хаб с другим хабом или с функцией. В системе имеется один (и только один) хост-контроллер, расположенный в вершине пирамиды устройств и хабов. Хост-контроллер интегрируется с корневым хабом (Root Hub), обеспечивающим одну или несколько точек подключения — портов.» — источник

Наша задача выяснить, на какой шине (bus) и к какому порту (port) подключены наши usb-устройства. В качестве примера приведён проброс двух ключей HASP 1С Предприятия 8 (серверный и клиентский)

1. Вставляем usb-устройства;

2. Далее есть два способа выяснения связки шина-порт:
а) В консоли proxmox сервера выполняем «lsusb». В результате выясним имя устройств и найдём среди них свои:

Искомое: 2 ключа Aladdin Knowledge Systems HASP v0.06 на шине 6

Теперь выясняем, на каких портах «висят» ключи. Выполняем «lsusb -t», которая нам выдаст древовидную структуру:

Как видим, устройства (Device) 2 и 3 на шине 6 находятся на портах 1 и 2. Соответственно, пробрасывать будем 6-1 и 6-2.

б) Короткий способ.
Выполняем «qm monitor НОМЕР_ВИРТУАЛЬНОЙ_МАШИНЫ»,

Теперь выполняем команду «info usbhost»

Вот они наши HASP-ключи, опять же на шине 6 и портах 1 и 2.
Выходим командной quit либо сочетанием Ctrl+C

3. Редактируем на сервере файл /etc(/pve)/qemu-server/NNN.conf (где NNN-номер виртуальной машины) и добавляем следующие строки:
Для версии proxmox < 2.0

Для версии proxmox > 2.0 

4. Перезагружаем виртуальную машину.

5. Проверить, подцепились ли устройства, можно снова зайдя в qm monitor (как в п. 2б) и выполнив команду «info usb»

P.S. Также usb-устройство можно подключить, добавив в конец NNN.conf такое:

,где 0529:0001 — это device ID, взятый из п. 2а
Плюсы: при перемещении usb-устройства в другой порт не надо ничего перенастраивать;
Минусы: этот способ не годится, если у вас несколько устройств с одинаковыми device ID, как в указанном выше примере

Добавляем поле в форму обратной связи Joomla 1.5

#Создаём дополнительное поле «Введите Ваш номер телефона» при отправке сообщения через обратную связь Joomla
#Изменяемые файлы:
#/components/contact.html.php
#/language/russian.php
#/language/english.php
#/components/contact.php

1) /components/contact.html.php
    Ищем
                    <label for=»contact_name»>
                        <?php echo(_NAME_PROMPT);?>
                    </label>
                    <br />
                    <input type=»text» name=»name» id=»contact_name» size=»30″ class=»inputbox» value=»» />
                    <br />
    После добавляем
                        <label for=»contact_phone»>
                        <?php echo(_PHONE_PROMPT);?>
                    </label>
                    <br />
                    <input type=»text» name=»phone» id=»contact_phone» size=»30″ class=»inputbox» value=»» />
                    <br />
#Тем самым мы добавили поле ввода номера телефона в форму.
#Теперь, чтобы вместо «_PHONE_PROMPT» отобразилось то, что ты хочешь, типа «Введите Ваш номер телефона», лезем дальше

2) /language/russian.php
    Ищем
                    DEFINE(‘_NAME_PROMPT’,’Введите Ваше имя:’);
    После добавляем              
                    DEFINE(‘_PHONE_PROMPT’,’Введите Ваш номер телефона:’);
                  
3) /language/english.php                  
    Ищем              
                    DEFINE(‘_NAME_PROMPT’,’ Enter your name:’);
    После добавляем                  
                    DEFINE(‘_PHONE_PROMPT’,’ Enter your phone number:’);
                  
4)    /components/contact.php      
    Ищем
                    $text         = strval( mosGetParam( $_POST, ‘text’,             » ) );
                    $name         = strval( mosGetParam( $_POST, ‘name’,             » ) );
                    $subject     = strval( mosGetParam( $_POST, ‘subject’,         $default ) );
    После добавляем строчку
                    $phone         = strval( mosGetParam( $_POST, ‘phone’,         » ) );
                  
#За ней будет ещё строчка с email_copy. Этим мы добавили «перехват» значения переменной $phone при нажатии клавиши «Отправить» в форме сообщения.

    Ищем
                    $text     = $prefix .»n». $name. ‘ <‘. $email .’>’ .»nn». stripslashes( $text );
    Заменяем на
                    $text     = $prefix .»n». $name. ‘ (‘. $phone .’)’ .’ <‘. $email .’>’ .»nn». stripslashes( $text );  
#Таким образом добавили телефон в скобках справа от имени в приходящем сообщении.


Аналогично можно добавить любую другую информацию