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

Восстановление аппаратного RAID с помощью утилиты MegaCLI


Процесс замены вышедшего из строя физического диска на сервере с аппаратным RAID контроллером

Прежде всего определим тип RAID-контроллера.
В данном примере будет рассмотрен вариант с LSI, для других типов будут отдельные статьи, когда под рукой окажется свободный котроллер другой модели.
# lspci | grep -i RAID
00:1f.2 RAID bus controller: Intel Corporation C600/X79 series chipset SATA RAID Controller (rev 06)
07:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] (rev 05)
После определения типа контроллера приступим к установке утилиты для работы с ним.
(ПО обновляется, поэтому актуальную версию проверяйте на официальном сайте LSI.)
# wget http://it.bmc.uu.se/andlov/docs/linux/raid/files/megacli-8.04.07-2.x86_64.rpm
# rpm -ihv megacli-8.04.07-2.x86_64.rpm

Проверяем состояние RAID

# megacli -LDInfo -Lall -aALL | grep State
State : Degraded
Выводим информацию о состоянии дисков:
# megacli -PDList -aAll | egrep "Enclosure Device ID:|Slot Number:|Inquiry Data:|Error Count:|state"
Enclosure Device ID: 25
Slot Number: 12
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: IBM-ESXSST3300657SS BA586SJ3SJKY0825BA58
Enclosure Device ID: 25
Slot Number: 13
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: IBM-ESXSST3300657SS BA586SJ3SJSY0825BA58
Enclosure Device ID: 25
Slot Number: 14
Media Error Count: 0
Other Error Count: 1233
Firmware state: Failed
Inquiry Data: IBM-ESXSST3300657SS BA586SJ3SSL60825BA58
Enclosure Device ID: 25
Slot Number: 15
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: SEAGATE ST3300657SS 00086SJ47FF1
Enclosure Device ID: 25
Slot Number: 16
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: SEAGATE ST3300657SS 00086SJ47GS5
Enclosure Device ID: 25
Slot Number: 17
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: SEAGATE ST3300657SS 00086SJ684J5
Enclosure Device ID: 25
Slot Number: 18
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: SEAGATE ST3300657SS 00086SJ60R8S
Enclosure Device ID: 25
Slot Number: 19
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: SEAGATE ST3300657SS 00086SJ47JG1
Enclosure Device ID: 25
Slot Number: 20
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: SEAGATE ST3300657SS 00086SJ47FKV
Enclosure Device ID: 25
Slot Number: 21
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: SEAGATE ST3300657SS 00086SJ67CCL
Enclosure Device ID: 25
Slot Number: 22
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: SEAGATE ST3300657SS 00086SJ67CLB
Enclosure Device ID: 25
Slot Number: 23
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: IBM-ESXSST3300657SS BA586SJ3R65E0825BA58
Как видно из лога, то проблема с одним из дисков:
Enclosure Device ID: 25
Slot Number: 14
Media Error Count: 0
Other Error Count: 1233
Firmware state: Failed
Inquiry Data: IBM-ESXSST3300657SS BA586SJ3SSL60825BA58
Также можно вывести полную информацию по дискам подключенным к контроллеру:
# megacli -PDList -aALL
...
Enclosure Device ID: 25
Slot Number: 14
Drive's postion: DiskGroup: 0, Span: 1, Arm: 0
Enclosure position: 0
Device Id: 29
WWN: 5000C50043E6C068
Sequence Number: 3
Media Error Count: 0
Other Error Count: 1233
Predictive Failure Count: 136
Last Predictive Failure Event Seq Number: 69159
PD Type: SAS
Raw Size: 279.396 GB [0x22ecb25c Sectors]
Non Coerced Size: 278.896 GB [0x22dcb25c Sectors]
Coerced Size: 278.464 GB [0x22cee000 Sectors]
Firmware state: Failed
Device Firmware Level: BA58
Shield Counter: 0
Successful diagnostics completion on : N/A
SAS Address(0): 0x5000c50043e6c069
SAS Address(1): 0x0
Connected Port Number: 0(path0)
Inquiry Data: IBM-ESXSST3300657SS BA586SJ3SSL60825BA58
IBM FRU/CRU: 44W2235
FDE Enable: Disable
Secured: Unsecured
Locked: Unlocked
Needs EKM Attention: No
Foreign State: None
Device Speed: 6.0Gb/s
Link Speed: 6.0Gb/s
Media Type: Hard Disk Device
Drive Temperature :28C (82.40 F)
PI Eligibility: No
Drive is formatted for PI information: No
PI: No PI
Drive's write cache : Disabled
Port-0 :
Port status: Active
Port's Linkspeed: 6.0Gb/s
Port-1 :
Port status: Active
Port's Linkspeed: Unknown
Drive has flagged a S.M.A.R.T alert : Yes
Enclosure Device ID - идентификатор блока;
Slot Number - Номер слота физического диска.

