четверг, 28 сентября 2017 г.

USB Disk к виртуальной машине QEMU

Есть еще один бонус: к виртуальной машине можно подключить внешние устройства (например физический жесткий диск или usb накопитель). Заходим в virsh. Команда будет выглядеть так:
virsh # attach-disk comp1 /dev/sdc vdv --type disk
Где:
  • comp1 – имя виртуального компьютера, к которому подключаем диск.
  • /dev/sdc – путь к устройству на физическом компьютере.
  • Vdv — куда подключаем на виртуальной машине.
  • --type – тип диска.

Отключить диск:
virsh # deatach-disk comp1 vdv


Add CDROM:
attach-disk guest01 /root/disc1.iso hdc --driver file --type cdrom
--mode readonly
Change CDROM:
attach-disk guest01 /root/disc2.iso hdc --driver file --type cdrom
--mode readonly
Remove CDROM:
 attach-disk guest01 " " hdc --driver file --type cdrom
 --mode readonly

понедельник, 18 сентября 2017 г.

Установка VMware Tools на виртуальную машину Linux

В этой статье мы рассмотрим, как развернуть VMware Tools на виртуальных машинах Linux. Развертывание VMTools в гостевой операционной системе виртуальной машины повышает их производительность и управляемость. С VMTools некоторые из драйверов, включенных в ОС, заменяются на оптимизированный для виртуализации версии; одним из таких примеров является драйвер vmxnet3. Кроме того, VMTools обеспечивают фреймворки API, такие как VIX, позволяющие программное управление виртуальными машинами, а также раскрытие информации виртуальной машины, например, IP-адреса при использовании клиентов для vSphere.

VMware Tools поддерживается на 32-разрядных и 64-разрядных операционных системах, включая Microsoft,Apple, NetWare, Солярис, redhat и другие. Руководство по совместимости гостевой ОС предоставляет полный список поддерживаемых гостевых операционных систем вместе с поддерживаемыми функциями VMware Tools. Мы покажем, как развернуть VMware Tools на двух дистрибутивах Linux, а именно в CentOS и Debian.

Способы установки


В зависимости от дистрибутива Linux, существует несколько методов установки VMware Tools. Первый и наиболее часто используемый метод — установка с ISO. ISO-файл, содержащий двоичные файлы vmtools (установочные файлы, скрипты и т. д.) монтируется в виртуальный CD-ROM с гостевого меню виртуальной машины. После этого vmtools устанавливаются путем выполнения Perl-скрипта.

Другой популярный метод, который все больше набирает обороты, это Open-VM-Tools (OVT) от VMware. Это позволяет vmtools автоматически настраиваться во время установки ОС. В качестве альтернативы они могут быть установлены на более поздней с использованием ОС или из хранилища с помощью пакета инструментов управления, таких как YUM или APT.

На февраль 2016 дистрибутивы Linux, поддерживающие OVT, таковы;

  • Fedora 19 и более поздние версии;
  • Debian 7.x и более поздние версии;
  • openSUSE 11.x и более поздние версии;
  • Весрии Ubuntu (12.04 LTS, 13.10 и более поздние)
  • Red Hat Enterprise Linux 7.0 и более поздние версии;
  • CentOS 7.0 и более поздние версии;
  • Oracle Linux 7.0 и более поздние версии;
  • SUSE Linux Enterprise 12 и более поздние версии.

Метод ISO


Расскажем об обоих методах, начав с ISO. Чтобы проиллюстрировать процесс развертывания, сначала развернем vmtools на виртуальной машине Centos 6.x 32. Как видно на рисунке, изначально vmtools не развертывались на виртуальных машинах.

image

Рисунок 1 — CentOS ВМ без vmtools

Чтобы приступить к установке, щелкните правой кнопкой мыши на имени виртуальной машины, выберите «Guest» и нажмите «Install/Upgrade VMware Tools». Нажмите OK для подтверждения.

image

Рисунок 2 — Начало процесса установки vmtools