Заменяем проблемный диск

Если диск в состоянии Online (в нашем случае Failed), то переводим в состояние Offline.
# megacli -PDOffline -PhysDrv [25:14] -a0
Adapter: 0: EnclId-25 SlotId-14 state changed to OffLine.
Отметим диск, как извлеченный
# megacli -PDMarkMissing -PhysDrv [25:14] -a0
EnclId-25 SlotId-14 is marked Missing.
Получаем информацию об извлеченном(-ых) диске(-ах):
# megacli -Pdgetmissing -a0
Adapter 0 - Missing Physical drives
No. Array Row Size Expected
0 1 0 285148 MB
Подсвечиваем диск, который требуется заменить:
# megacli -PdLocate -start -PhysDrv [25:14] -a0
Adapter: 0: Device at EnclId-25 SlotId-14 -- PD Locate Start Command was successfully sent to Firmware
Если возникла проблема с подсветкой, то используем лампочку активности в качестве индикации:
# megacli -AdpSetProp \{UseDiskActivityforLocate -1\} -aALL
Adapter 0: Set Use Disk Activity For Locate to Enabled success.

Удаляем диск из RAID

# megacli -PdPrpRmv -PhysDrv [25:14] -a0
Prepare for removal Success
После этого выполняем процедуру физической замены диска(-ов).
В случае с новым диском, если он содержит метаданные от старого RAID массива, эти данные необходимо затереть.
Проверяем их наличие:
megacli -CfgForeign -Scan -a0
Если таковые имеются, то удаляем следующей их командой:
(к счастью у меня такого добра не обнаружилось)
megacli -CfgForeign -Сlear -a0
Выполняем замену (нам потребуются значения параметров Array и Row из предыдущего пункта)
# megacli -PdReplaceMissing -PhysDrv [25:14] -Array1 -row0 -a0
Adapter: 0: Physical drive in array 1 at row 0 is not missing.
И запускаем Rebuild нового диска:
# megacli -PDRbld -Start -PhysDrv [25:14] -a0
Cannot Rebuild Physical Drive at Enclosure - 25, Slot - 14.
FW error description:
The specified device is in a state that doesn't support the requested command.
Если получаем эту ошибку при выполнении команды, то Rebuild запустился автоматически.
Проверяем статус Rebuild и оставшееся время до окончания:
# megacli -PDRbld -ShowProg -PhysDrv [25:14] -a0
Rebuild Progress on Device at Enclosure 25, Slot 14 Completed 38% in 10 Minutes.
Ну и не забываем отключить индикацию диска:
# megacli -PdLocate -stop -PhysDrv [25:14] -a0
Adapter: 0: Device at EnclId-25 SlotId-14 -- PD Locate Stop Command was successfully sent to Firmware

Бонусы

Отключение звукового оповещения до перезагрузки
megacli -AdpSetProp AlarmSilence -a0
Включение и выключение звукового оповещения навсегда:
megacli -AdpSetProp AlarmEnbl -a0
megacli -AdpSetProp AlarmDsbl -a0
Проверка приоритета ребилда:
# megacli -AdpGetProp RebuildRate -a0
Adapter 0: Rebuild Rate = 30%
Изменяем приоритет ребилда в % соотношении:
# megacli -AdpSetProp RebuildRate 80 -a0
Adapter 0: Set rebuild rate to 80% success.
 
 
+---+---+----+----+ | 8 | 9 | 10 | 11 | +---+---+----+----+ | 4 | 5 | 6 | 7 | +---+---+----+----+ | 0 | 1 | 2 | 3 | +---+---+----+----+ Отобразить состояние дисков: megacli -PDList -aAll | egrep "Enclosure Device ID:|Slot Number:|Inquiry Data:|Error Count:|state" Отключить пищалку на СХД megacli -AdpSetProp AlarmDsbl -aALL Включить пищалку на СХД megacli -AdpSetProp AlarmEnbl -aALL Информация по виртуальному диску megacli -LDInfo -Lall -aALL  
 
__________________________________________________________________________________

Замена диска в MegaCli

Данная утилита от LSI так же позволяет оперировать рейд-контроллерами от Dell. Но замена дисков через такую утилиту — целый hardcore, только для настоящих Tru-админов )).
Тестовый стенд: контроллер PERC 6/i, RAID-1, Linux MegaCli64, выпал 1 диск.
Смотрим состояние RAID’a:
# /usr/local/bin/MegaCli -LDInfo -Lall -aALL | grep State State : Degraded
Какой диск стал причиной этому:
# MegaCli -PDList -aAll | egrep "Enclosure Device ID:|Slot Number:|Inquiry Data:|Error Count:|state" Enclosure Device ID: 32 Slot Number: 0 Media Error Count: 0 Other Error Count: 0 Firmware state: Online, Spun Up Inquiry Data: FUJITSU MBC2073RC D506BV03P9605GU7 Enclosure Device ID: 32 Slot Number: 1 Media Error Count: 16655 Other Error Count: 15 Firmware state: Failed Inquiry Data: SEAGATE ST973452SS 00076TA0EDKH Enclosure Device ID: 32 Slot Number: 2 Media Error Count: 0 Other Error Count: 0 Firmware state: Online, Spun Up Inquiry Data: SEAGATE ST973451SS SM043PD1WB4Z Enclosure Device ID: 32 Slot Number: 3 Media Error Count: 0 Other Error Count: 0 Firmware state: Online, Spun Up Inquiry Data: SEAGATE ST973451SS SM043PD1WBN7 Enclosure Device ID: 32 Slot Number: 4 Media Error Count: 0 Other Error Count: 0 Firmware state: Online, Spun Up Inquiry Data: SEAGATE ST973451SS SM043PD1T7EG Enclosure Device ID: 32 Slot Number: 5 Media Error Count: 0 Other Error Count: 0 Firmware state: Online, Spun Up Inquiry Data: FUJITSU MBC2073RC D506BV03P9605GF0
Как видим, это диск [32:1]. Именно так к нему в дальнейшем нужно обращаться. Что бы заменить диск, нужно его перевести в offline, пометить как «пропавший» и удалить:
общий вид команд:
# MegaCli -PDOffline -PhysDrv [E:S] -aN # MegaCli -PDMarkMissing -PhysDrv [E:S] -aN # MegaCli -PDPrpRmv -PhysDrv [E:S] -aN
в нашем случае это будет так:
# MegaCli -PDOffline -PhysDrv [32:1] -a0 # MegaCli -PDMarkMissing -PhysDrv [32:1] -a0 # MegaCli -PDPrpRmv -PhysDrv [32:1] -a0
Да! Но и это ещё не всё. Потом нужно задать команду замены диска (эту команду выполнить уже после замены диска).:
общий вид:
# MegaCli -PdReplaceMissing -PhysDrv [E:S] -ArrayN -rowN -aN
в нашем случае это будет так:
# MegaCli -PdReplaceMissing -PhysDrv [32:1] -Array0 -row1 -a0
Если нужно подсветить диск (что бы было видно, какой нужно менять) делаем так (при этом диск будет непрерывно гореть зелёным светом):
# MegaCli -PdLocate -start -PhysDrv [32:1] -a0
Что бы прекратить:
# MegaCli -PdLocate -stop -PhysDrv [32:1] -a0
Но в моём случае мне повезло, так как в опциях рейда стояло autorebuild:
# MegaCli -adpallinfo -a0 | grep 'Auto Rebuild' Auto Rebuild : Enabled
и поэтому, после замены диска не пришлось выполнять команду замены диска — он сам начал процесс перестройки рейда:
# MegaCli -PDRbld -ShowProg -PhysDrv [32:1] -a0 Rebuild Progress on Device at Enclosure 32, Slot 1 Completed 1% in 0 Minutes.
При этом Firmware state тоже в состоянии Rebuild:
# MegaCli -PDInfo -PhysDrv [32:1] -a0 | grep 'Firmware state' Firmware state: Rebuilding
Как заменить диск в массиве, если rebuild не начался автоматически (пример взят из http://wiki.hetzner.de)?
Статус нового диска должен быть «Unconfigured (good)«. Это можно проверить с помощью PDList. Если статус диска «Unconfigured (bad)«, то его надо сначала сделать пригодным для использования как показано ниже:
root@rescue ~ # megacli -PDList -a0 | grep Firmware Firmware state: Online, Spun Up Device Firmware Level: CC45 Firmware state: Online, Spun Up Device Firmware Level: CC45 Firmware state: Unconfigured(bad), Spun Up Device Firmware Level: CC45 Firmware state: Online, Spun Up Device Firmware Level: CC45
root@rescue ~ # megacli -PDMakeGood -PhysDrv [245:3] -a0
Ещё один момент. Иногда, после того, как вы перевели диск из bad в good, он может оказаться в «не родной» конфигурации:
Foreign State: Foreign
и при попытке что-то с ним сделать получаем ошибку:
# MegaCli -CfgLdAdd -r0[80:17] -a0 The specified physical disk does not have the appropriate attributes to complete the requested command. Exit Code: 0x26 Обнаружить сколько дисков в такой конфигурации можно так:
# MegaCli -CfgForeign -Scan -a0 There are 1 foreign configuration(s) on controller 0. Exit Code: 0x00 Очистить «не родную» конфигурацию:
# MegaCli -CfgForeign -Clear -a0 Foreign configuration 0 is cleared on controller 0. Exit Code: 0x00 Если диск «good«, то им можно заменить отсутствующий диск. Для этого надо указать массив и позицию, где надо произвести замену. Эти значения можно получить, например, из megacli -CfgDsply -a0. Если диск отсутствует в массиве, запись «Physical Disk:» будет показана, но без дополнительно информации. В следующем примере четвёртый диск первого массива (Array0) заменяется диком из Enclosure 245 Slot 3PhysDrv[245:3]«):
root@rescue ~ # megacli -PdReplaceMissing -PhysDrv[245:3] -array0 -row4 -a0 Adapter: 0: Missing PD at Array 0, Row 4 is replaced. Exit Code: 0x00 root@rescue ~ # megacli -PDRbld -Start -PhysDrv[245:3] -a0 Started rebuild progress on device(Encl-245 Slot-3) Exit Code: 0x00 root@rescue ~ # megacli -PDRbld -ShowProg -PhysDrv [245:3] -aAll Rebuild Progress on Device at Enclosure 245, Slot 3 Completed 1% in 0 Minutes.
А что если, у вас массив построен на JBOD дисках и нужно заменить диск в zpool’e? Тогда делаем так:
— после физической замены диска он становится:
Firmware state: Unconfigured(good), Spun Up Foreign State: None Если не выходит его просто сделать JBOD’ом:
# MegaCli -PDMakeJBOD -PhysDrv[68:16] -a0
тогда делаем его просто RAID0:
# MegaCli -CfgLdAdd -r0[68:16] -a0

CopyBack state.
Это состояние диска, при котором информация переносится с hotspare диска на новый:
Enclosure Device ID: N/A Slot Number: 0 ... Firmware state: Copyback ...
Посмотреть, сколько осталось:
# MegaCli -PDCpyBk -ShowProg -PhysDrv[:0] -a0 Copyback Progress on Device at Enclosure N/A, Slot 0 Completed 13% in 60 Minutes. Exit Code: 0x00
По завершению, диск перейдёт в состояние Unconfigured(good), Spun Up. До тех пор RAID будет в состоянии Degrade:
# MegaCli -LDInfo -Lall -aALL | grep State State : Degraded
Дальше, переводим в Online:
# MegaCli -PdReplaceMissing -PhysDrv[:0] -array0 -row0 -a0 # MegaCli -PDOnline -PhysDrv [:0] -a0 # MegaCli -LDInfo -Lall -aALL | grep State State               : Optimal
 

четверг, 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.

понедельник, 28 августа 2017 г.

Устанавливаем время, дату и часовой пояс из командной строки или из Gnome

Устанавливаем в системе Linux время, дату и часовой пояс из командной строки или из Gnome | Используем ntp

В системе Linux очень важно иметь правильное время и дату, поскольку от этого зависит многое. Причем неважно, используете ли вы систему Linux на своем персональном компьютере или у вас Linux-сервер. Серверные и системные часы должны указывать правильное время.
Установка даты из командной строки
date +%Y%m%d -s "20120418"
Установка времени из командной строки
date +%T -s "11:14:00"
Установка времени и даты из командной строки
date -s "19 APR 2012 11:14:00"
Проверка в Linux даты из командной строки
date
Вы увидите что-то вроде следующего:
Thu Apr 19 15:17:34 BOT 2012
Установка аппаратных часов Аппаратные часы - это те часы, которые работают на вашем компьютере даже тогда, как питание компьютера отключено. Это возможно благодаря наличию в современных компьютерах литиевой батареи или батареи другого типа в более старых компьютерах.
Мы можем увидеть различие между аппаратными и системными часами
hwclock --show
Вы увидите что-то вроде следующего:
Thu 19 Apr 2012 03:23:05 PM BOT  -0.785086 seconds
Теперь проверьте системные часы
date
Вы увидите что-то вроде следующего:
Thu Apr 19 15:26:41 BOT 2012
Давайте установим аппаратные часы по местному времени:
hwclock --set --date="2012-04-19 16:45:05" --localtime
Если вы хотите установить их на использование времени по Гринвичу (UTC):
hwclock --set --date="2011-04-19 20:45:05"  --utc
Установка часового пояса Чтобы в ваших системных часах установить часовой пояс, выполните следующее:
cp /usr/share/zoneinfo/America/La_Paz /etc/localtime
Правильно укажите ваш часовой пояс.
Автоматическая регулировка часов Для того, чтобы ваша система могла автоматический регулировать время, вам нужно установить программу ntp. Получите ее из репозитария. После того, как она будет установлена, вы можете настроить ее следующим образом:
Отредактируйте файл /etc/ntpd.conf. Он будет выглядеть следующим образом:
# С параметрами по умолчанию, устанавливаемыми ниже, программа ntpd будет выполнять синхронизацию ваших часов.
#
# Подробности смотрите:
# - страница man  для ntp.conf
# - http://support.ntp.org/bin/view/Support/GettingStarted
# - https://wiki.archlinux.org/index.php/Network_Time_Protocol_daemon

# Используемые общедоступные сервера пулов NTP; смотрите http://www.pool.ntp.org/
server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org

# Доступ на чтение только из localhost
restrict default noquery nopeer
restrict 127.0.0.1
restrict ::1

# Месторасположение файлов drift и log
driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp.log

# ЗАМЕЧАНИЕ: Если у вас работает программа dhcpcd и у вас указаны строки такие как 'restrict' и 'fudge', указываемые
# здесь, удостоверьтесь, что в /etc/conf.d/net для перемннных dhcpcd_ethX добавлены параметры  '-Y -N'
Удостоверьтесь, что вы запустили демон, и сделайте так, чтобы он автоматически запускался при загрузке системы.
Для Arch Linux это: /etc/rc.d/ntpd start ; для Debian и производных систем: /etc/init.d/ntpd start
Обновление из командной строки времени по значению, получаемому с сервера времени Вы можете обновлять время вручную без использования демона ntpdate
ntpdate 129.6.15.28
Вы получите что-то вроде следующего:
19 Apr 15:45:23 ntpdate[10948]: step time server 129.6.15.28 offset -45.697084 sec
Бонус: Установка времени и даты в Gnome Если вы используете Gnome, щелкните правой кнопкой мыши по изображению часов и выберите пункт настройки adjust, или в меню выберите пункт System > Administration > Time and Date (Система > Администрирование > Время и дата). Вам, возможно, будет предложено ввести пароль.