Что происходит: соответствующий образ ISO монтируется для дистрибутива Linux, на который вы хотите установить vmtools. Для этого убедитесь в том, что для виртуальной машины была выбрана правильная операционная система. Для этого проверьте тип операционной системы в свойствах ВМ (рис. 3). Вы должны выключить ВМ, если будете менять неправильный тип ОС.

image

Рисунок 3 — Проверка типа ОС

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

Создайте папку и смонтируйте ISO-образ.

image

image

Рисунок 4 — Создание ISO-образа

Затем распакуйте архив vmtools и скопируйте папки в Temp.


Рисунок 5 — Извлечение папок vmtools

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


Рисунок 6 — Установка отсутствующих зависимостей

Теперь перейдите в папку /tmp и запустите скрипт установки Perl. Следует включить параметры по умолчанию, если вы не собираетесь настроить процесс установки вручную.


Рисунок 7 — Установка vmtools с использованием скрипта Perl


Рисунок 8 — Завершение процесса выполнения скрипта Perl

Проверить, завершился ли процесс установки, можно просмотрев статус VMware Tools в клиенте vSphere (Рисунок 9).


Рисунок 9 — vmtools установлены правильно

Иногда, в зависимости от выбранного дистрибутива Linux и его конфигурации, вы можете встретить ошибку компилятора во время выполнения скрипта установки Perl.

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



» Видео показывает весь описанный здесь процесс: смотреть

Установка open-vm-tools из репозитория


В этом примере мы устанавливаем open-vm-tools на дистрибутив Debian 8 64-бит. Отличный пример есть на сайте VMware, поэтому мы не будем изобретать велосипед и покажем процесс установки в видео.

Смотреть

При установке OVT можно заметить, что статус vmtools показывается как «Running (Guest Managed)», как показано на рисунке 10. Для сторонних vmtools статус будет «Running (3rd-party/Independent)». Это нормально и ожидаемо от OSP (Operating System Specific Packages), использующих базовое ПО и механизмы установки на гостевых ОС для обновления vmtools.


Рисунок 10 — Статус vmtools

Как насчет других дистрибутивов Linux?


VMware поддерживает целый список дистрибутивов Linux, а также других ОС. Полный список можно найти на сайте VMware. Если конкретного дистрибутива нет в списке, убедится, поддерживаются ли vmtools можно только посетив сайт провайдера. Один из таких примеров — Arch Linux.

Установка VMware на Ubuntu 16.04

В наши дни компьютеры становятся настолько мощными, что на них могут свободно выполняться несколько операционных систем одновременно. Для этого можно использовать виртуальные машины. Запуск Linux в виртуальной машине может быть полезным если вы хотите попробовать какую-нибудь новую операционную систему или потренироваться перед установкой на реальный жесткий диск.
В виртуальных машинах можно запускать не только различные дистрибутивы Linux, но и разные версии Windows. VMware — это одна из самых популярных виртуальных машин для Linux и Windows. С помощью нее вы можете создавать и запускать несколько виртуальных машин одновременно.
Нужно сказать, что программа не распространяется с открытым исходным кодом. Но она имеет две версии — платную Pro для компаний и бесплатную, но облегченную для домашних пользователей — Player. В этой статье мы рассмотрим как выполняется установка VMware на Ubuntu 16.04.

Установка VMware на Ubuntu 16.04

Поскольку это проприетарная программа, ее нет в официальных репозиториях и даже в PPA. Но вы можете бесплатно скачать установщик VMware Player из официального сайта. На данный момент последняя версия — 12.5, вам нужно только выбрать операционную систему:
018-1-go-to-vmware-site-to-download-vmware-player-12-11
После того как вы скачаете установщик, нужно установить заголовочные файлы ядра. Для этого нажмите Ctrl+Alt+T и выполните следующую команду:
sudo apt install build-essential linux-headers-$(uname -r)
018-2-sudo-apt-get-install-build-essential-linux-headers-uname-r
После установки зависимостей может быть выполнена установка VMware на Ubuntu 16.04:
sudo gksudo bash ~/Downloads/VMware-Player-12.5.1-4542065.x86_64.bundle
Если утилита gksu не установлена, то ее нужно установить:
sudo apt install gksu
Вы также можете пойти другим путем. Сначала нужно добавить файл исполняемости:
sudo chmod +x ~/Downloads/VMware-Player-12.5.1-4542065.x86_64.bundle
Затем запустите установщик:
sudo ~/Downloads/VMware-Player-12.5.1-4542065.x86_64.bundle
После этого запустится графический установщик, где нужно будет, в основном, нажимать кнопку Далее. На первом шаге примите лицензионное соглашение:
018-3-vmware-player-graphical-installer
Затем будет еще несколько шагов, после которых пойдет установка программы:
018-4-vmware-player-installation-process
Когда установка VMware Ubuntu 16.04 будет завершена, вы можете запустить ее из главного меню системы или через терминал.
ubuntuvmwareplayerlauncher
Для работы программы вам нужно будет зарегистрироваться на сайте VMware и ввести свой Email и полученный ключ.
startfreeorlicensekey
Главное окно менеджера управления виртуальными машинами VMware будет выглядеть вот так:
vmwareplayer12gui
Кроме того, установить VMware на Ubuntu 16.04 можно в текстовом режиме:
sudo ./VMware-Player-12.5.1-4542065.x86_64.bundle --console

Удаление VMware Workstation

Если вы хотите удалить программу с вашего компьютера, то для этого достаточно использовать такую команду:
sudo vmware-installer -u vmware-player
Опять же откроется установщик, в котором нужно будет подтвердить удаление:
018-5-vmware-player-uninstallation-process
После этого программа будет полностью удалена из вашего компьютера, включая все ее файлы.

Выводы

В этой небольшой инструкции мы рассмотрели как выполняется установка VMware на Ubuntu. Это отличная виртуальная машина, которая в некоторых случаях даже лучше VirtualBox, решения с открытым исходным кодом. Если у вас остались вопросы, спрашивайте в комментариях!

воскресенье, 17 сентября 2017 г.

sSMTP Почта



Предположим, что мы имеем произвольный сервер под управлением Debian Lenny фиксированной конфигурации в полноценном окружении, обеспечивающем работу таких служб как разрешение доменных имён, доставки почтовой корреспонденции и тому подобного. Предположим, нам необходимо отправлять с нашего воображаемого сервера почтовую корреспонденцию. Что для этого требуется? Если сервер функционирует сам по себе, вне развитой инфраструктуры, то ничего другого не остается, как только подкорректировать конфигурацию MTA самого сервера (это может быть Sendmail, Postfix, Exim, Qmail и тому подобные приложения). А вот, в том случае, если у нас "под боком" имеется полнофункциональный почтовый сервер считаю целесообразным полностью переложить на него функции доставки электронной почты; наш воображаемый сервер будет обрабатывать свои функции, а почтовый доставлять то, для доставки чего он и предназначен - почту.

Воспользуемся утилитой sSMTP. Все, что она умеет, это "эмулировать" функционал Sendmail пересылки почты от локальных пользователей. Никаких прослушиваемых портов, никаких внешних сервисов, на которые могут "покусится" энтузиасты по раскрытию секретов, никаких конфигураций для "внешнего релея". Все, что может программа - это принять почтовый пакет от локального пользователя и отправить его по адресу путём использования внешнего почтового сервера в качестве "шлюза". Нам больше ничего и не требуется. Единственный недостаток - во время недоступности нашего внешнего почтового "шлюза" в силу отсутствия локальной очереди отправка корреспонденции будет невозможна; но я считаю, что недоступность почтового сервиса инфраструктуры - это проблема, на фоне которой другие временно теряют свою остроту.


# aptitude install ssmtp

При инсталляции sSMTP будет предложено удалить Exim - делаем это, для локального сервера он нам не нужен.

Делаем резервную копию конфигурационного файла sSMTP:

# cp /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf.dist

Приводим содержимое конфигурационного файла к следующему виду:

root=postmaster
# Адрес почтового "шлюза" с указанием порта
mailhub=mx.domain.name:465
# Имя хоста на котором запущен sSMTP
hostname=service.domain.name
# Реквизиты пользователя на почтовом "шлюзе" через которого осуществляется пересылка почты
AuthUser=service@domain.name
AuthPass=strong.password
# Метод аутенификации
AuthMethod=LOGIN
# Указание применять шифрование соединения
UseTLS=YES
# Разрешаем заменять отправителю значение поля "From"
FromLineOverride=YES

И это, практически, все. После монструозных конфигураций Sendmail или Exim такой простой подход кажется невероятным, но настраивать в пересылке почты от локального пользователя удалённому шлюзу действительно просто нечего.

Возможно, работающий ранее в системе MTA не будет корректно удалён или остановлен. Подстановка sSMTP вместо него довольно проста и подразумеваем гарантированный "откат" до исходного состояния. Необходимо остановить работающий MTA, заблокировать его авто-запуск и подставить вместо ссылки на запуск Sendmail (традиционно считающимся MTA "по умолчанию" в ~NIX) ссылку на запуск sSMTP:

# mv /usr/sbin/sendmail /usr/sbin/sendmail.original
# ln -s /usr/sbin/ssmtp /usr/sbin/sendmail

Теперь все обращения к Sendmail будут осуществляться к sSMTP незаметно для пользователя сервиса.

Протестировать корректность установки и настройки sSMTP можно элементарно с командной строки непосредственно на сервере:

# echo "test" | ssmtp admin@domain.name

Понятно, что следует ожидать письма с содержимым "test" на почтовый ящик "admin@domain.name".

вторник, 5 сентября 2017 г.

Синхронизация rsync

Преимущества rsync

  • rsync умеет копировать и синхронизировать файлы с локальной машины на удалённую – и наоборот;
  • поддерживает копирование ссылок, файлов устройств, данные о владельцах, группах и права доступа;
  • rsync работает быстрее, чем scp, потому что использует специальный протокол удалённого обновления, который позволяет передавать данные только об изменившихся файлах: первый раз копируется полное содержимое файла или директории, но при следующем копировании – rsync копирует только изменившиеся блоки данных;
  • rsync использует меньше пропускной способности канала передачи данных, т.к. использует компрессию и декомпрессию данных;

Базовый синтаксис:

1# rsync опции источник место_назначения

Наиболее полезные опции rsync:


-v – подробный режим;
-r – копировать данные рекурсивно (но без сохранения инфомрации о времени изменения файлов и правах доступа);
-a – режим архивирования, позволяет копировать данные рекурсивно с сохранением симлинков, правах доступа на файлы/каталоги и другую информацию);
-z – сжатие данные;
-h – вывод данных в human-readable формате.

Установка rsync

RedHat/CentOS:
1# yum -y install rsync
Debian/Ubuntu:
1# aptitude -y install rsync

Копирование и синхронизация данных локально

С помощью следующей команды будут скопированы или синхронизированы все файлы из одной директории в другую на одном хосте.
1# rsync -avh /root/firstdir /root/seconddir
2sending incremental file list
3firstdir/
4firstdir/file1
5
6sent 96 bytes  received 35 bytes  52.40 bytes/sec
7total size is 0  speedup is 0.00
1# ls -l /root/seconddir
2total 4
3drwxr-xr-x 2 root root 4096 Sep 19 14:41 fristdir

Копирование и синхронизация данных на или с удалённого сервера

Копирование локальных файлов на удалённый хост:
1# rsync -avzh /root/firstdir root@10.249.140.239:/root/
2root@10.249.140.239's password:
3sending incremental file list
4firstdir/
5firstdir/file1
6
7sent 96 bytes received 35 bytes 29.11 bytes/sec
8total size is 0 speedup is 0.00
На обоих хостах должен быть установлен rsync.
Копирование с удалённого хоста на локальный.
На удалённом хосте создадим файл:
1# touch firstdir/file2
Копируем:
1# rsync -avzh root@10.249.140.239:/root/firstdir /root/
2root@10.249.140.239's password:
3receiving incremental file list
4firstdir/
5firstdir/file2
6
7sent 34 bytes received 112 bytes 41.71 bytes/sec
8total size is 0 speedup is 0.00

Использование rsync по SSH

Что бы указать rsync, какой протокол использовать – используйте опцию -e:
01# rsync -avzhv -e ssh /root/firstdir root@10.249.140.239:/root/
02opening connection using: ssh -l root 10.249.140.239 rsync --server -vvlogDtprze.iLs . /root/
03root@10.249.140.239's password:
04sending incremental file list
05delta-transmission enabled
06firstdir/
07firstdir/file1
08firstdir/file2
09total: matches=0  hash_hits=0  false_alarms=0 data=0
10
11sent 147 bytes  received 54 bytes  44.67 bytes/sec
12total size is 0  speedup is 0.00

Отображение строки прогресса передачи данных

С помощью опции --progress можно вывести больше инфомармации о том, как происходит передача (скорость, количество переданных и оставшихся байт, время):
01# rsync -avzh -e ssh --progress /root/firstdir root@10.249.140.239:/root/
02root@10.249.140.239's password:
03sending incremental file list
04firstdir/
05firstdir/file1
06           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=1/3)
07firstdir/file2
08           0 100%    0.00kB/s    0:00:00 (xfer#2, to-check=0/3)
09
10sent 147 bytes  received 54 bytes  44.67 bytes/sec
11total size is 0  speedup is 0.00

Опции –include и –exclude

С помощь -–include и -–exclude можно указать, какие файлы и/или директории включить в передачу, а какие – исключить.
Например – передадим только file1:
1# rsync -avzhe ssh --include 'file1' --exclude 'file2' /root/firstdir root@10.249.140.239:/root/
2root@10.249.140.239's password:
3sending incremental file list
4firstdir/
5firstdir/file1
6
7sent 100 bytes  received 35 bytes  38.57 bytes/sec
8total size is 0  speedup is 0.00

Опция –delete

--delete используется в том случае, если в каталоге назначения есть файлы и/или диреткории, которых нет в источнике, и их надо удалить.
Например, в каталоге назначения создадим файл:
1# touch /root/firstdir/file3
Тогда как в каталоге-источнике у нас будут:
1# ls -l /root/firstdir/
2total 0
3-rw-r--r--. 1 root root 0 Sep 22 12:47 file1
4-rw-r--r--. 1 root root 0 Sep 22 12:48 file2
Теперь выполняем синхронизацию с опцией --delete:
1# rsync -avzhe ssh --delete /root/firstdir root@10.249.140.239:/root/
2root@10.249.140.239's password:
3sending incremental file list
4firstdir/
5deleting firstdir/file3
6firstdir/file2
7
8sent 115 bytes  received 35 bytes  42.86 bytes/sec
9total size is 0  speedup is 0.00
deleting firstdir/file3 – файл был удалён:
1# ls -l /root/firstdir/
2total 0
3-rw-r--r-- 1 root root 0 Sep 22 12:47 file1
4-rw-r--r-- 1 root root 0 Sep 22 12:48 file2

Максимальный размер файлов для передачи

rsync может принимать опцию --max-size, с помощью которой можно указать максимальный размер файла, который будет передан.
Например, создадим файл размером 100МБ:
1# dd of=bigfilefile bs=1 count=0 seek=100M
20+0 records in
30+0 records out
40 bytes (0 B) copied, 9.9066e-05 s, 0.0 kB/s
1# ls -hl
2total 0
3-rw-r--r--. 1 root root 100M Sep 22 13:18 bigfilefile
4-rw-r--r--. 1 root root    0 Sep 22 12:47 file1
5-rw-r--r--. 1 root root    0 Sep 22 12:48 file2
И выполним передачу, ограничив размер файла 50МБ:
1# rsync -avzhe ssh --max-size='50M' /root/firstdir root@10.249.140.239:/root/
2root@10.249.140.239's password:
3sending incremental file list
4firstdir/
5firstdir/file1
6firstdir/file2
7
8sent 173 bytes  received 54 bytes  64.86 bytes/sec
9total size is 104.86M  speedup is 461927.75

Удаление исходных данных после передачи

С помощью опции --remove-source-files можно удалить данные после выполнения копирования или синхронизации.
К примеру – у нас есть директория:
1# ls -l /root/firstdir/
2total 0
3-rw-r--r--. 1 root root 0 Sep 22 12:47 file1
4-rw-r--r--. 1 root root 0 Sep 22 12:48 file2
Выполняем копирование:
1# rsync -avzhe ssh --remove-source-files /root/firstdir root@10.249.140.239:/root/
2root@10.249.140.239's password:
3sending incremental file list
4firstdir/
5firstdir/file1
6firstdir/file2
7
8sent 147 bytes  received 54 bytes  44.67 bytes/sec
9total size is 0  speedup is 0.00
И проверяем исходный каталог:
1# ls -l /root/firstdir/
2total 0

Опция Dry Run – “холостой запуск”

С помощью опции --dry-run можно выполнить только проверку того, как будет выполнена задача, но без реальной передачи данных.
Это может полезным, например, для проверки различий между локальной и удалённой копией данных.
К примеру:
1# rsync -avzhe ssh --dry-run /root/firstdir root@10.249.140.239:/root/
2root@10.249.140.239's password:
3sending incremental file list
4firstdir/
5firstdir/file1
6firstdir/file2
7
8sent 81 bytes  received 22 bytes  29.43 bytes/sec
9total size is 0  speedup is 0.00 (DRY RUN)
И проверяем удалённый каталог:
1# ls -l /root/firstdir/
2total 0

Ограничение скорости I/O

Что бы ограничить скороксть передачи – можно использовать опцию --bwlimit, которая задаёт лимит скорости чтения с диска (и, соотвественно, передачи) в килобайтах/секунду.
Например, создадим файл:
1# dd of=bigfilefile bs=1 count=0 seek=10M
20+0 records in
30+0 records out
40 bytes (0 B) copied, 5.8089e-05 s, 0.0 kB/s
И запустим передачу:
1# rsync --bwlimit=100 --progress bigfilefile root@10.249.140.239:/root/
2root@10.249.140.239's password:
3bigfilefile
4    10485760 100%   99.33kB/s    0:01:42 (xfer#1, to-check=0/1)
5
6sent 10487112 bytes  received 31 bytes  98470.83 bytes/sec
7total size is 10485760  speedup is 1.00

Полное копирование данных

По-умолчанию, rsync копирует только изменившиеся блоки данных.
Что бы выполнить полное копирование – используйте опцию -W:
01# rsync --progress bigfilefile root@10.249.140.239:/root/
02root@10.249.140.239's password:
03bigfilefile
04    10485760 100%  138.85MB/s    0:00:00 (xfer#1, to-check=0/1)
05
06sent 13052 bytes  received 19501 bytes  7234.00 bytes/sec
07total size is 10485760  speedup is 322.11
0814:10:02 [root@zeus ~/firstdir] # rsync -W --progress bigfilefile root@10.249.140.239:/root/
09root@10.249.140.239's password:
10bigfilefile
11    10485760 100%   28.48MB/s    0:00:00 (xfer#1, to-check=0/1)
12
13sent 10487112 bytes  received 31 bytes  2330476.22 bytes/sec
14total size is 10485760  speedup is 1.00
Обратите внимание на разницу в поле sent между вызовами с и без опции -W.