Архив метки: Linux

PROXMOX. ОТКЛЮЧАЕМ КОММЕРЧЕСКИЙ РЕПОЗИТОРИЙ, ПОДКЛЮЧАЕМ БЕСПЛАТНЫЙ

Proxmox 8 и выше:

nano /etc/apt/sources.list.d/pve-enterprise.list
#deb https://enterprise.proxmox.com/debian/pve bookworm enterprise
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
nano /etc/apt/sources.list.d/ceph.list
#deb https://enterprise.proxmox.com/debian/ceph-quincy bookworm enterprise
deb http://download.proxmox.com/debian/ceph-quincy bookworm no-subscription

После обновляем:

apt update && apt upgrade -y

Proxmox 7 и ниже:

nano /etc/apt/sources.list

Добавить строку в конец:

deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription

И еще:

nano /etc/apt/sources.list.d/pve-enterprise.list

Закомментировать строку:

#deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise

После обновляем:

apt update && apt upgrade -y

Бесплатный KMS сервер⁠⁠

Для активации корпоративных лицензий Microsoft в локальной сети организации рекомендуют использовать KMS сервер. Сервер многопользовательской активации KMS позволяет активировать продукты Microsoft Windows и Office без доступа в Интернет. Принцип активации такой, клиент подключившись к сети организации, выполняет запрос к серверу DNS, на предмет наличия записи SRV_VLMCS._TCP и если такая запись имеется, то клиент отправляет запрос KMS серверу для активации. Если запись в DNS сервере отсутствует или же в организации отсутствует DNS сервер, то сервер активации на клиенте указывается вручную. Для проверки наличия DNS записи необходимо ввести команду nslookup -type=srv _vlmcs._tcp. Далее сервер активации, в зависимости от установленного KMS ключа, либо активирует лицензию на 180 дней, либо нет. Через 180 дней процедура активации повторяется, хотя клиенты по умолчанию пытаются возобновить активацию через каждые семь дней. После возобновления активации клиента отсчет срока активации начинается заново. Установленный KMS ключ на сервере может активировать нижестоящие версии продуктов Microsoft. Таблицу активации клиентов можно посмотреть здесь. Можно активировать и вышестоящие версии, но для этого на сервере потребуется установить необходимые обновления.

Чтобы развернуть сервер KMS необходимо иметь ключ узла KMS, который можно найти в личном кабинете с корпоративными лицензиями. При установке ключа на сервере активации потребуется доступ в Интернет для проверки его на серверах Microsoft. Потом уже доступ в Интернет можно отключить. Таким ключом на сервере можно активировать большое количество клиентов, даже превышающее количество имеющихся лицензий в организации. Все было замечательно, до поры до времени, пока мир не сошел с ума. Microsoft начала сворачивать свою деятельность на территории РФ и кинула корпоративных клиентов, а потом и еще обычных пользователей. Ключи узла KMS заблокированы на серверах Microsoft и по телефону их активировать тоже теперь не возможно, даже если прикинуться жителем Казахстана. Блокировка скорее всего происходит по принадлежности ключа к территории РФ. Все ключи в моей организации оказались заблокированы. Так мы жили месяца три с не активированными лицензиями.

Отношения с Microsoft уже испорчены, поэтому мне и карты в руки. В этой жизни пока сам не возьмешься, никто тебе подарков не сделает (С). Хотелось понять есть ли какой-нибудь способ наказать Microsoft за подлость с их стороны. Ответ я нашел очень быстро. В сети, на гитхабе, есть проект под названием vlmcsd. Господа, это просто подарок для халявщиков. VLMCSD — это KMS эмулятор с открытым кодом, разработанный на C и работающий на таких ОС как Linux, FreeBSD, Solaris, Minix, Mac OS, iOS и Windows. На данный момент эмулятор поддерживает версии протоколов KMS 4, 5 и 6. Сам эмулятор можно скомпилировать из исходников или же воспользоваться уже готовыми бинарниками. Настройка и запуск KMS сервера займет совсем немного времени.

Опишу процесс поднятия KMS узла на Debian и Alpine.

Скачиваем архив с бинарниками

wget -O vlmcsd-1113.tar.gz https://github.com/Wind4/vlmcsd/releases/download/svn1113/bi...

Распаковываем архив

tar -C vlmcsd-1113 -xvf vlmcsd-1113.tar.gz.

Так же еще необходимо скачать пару файлов

wget -O vlmcds.ini https://github.com/Wind4/vlmcsd/raw/master/etc/vlmcsd.ini
wget -O vlmcsd.kmd https://github.com/Wind4/vlmcsd/raw/master/etc/vlmcsd.kmd.

Создаем каталог mkdir -p /opt/vlmcsd. Копируем туда файлы

cp vlmcsd.{ini, kmd} /opt/vlmcsd/
cp vlmcsd-1113/binaries/Linux/intel/glibc/vlmcsd-x64-glibc /opt/vlmcsd/vlmcsd

Для Alpine необходимо скопировать следующий бинарник

cp vlmcsd-1113/binaries/Linux/static/vlmcsd-x64-musl-static /opt/vlmcsd/vlmcsd.

Далее лучше всего создать пользователя, с правами которого будет запускаться демон

useradd -s /sbin/nologin -d /run/vlmcsd/ -m -r vlmcsd.

В Alpine команда выглядит следующим образом

adduser -S -h /run/vlmcsd vlmcsd.

Раздаем пользователю vlmcsd права на каталог

chown -R vlmcsd:vlmcsd /opt/vlmcsd

В Alpine команда следующая

chown -R vlmcsd:nogroup /opt/vlmcsd

Необходимо еще создать файл для логов

touch /var/log/vlmcsd.log

Раздаем права на vlmcsd.log

chown vlmcsd:vlmcsd /var/log/vlmcsd.log

Для Alpine

chwon vlmcsd:nogroup /var/log/vlmcsd.log.

Рекомендую немного отредактировать файл настроек vlmcsd.ini. Я прописал такие настройки:

Listen = 192.168.88.10:1688
PidFile = /var/run/vlmcsd/vlmcsd.pid
KmsData = /opt/vlmcsd/vlmcsd.kmd
LogFile = /var/log/vlmcsd.log
User = vlmcsd

Для Debian осталось написать systemd unit для запуска демона. Создаем файл touch /etc/systemd/system/vlmcsd.service и прописываем в нем такие строки:

[Unit]
Description=Microsoft KMS Server
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
ExecStart=/opt/vlmcsd/vlmcsd -i /opt/vlmcsd/vlmcsd.ini
[Install]
WantedBy=multi-user.target

Теперь можно запускать KMS сервер systemctl start vlmcsd и проверить статус systemctl status vlmcsd. На выхлопе должно получиться следующее:

Также можно проверить статус порта netstat -tunlp | grep vlmcsd. Картина должна быть следующей:

tcp 0 0 192.168.88.10:1688 0.0.0.0:* LISTEN 1466/vlmcsd

Управление загрузкой сервисов с системой инициализации systemd

Проверить статус (отображение статуса всех сервисов)
systemctl list-units --type service --all
Проверить включен ли сервис
systemctl is–enabled имя_сервиса
Добавить в автозапуск
systemctl enable имя_сервиса
Удалить из автозапуска
systemctl disable имя_сервиса

Для Alpine необходимо написать init script. Создаем файл touch /etc/init.d/vlmcsd и раздаем на него права chown root:root /etc/init.d/vlmcsd и chmod 755 /etc/init.d/vlmcsd. Добавляем в него такие строчки:

#!/sbin/openrc-run
name="VLMCSD"
description="Microsoft KMS Server"
command="/opt/vlmcsd/vlmcsd"
command_args="-i /opt/vlmcsd/vlmcsd.ini"
depend() {
need net
}

Можно запускать service vlmcsd start и проверить статус service vlmcsd status. Статус запуска должен быть started. Так же можно проверить статус порта netstat -tunlp | grep vlmcsd.

Сервер KMS запущен, осталось рассказать клиентам куда ходить им за активацией. В случае наличии в организации DNS сервера необходимо будет для начала создать A запись указывающую на IP адрес KMS сервера. Далее необходимо в зоне прямого просмотра создать SRV запись с названием сервиса _VLMCS, протоколом _tcp, номером порта 1688 и указать FQDN сервера KMS.

При наличии DNS сервера и записи, клиенты начнут запрашивать активацию на KMS сервере. Для активации на клиентах должен быть установлен GVLK ключ.

Для Windows ключ устанавливается командой slmgr /ipk GVLK_KEY.

Для Office необходимо в директории с установленным Office (например C:\Program Files\Microsoft Office\Office16) запустить cscript ospp.vbs /inpkey:GVLK_KEY.

Для ручного указания KMS сервера на клиенте для Windows необходимо ввести команду slmgr /skms KMS_SRV:Port.

Для Office команда будет следующая script ospp.vbs /sethst:KMS_SRV /setprt:Port.

Ну и проверить статус активации на клиенте для Windows slmgr /dlv,для Office cscript ospp.vbs /dstatus.

GVLK ключи для Windows корпорация Microsoft выкладывает в свободном доступе, как и для Office 2016/2019/2021. Для Office 2010/2013 ключей GVLK я на сайтах Microsoft не нашел поэтому выложу здесь.

Office 2010 GVLK:
Office Professional Plus 2010 VYBBJ-TRJPB-QFQRF-QFT4D-H3GVB
Office Standard 2010 V7QKV-4XVVR-XYV4D-F7DFM-8R6BM
Office Home and Business 2010 D6QFG-VBYP2-XQHM7-J97RH-VVRCK
Project Professional 2010 YGX6F-PGV49-PGW3J-9BTGG-VHKC6
Project Standard 2010 4HP3K-88W3F-W2K3D-6677X-F9PGB
Visio Premium 2010 D9DWC-HPYVV-JGF4P-BTWQB-WX8BJ
Visio Professional 2010 7MCW8-VRQVK-G677T-PDJCM-Q8TCP
Visio Standard 2010 767HD-QGMWX-8QTDB-9G3R2-KHFGJ
Access 2010 V7Y44-9T38C-R2VJK-666HK-T7DDX
Excel 2010 H62QG-HXVKF-PP4HP-66KMR-CW9BM
InfoPath 2010 K96W8-67RPQ-62T9Y-J8FQJ-BT37T
OneNote 2010 Q4Y4M-RHWJM-PY37F-MTKWH-D3XHX
Outlook 2010 7YDC2-CWM8M-RRTJC-8MDVC-X3DWQ
PowerPoint 2010 RC8FX-88JRY-3PF7C-X8P67-P4VTT
Publisher 2010 BFK7F-9MYHM-V68C7-DRQ66-83YTP
SharePoint Workspace 2010 QYYW6-QP4CB-MBV6G-HYMCJ-4T3J4
Word 2010 HVHB3-C6FV7-KQX9W-YQG79-CRY7T

Office 2013 GVLK:
Office 2013 Professional Plus YC7DK-G2NP3-2QQC3-J6H88-GVGXT
Office 2013 Standard KBKQT-2NMXY-JJWGP-M62JB-92CD4
Project 2013 Professional FN8TT-7WMH6-2D4X9-M337T-2342K
Project 2013 Standard 6NTH3-CW976-3G3Y2-JK3TX-8QHTT
Visio 2013 Professional C2FG9-N6J68-H8BTJ-BW3QX-RM3B3
Visio 2013 Standard J484Y-4NKBF-W2HMG-DBMJC-PGWR7
Access 2013 NG2JY-H4JBT-HQXYP-78QH9-4JM2D
Excel 2013 VGPNG-Y7HQW-9RHP7-TKPV3-BG7GB
InfoPath 2013 DKT8B-N7VXH-D963P-Q4PHY-F8894
Lync 2013 2MG3G-3BNTT-3MFW9-KDQW3-TCK7R
OneNote 2013 TGN6P-8MMBC-37P2F-XHXXK-P34VW
Outlook 2013 QPN8Q-BJBTJ-334K3-93TGY-2PMBT
PowerPoint 2013 4NT99-8RJFH-Q2VDH-KYG2C-4RD4F
Publisher 2013 PN2WF-29XG2-T9HJ7-JQPJR-FCXK4
Word 2013 6Q7VD-NX8JD-WJ2VH-88V73-4GBJ7

На данный момент таким образом у меня в организации активируются Windows 7/10, Server 2008/2012/2019, Office 2010/2016. Попытки активации можно посмотреть в логе /var/log/vlmcsd.log.
Если заглянуть в каталог с распакованным vlmcsd, то там есть каталог floppy, в котором находится файл образ загрузочной дискеты floppy144-2.fvd. Дискеты конечно уже редкость, но сам факт того что сервер активации продуктов Microsoft умещается на дискетку стоит похвалы. Так же есть уже готовый докер с vlmcsd, если кому то хочется быстренько развернуть KMS сервер.

Мониторинг дисков используя arcconf

Для начала нужно убедиться, что у нас именно Adaptec AAC-Raid

root@s05:~# lspci | grep -i raid
04:00.0 RAID bus controller: Adaptec AAC-RAID (Rocket) (rev 02)

Вывод может быть и такого типа

RAID bus controller [0104]: Adaptec AAC-RAID
RAID bus controller [0104]: Dell PowerEdge Expandable RAID Controller 3/Di
RAID bus controller [0104]: Adaptec AAC-RAID (Rocket)

Следующим шагом нужно установить opensource утилиту arcconf с моего любимого репозитория.

root@s05:~#echo 'deb http://hwraid.le-vert.net/ubuntu precise main' > /etc/apt/sources.list.d/raid.list
root@s05:~#wget -O - http://hwraid.le-vert.net/debian/hwraid.le-vert.net.gpg.key | sudo apt-key add -
root@s05:~#apt-get update
root@s05:~#apt-get install arcconf

Первой командой нужно вытянуть информацию об контроллере. Эта же команда нам даст всю необходимую информацию о статусе батарее, логических и физических дисках.

root@s05:~#arcconf GETCONFIG 1
Controllers found: 1
----------------------------------------------------------------------
Controller information
----------------------------------------------------------------------
   Controller Status                        : Optimal
   Channel description                      : SAS/SATA
   Controller Model                         : IBM ServeRAID 8k
   Controller Serial Number                 : 11AE500
   Physical Slot                            : 0
   Installed memory                         : 256 MB
   Copyback                                 : Disabled
   Background consistency check             : Enabled
   Automatic Failover                       : Enabled
   Stayawake period                         : Disabled
   Spinup limit internal drives             : 0
   Spinup limit external drives             : 0
   Defunct disk drive count                 : 0
   Logical devices/Failed/Degraded: 2/0/0
   --------------------------------------------------------
   Controller Version Information
   --------------------------------------------------------
   BIOS                                     : 5.2-0 (11835)
   Firmware                                 : 5.2-0 (11835)
   Driver                                   : 1.2-0 (29801)
   Boot Flash                               : 5.1-0 (11835)
   --------------------------------------------------------
   Controller Battery Information
   --------------------------------------------------------
   Status                                   : Optimal
   Over temperature                         : No
   Capacity remaining                       : 100 percent
   Time remaining (at current draw)         : 4 days, 15 hours, 11 minutes
----------------------------------------------------------------------
Logical device information
----------------------------------------------------------------------
Logical device number 0
   Logical device name                      : OS
   RAID level                               : 1
   Status of logical device                 : Optimal
   Size                                     : 953690 MB
   Read-cache mode                          : Enabled
   Write-cache mode                         : Enabled (write-back)
   Write-cache setting                      : Enabled (write-back) when protected by
attery/ZMM
   Partitioned                              : Yes
   Protected by Hot-Spare                   : No
   Bootable                                 : Yes
   Failed stripes                           : No
   Power settings                           : Disabled
   --------------------------------------------------------
   Logical device segment information
   --------------------------------------------------------
   Segment 0                                : Present
Controller:1,Enclosure:0,Slot:0) 9WK1J5H8
   Segment 1                                : Present
Controller:1,Enclosure:0,Slot:1) 9WK5S550
Logical device number 1
   Logical device name                      : DATA
   RAID level                               : 5
   Status of logical device                 : Optimal
   Size                                     : 2861090 MB
   Stripe-unit size                         : 256 KB
   Read-cache mode                          : Enabled
   Write-cache mode                         : Enabled (write-back)
   Write-cache setting                      : Enabled (write-back) when protected by
attery/ZMM
   Partitioned                              : Yes
   Protected by Hot-Spare                   : No
   Bootable                                 : No
   Failed stripes                           : No
   Power settings                           : Disabled
   --------------------------------------------------------
   Logical device segment information
   --------------------------------------------------------
   Segment 0                                : Present
Controller:1,Channel:0,Device:2)
   Segment 1                                : Present
Controller:1,Enclosure:0,Slot:3) 9WK1J37S
   Segment 2                                : Present
Controller:1,Enclosure:0,Slot:4) 9WK0KN2E
   Segment 3                                : Present
Controller:1,Enclosure:0,Slot:5) 9WK1J547
----------------------------------------------------------------------
Physical Device information
----------------------------------------------------------------------
      Device #0
         Device is a Hard drive
         State                              : Online
         Supported                          : Yes
         Transfer Speed                     : SAS 3.0 Gb/s
         Reported Channel,Device(T:L)       : 0,0(0:0)
         Reported Location                  : Enclosure 0, Slot 0
         Reported ESD(T:L)                  : 2,0(0:0)
         Vendor                             : IBM-ESXS
         Model                              : ST31000424SS
         Firmware                           : BC21
         Serial number                      : 9WK1J5H8
         World-wide name                    : 5000C50021389DDC
         Size                               : 953869 MB
         Write Cache                        : Enabled (write-back)
         FRU                                : 49Y1880
         S.M.A.R.T.                         : No
         S.M.A.R.T. warnings                : 0
      Device #1
         Device is a Hard drive
         State                              : Online
         Supported                          : Yes
         Transfer Speed                     : SAS 3.0 Gb/s
         Reported Channel,Device(T:L)       : 0,1(1:0)
         Reported Location                  : Enclosure 0, Slot 1
         Reported ESD(T:L)                  : 2,0(0:0)
         Vendor                             : IBM-ESXS
         Model                              : ST31000424SS
         Firmware                           : BC29
         Serial number                      : 9WK5S550
         World-wide name                    : 5000C5004164ABFC
         Size                               : 953869 MB
         Write Cache                        : Enabled (write-back)
         FRU                                : 49Y1880
         S.M.A.R.T.                         : No
         S.M.A.R.T. warnings                : 0
      Device #2
         Device is a Hard drive
         State                              : Online
         Supported                          : Yes
         Transfer Speed                     : SAS 3.0 Gb/s
         Reported Channel,Device(T:L)       : 0,2(2:0)
         Vendor                             : IBM-ESXS
         Model                              : ST31000424SS
         Firmware                           : BC21
         World-wide name                    : 5000C50021388F60
         Size                               : 953869 MB
         Write Cache                        : Enabled (write-back)
         FRU                                : None
         S.M.A.R.T.                         : No
         S.M.A.R.T. warnings                : 0
      Device #3
         Device is a Hard drive
         State                              : Online
         Supported                          : Yes
         Transfer Speed                     : SAS 3.0 Gb/s
         Reported Channel,Device(T:L)       : 0,3(3:0)
         Reported Location                  : Enclosure 0, Slot 3
         Reported ESD(T:L)                  : 2,0(0:0)
         Vendor                             : IBM-ESXS
         Model                              : ST31000424SS
         Firmware                           : BC21
         Serial number                      : 9WK1J37S
         World-wide name                    : 5000C5002138E354
         Size                               : 953869 MB
         Write Cache                        : Enabled (write-back)
         FRU                                : 49Y1880
         S.M.A.R.T.                         : No
         S.M.A.R.T. warnings                : 0
      Device #4
         Device is a Hard drive
         State                              : Online
         Supported                          : Yes
         Transfer Speed                     : SAS 3.0 Gb/s
         Reported Channel,Device(T:L)       : 0,4(4:0)
         Reported Location                  : Enclosure 0, Slot 4
         Reported ESD(T:L)                  : 2,0(0:0)
         Vendor                             : IBM-ESXS
         Model                              : ST31000424SS
         Firmware                           : BC21
         Serial number                      : 9WK0KN2E
         World-wide name                    : 5000C5002103D428
         Size                               : 953869 MB
         Write Cache                        : Enabled (write-back)
         FRU                                : 49Y1880
         S.M.A.R.T.                         : No
         S.M.A.R.T. warnings                : 0
      Device #6
         Device is an Enclosure services device
         Reported Channel,Device(T:L)       : 2,0(0:0)
         Enclosure ID                       : 0
         Type                               : SES2
         Vendor                             : IBM-ESXS
         Model                              : VSC7160
         Firmware                           : 1.06
         Status of Enclosure services device
Command completed successfully.

Из всего полученного вывода нам нужны только такие параметра как состояние контроллера (Controller Status), статус батареи BBU (Controller Battery Information), статус логических дисковых масивов (Status of logical device) и статус каждого физического диска (Device #*). Для этого я написал маленький скрипт, подобный скрипту в предыдущей статье.

#!/bin/bash
ERROR_COUNT=0
LOG="/tmp/aacraid.log"
arcconf GETCONFIG 1 > $LOG
if [ "$?" -ne "0" ]
then
ERROR_STR="Cannot write to log"
let "ERROR_COUNT += 1"
fi
CONTROLLER=cat $LOG | grep -E 'Controller Status' | awk '{ print $4 }'
BATTERY=cat $LOG | grep -A 2 'Controller Battery Information' | grep Status | awk '{print $3}'
LOGICAL_DEVICE=cat $LOG | grep -E 'Status of logical device' | awk '{print $6}'
PHISICAL_DEVICE=cat $LOG | grep -A 2 -E 'Device #[0-9]' | grep State | awk '{print $3}'
get_status() {
while read line ; do
if [ -n "$line" ]
then
if [ "$line" = "Optimal" ] || [ "$line" = "Online" ]
then
echo "Test result is OK" > /dev/null
else
#echo "Test result is FAIL"
ERROR_STR="Some poblem with ACC-raid. Please check $LOG file
"
let "ERROR_COUNT += 1"
fi
fi
done <<< "$1"
}
get_status "${CONTROLLER}"
get_status "${BATTERY}"
get_status "${LOGICAL_DEVICE}"
get_status "${PHISICAL_DEVICE}"
.
if [ -n "$1" ] && [ "$1" = "log" ]
then
echo ${ERROR_STR}
echo "Controller Status is ${CONTROLLER}"
echo "Controller Battery Status is ${BATTERY}"
echo "Status of LDs are ${LOGICAL_DEVICE}"
echo "Status of PDs are:" && cat $LOG | grep -A 2 -E 'Device #[0-9]'
else
echo ${ERROR_COUNT}
fi

Опишу немного данный скрипт. Сначала мы сохраняем всю информацию о здоровье контроллера в файл /tmp/aacraid.log. Далее вытаскиваем значение статуса контроллера, батареи, логических и физических дисков. В функции get_status перебираются все полученные значения и сравниваются со статусами Optimal и Online. Если значения отличны от нормальных, значит есть проблема и число ошибок растет. Если скрипт запустить без аргументов, то мы получим число ошибок, если добавить аргумент log – узнаем с чем именно у нас проблемы.
Проверяем.

root@s05:~# ./aacraid.sh
0
root@s05:~# ./aacraid.sh log
Controller Status is Optimal
Controller Battery Status is Optimal
Status of LDs are
Optimal
Optimal
Status of PDs are:
      Device #0
         Device is a Hard drive
         State                              : Online
--
      Device #1
         Device is a Hard drive
         State                              : Online
--
      Device #2
         Device is a Hard drive
         State                              : Online
--
      Device #3
         Device is a Hard drive
         State                              : Online
--
      Device #4
         Device is a Hard drive
         State                              : Online
--
      Device #5
         Device is a Hard drive
         State                              : Online

Полезные команды утилиты arcconf

# Получить информацию только об адаптере(включая батарею и прошивку)
ARCCONF GETCONFIG 1 AD
# Получить информацию только о логических устройствах
ARCCONF GETCONFIG 1 LD
# Получить информацию только о логическом устройстве с номером 0
ARCCONF GETCONFIG 1 LD 0
# Получить информацию только о физических устройствах
ARCCONF GETCONFIG 1 PD
# Получить информацию только о логических устройствах
ARCCONF GETCONFIG 1 LD
# Поставить/удалить Secure Erase пароль на диск с каналом 0 и ID 0
# Узнать нужны канал и ID диска можно так - arcconf GETCONFIG 1 PD | grep 'Reported hannel,Device'
ARCCONF ATAPASSWORD 1 SET uR8ryx 0 1
ARCCONF ATAPASSWORD 1 CLEAR uR8ryx 0 1
# Создание логического диска с размером блока 64КБ(STRIPESIZE 64) с максимально допустимым размером(MAX), с нулевым рейдом (RAID# = 0) состоящим из дисков (CHANNEL# DRIVE# = 0 1, 0 2, 0 3) без задания лишних вопросов (NOPROMPT)
ARCCONF CREATE 1 LOGICALDRIVE STRIPESIZE 64 MAX 0 0 1 0 2 0 3 NOPROMPT
# Проверка целостности контроллера с номером 1 каждые 30 дней
ARCCONF DATASCRUB 1 PERIOD 30
# Выключить проверку целостности
ARCCONF DATASCRUB 1 OFF
# Удалить логические устройства 1,2 и 3
ARCCONF DELETE 1 LOGICALDRIVE 1 2 3
# Получить лог по ошибках дисков (DEVICE), по умерших устройствах (DEAD), по последних событиях (EVENT) и статистику использования контроллера (STATS) в читабельном формате (Tabular)
ARCCONF GETLOGS 1 DEVICE Tabular
ARCCONF GETLOGS 1 DEAD Tabular
ARCCONF GETLOGS 1 EVENT Tabular
ARCCONF GETLOGS 1 STATS Tabular
# Засветить LED к котором подсоединены логические или физические диски контроллера с номером 1
ARCCONF IDENTIFY 1 DEVICE 0 0
ARCCONF IDENTIFY 1 DEVICE 0 1
ARCCONF IDENTIFY 1 ALL
ARCCONF IDENTIFY 1 LOGICALDRIVE 0
ARCCONF IDENTIFY 1 LOGICALDRIVE 1
# Установка режима кэширования
# Для логических устройств есть режимы
#• RON - read cache on
#• ROFF - read cache off
#• WT - write through disabled
#• WB - write back enabled
#• WBB - write back enabled (when protected by battery or flash backup module)
# Для физических устройств
#• WT - write through disabled
#• WB - write back enabled
ARCCONF SETCACHE LOGICALDRIVE 1 RON
ARCCONF SETCACHE DEVICE 0 0 WB

Как работать с LVM

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

Используемые команды одинаково подойдут как для систем Red Hat / CentOS, так и Debian / Ubuntu.

Уровни абстракции

Работа с томами с помощью LVM происходит на 3-х уровнях абстракции:

  1. Физический уровень (PV). Сначала диск инициализируется командой pvcreate — в начале диска создается дескриптор группы томов. При этом важно заметить, что диск не обязательно должен быть физическим — мы можно отметить на использование обычный раздел диска.
  2. Группа томов (VG). С помощью команды vgcreate создается группа томов из инициализированных на предыдущем этапе дисков.
  3. Логический том (LV). Группы томов нарезаются на логические тома командой lvcreate.

Схематично, уровни можно представить так:

Установка

Для работы с LVM необходима установка одноименной утилиты. В системе Linux  она может быть установлена по умолчанию. Но если ее нет, выполняем инструкцию ниже.

Если используем системы на безе deb (Ubuntu, Debian, Mint):

apt-get install lvm2

Если используем системы на безе RPM (Red Hat, CentOS, Fedora):

yum install lvm2

Создание разделов

Рассмотрим пример создания томов из дисков sdb и sdc с помощью LVM.

1. Инициализация

Помечаем диски, что они будут использоваться для LVM:

pvcreate /dev/sdb /dev/sdc

* напомним, что в качестве примера нами используются диски sdb и sdc.

Посмотреть, что диск может использоваться LMV можно командой:

pvdisplay

В нашем случае мы должны увидеть что-то на подобие:

  "/dev/sdb" is a new physical volume of "1,00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name               
  PV Size               1,00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               rR8qya-eJes-7AC5-wuxv-CT7a-o30m-bnUrWa
   
  "/dev/sdc" is a new physical volume of "1,00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name               
  PV Size               1,00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               2jIgFd-gQvH-cYkf-9K7N-M7cB-WWGE-9dzHIY

* где 

  • PV Name — имя диска. 
  • VG Name — группа томов, в которую входит данный диск (в нашем случае пусто, так как мы еще не добавили его в группу).
  • PV Size — размер диска.
  • Allocatable — распределение по группам. Если NO, то диск еще не задействован и его необходимо для использования включить в группу.
  • PE Size — размер физического фрагмента (экстента). Пока диск не добавлен в группу, значение будет 0.
  • Total PE — количество физических экстентов.
  • Free PE — количество свободных физических экстентов.
  • Allocated PE — распределенные экстенты.
  • PV UUID — идентификатор физического раздела.

2. Создание групп томов

Инициализированные на первом этапе диски должны быть объединены в группы.

Группа может быть создана:

vgcreate vg01 /dev/sdb /dev/sdc

* где vg01 — произвольное имя создаваемой группы; /dev/sdb, /dev/sdc — наши диски.

Просмотреть информацию о созданных группах можно командой:

vgdisplay

На что мы получим, примерно, следующее:

  --- Volume group ---
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1,99 GiB
  PE Size               4,00 MiB
  Total PE              510
  Alloc PE / Size       0 / 0   
  Free  PE / Size       510 / 1,99 GiB
  VG UUID               b0FAUz-wlXt-Hzqz-Sxs4-oEgZ-aquZ-jLzfKz

* где:

  • VG Name — имя группы.
  • Format — версия подсистемы, используемая для создания группы.
  • Metadata Areas — область размещения метаданных. Увеличивается на единицу с созданием каждой группы.
  • VG Access — уровень доступа к группе томов.
  • VG Size — суммарный объем всех дисков, которые входят в группу.
  • PE Size — размер физического фрагмента (экстента).
  • Total PE — количество физических экстентов.
  • Alloc PE / Size — распределенное пространство: колическтво экстентов / объем.
  • Free  PE / Size — свободное пространство: колическтво экстентов / объем.
  • VG UUID — идентификатор группы.

3. Создание логических томов

Последний этап — создание логического раздела их группы томов командой lvcreate. Ее синтаксис:

lvcreate [опции] <имя группы томов>

Примеры создания логических томов:

lvcreate -L 1G vg01

* создание тома на 1 Гб из группы vg01.

lvcreate -L50 -n lv01 vg01

* создание тома с именем lv01 на 50 Мб из группы vg01.

lvcreate -l 40%VG vg01

* при создании тома используется 40% от дискового пространства группы vg01.

lvcreate -l 100%FREE -n lv01 vg01

* использовать все свободное пространство группы vg01 при создании логического тома.
* также можно использовать %PVS — процент места от физического тома (PV); %ORIGIN — размер оригинального тома (применяется для снапшотов).

Посмотрим информацию о созданном томе:

lvdisplay

  --- Logical volume ---
  LV Path                /dev/vg01/lv01
  LV Name                lv01
  VG Name                vg01
  LV UUID                4nQ2rp-7AcZ-ePEQ-AdUr-qcR7-i4rq-vDISfD
  LV Write Access        read/write
  LV Creation host, time vln.dmosk.local, 2019-03-18 20:01:14 +0300
  LV Status              available
  # open                 0
  LV Size                52,00 MiB
  Current LE             13
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

* где:

  • LV Path — путь к устройству логического тома.
  • LV Name — имя логического тома.
  • VG Name — имя группы томов.
  • LV UUID — идентификатор.
  • LV Write Access — уровень доступа.
  • LV Creation host, time — имя компьютера и дата, когда был создан том.
  • LV Size — объем дискового пространства, доступный для использования.
  • Current LE — количество логических экстентов.

Создание файловой системы и монтирование тома

Чтобы начать использовать созданный том, необходимо его отформатировать, создав файловую систему и примонтировать раздел в каталог.

Файловая система

Процесс создания файловой системы на томах LVM ничем не отличается от работы с любыми другими разделами.

Например, для создания файловой системы ext4 вводим:

mkfs.ext4 /dev/vg01/lv01

vg01 — наша группа томов; lv01 — логический том.

Для создания, например, файловой системы xfs вводим:

mkfs.xfs /dev/vg01/lv01

Монтирование

Как и в случае с файловой системой, процесс монтирования не сильно отличается от разделов, созданных другими методами.

Для разового монтирования пользуемся командой:

mount /dev/vg01/lv01 /mnt

* где /dev/vg01/lv01 — созданный нами логический том, /mnt — раздел, в который мы хотим примонтировать раздел.

Для постоянного монтирования раздела добавляем строку в fstab:

vi /etc/fstab
/dev/vg01/lv01  /mnt    ext4    defaults        1 2

* в данном примере мы монтируем при загрузке системы том /dev/vg01/lv01 в каталог /mnt; используется файловая система ext4.

Проверяем настройку fstab, смонтировав раздел:

mount -a

Проверяем, что диск примонтирован:

df -hT

Просмотр информации

Разберемся, как получить информацию о дисковых накопителях в системе.

1. Для общего представления дисков, разделов и томов вводим:

lsblk

Мы получим что-то на подобие:

NAME             MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                8:0    0   30G  0 disk 
  sda1             8:1    0    1G  0 part /boot
  sda2             8:2    0   29G  0 part 
    sys-root     253:0    0   27G  0 lvm  /
    sys-swap     253:1    0    2G  0 lvm  [SWAP]
sdb                8:16   0    1G  0 disk 
  vg01-lv01-real 253:3    0    1G  0 lvm  
    vg01-lv01    253:2    0    1G  0 lvm  /mnt
    vg01-sn01    253:5    0    1G  0 lvm  
sdc                8:32   0    1G  0 disk 
  vg01-lv01-real 253:3    0    1G  0 lvm  
    vg01-lv01    253:2    0    1G  0 lvm  /mnt
    vg01-sn01    253:5    0    1G  0 lvm  
  vg01-sn01-cow  253:4    0  500M  0 lvm  
    vg01-sn01    253:5    0    1G  0 lvm  
sdd                8:48   0    1G  0 disk

* как видим, команда отображает корневое блочное устройство, какие разделы из него сделаны и в какие логические тома организованы из некоторых из разделов.

2. Получить информацию о проинициализированных для LVM дисков:

Кратко:

pvs

Подробно:

pvdisplay
pvdisplay /dev/sdb

3. Посмотреть информацию о группах LVM.

Кратко:

vgs

Подробно:

vgdisplay
vgdisplay vg01

4. Посмотреть информацию о логических томах можно также двумя способами — краткая информация:

lvs

* команда покажет все логические разделы.

Для более подробной информации о логических томах вводим:

lvdisplay

lvdisplay /dev/vg01/lv01

5. Для поиска всех устройств, имеющих отношение к LVM, вводим:

lvmdiskscan

Увеличение томов

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

1. Расширение физического тома

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

а) Если добавляем еще один диск.

Инициализируем новый диск:

pvcreate /dev/sdd

* в данном примере мы инициализировали диск sdd.

Проверяем объем физического тома:

pvdisplay

б) Если увеличиваем дисковое пространство имеющегося диска.

Увеличиваем размер физического диска командой:

pvresize /dev/sda

* где /dev/sda — диск, который был увеличен.

Проверяем объем физического тома:

pvdisplay

2. Добавление нового диска к группе томов

Независимо от способа увеличения физического тома, расширяем группу томов командой:

vgextend vg01 /dev/sdd

* данная команда расширит группу vg01 за счет добавленого или расширенного диска sdd.

Результат можно увидеть командой:

vgdisplay

3. Увеличение логического раздела

Выполняется одной командой.

а) все свободное пространство:

lvextend -l +100%FREE /dev/vg01/lv01

* данной командой мы выделяем все свободное пространство группы томов vg01 разделу lv01.

б) определенный объем:

lvextend -L+30G /dev/vg01/lv01

* данной командой мы добавляем 30 Гб от группы томов vg01 разделу lv01.

в) до нужного объема:

lvextend -L500G /dev/vg01/lv01

* данной командой мы доводим наш раздел до объема в 500 Гб.

Результат можно увидеть командой:

lvdisplay

Обратить внимание нужно на опцию LV Size:

  ...
  LV Status              available
  # open                 1
  LV Size                <2,99 GiB
  Current LE             765
  ...

4. Увеличение размера файловой системы

Чтобы сама система увидела больший объем дискового пространства, необходимо увеличить размер файловой системы.

Посмотреть используемую файловую систему:

df -T

Для каждой файловой системы существуют свои инструменты.

ext2/ext3/ext4:

resize2fs /dev/vg01/lv01

XFS:

xfs_growfs /dev/vg01/lv01

Reiserfs:

resize_reiserfs /dev/vg01/lv01

Уменьшение томов

Размер некоторый файловых систем, например, XFS уменьшить нельзя. Из положения можно выйти, создав новый уменьшенный том с переносом на него данных и последующим удалением.

LVM также позволяет уменьшить размер тома. Для этого необходимо выполнить его отмонтирование, поэтому для уменьшения системного раздела безопаснее всего загрузиться с Linux LiveCD. Далее выполняем инструкцию ниже.

Отмонтируем раздел, который нужно уменьшить:

umount /mnt

Выполняем проверку диска:

e2fsck -fy /dev/vg01/lv01

Уменьшаем размер файловой системы:

resize2fs /dev/vg01/lv01 500M

Уменьшаем размер тома:

lvreduce -L-500 /dev/vg01/lv01

На предупреждение системы отвечаем y:

  WARNING: Reducing active logical volume to 524,00 MiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg01/lv01? [y/n]: y

Готово.

Очень важно, чтобы сначала был уменьшен размер файловой системы, затем тома. Также важно не уменьшить размер тома больше, чем файловой системы. В противном случае данные могут быть уничтожены. Перед выполнением операции, обязательно создаем копию важных данных.

Удаление томов

Если необходимо полностью разобрать LVM тома, выполняем следующие действия.

Отмонтируем разделы:

umount /mnt

* где /mnt — точка монтирования для раздела.

Удаляем соответствующую запись из fstab (в противном случае наша система может не загрузиться после перезагрузки):

vi /etc/fstab
#/dev/vg01/lv01  /mnt    ext4    defaults        1 2

* в данном примере мы не удалили, а закомментировали строку монтирования диска.

Смотрим информацию о логичеких томах:

lvdisplay

Теперь удаляем логический том:

lvremove /dev/vg01/lv01

На вопрос системы, действительно ли мы хотим удалить логических том, отвечаем да (y):

Do you really want to remove active logical volume vg01/lv01? [y/n]: y

* если система вернет ошибку Logical volume contains a filesystem in use, необходимо убедиться, что мы отмонтировали том.

Смотрим информацию о группах томов:

vgdisplay

Удаляем группу томов:

vgremove vg01

Убираем пометку с дисков на использование их для LVM:

pvremove /dev/sd{b,c,d}

* в данном примере мы деинициализируем диски /dev/sdb, /dev/sdc, /dev/sdd.

В итоге мы получим:

  Labels on physical volume "/dev/sdb" successfully wiped.
  Labels on physical volume "/dev/sdc" successfully wiped.
  Labels on physical volume "/dev/sdd" successfully wiped.

Создание зеркала

С помощью LVM мы может создать зеркальный том — данные, которые мы будем на нем сохранять, будут отправляться на 2 диска. Таким образом, если один из дисков выходит из строя, мы не потеряем свои данные.

Зеркалирование томов выполняется из группы, где есть, минимум, 2 диска.

1. Сначала инициализируем диски:

pvcreate /dev/sd{d,e}

* в данном примере sdd и sde.

2. Создаем группу:

vgcreate vg02 /dev/sd{d,e}

3. Создаем зеркальный том: 

lvcreate -L200 -m1 -n lv-mir vg02

* мы создали том lv-mir на 200 Мб из группы vg02.

В итоге:

lsblk

… мы увидим что-то на подобие:

sdd                       8:16   0    1G  0 disk
  vg02-lv--mir_rmeta_0  253:2    0    4M  0 lvm
    vg02-lv--mir        253:6    0  200M  0 lvm
  vg02-lv--mir_rimage_0 253:3    0  200M  0 lvm
    vg02-lv--mir        253:6    0  200M  0 lvm
sde                       8:32   0    1G  0 disk
  vg02-lv--mir_rmeta_1  253:4    0    4M  0 lvm
    vg02-lv--mir        253:6    0  200M  0 lvm
  vg02-lv--mir_rimage_1 253:5    0  200M  0 lvm
    vg02-lv--mir        253:6    0  200M  0 lvm

* как видим, на двух дисках у нас появились разделы по 200 Мб.

Работа со снапшотами

Снимки диска позволят нам откатить состояние на определенный момент. Это может послужить быстрым вариантом резервного копирования. Однако нужно понимать, что данные хранятся на одном и том же физическом носителе, а значит, данный способ не является полноценным резервным копированием.

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

Создание для не XFS:

lvcreate -L500 -s -n sn01 /dev/vg01/lv01

* данная команда помечает, что 500 Мб дискового пространства устройства /dev/vg01/lv01 (тома lv01 группы vg01) будет использоваться для snapshot (опция -s).

Создание для XFS:

xfs_freeze -f /mnt; lvcreate -L500 -s -n sn01 /dev/vg01/lv01; xfs_freeze -u /mnt

* команда xfs_freeze замораживает операции в файловой системе XFS.

Посмотрим список логических томов:

lvs

Получим что-то на подобие:

LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
lv01 vg01 owi-aos---   1,00g
sn01 vg01 swi-a-s--- 500,00m      lv01   2,07

* поле Origin показывает, к какому оригинальному логическому тому относится LV, например, в данной ситуации наш раздел для снапшотов относится к lv01.

Также можно посмотреть изменения в томах командой:

lsblk

Мы должны увидеть что-то подобное:

sdc                8:32   0    1G  0 disk 
  vg01-lv01-real 253:3    0    1G  0 lvm  
    vg01-lv01    253:2    0    1G  0 lvm  /mnt
    vg01-sn01    253:5    0    1G  0 lvm  
  vg01-sn01-cow  253:4    0  500M  0 lvm  
    vg01-sn01    253:5    0    1G  0 lvm 

С этого момента все изменения пишутся в vg01-sn01-cow, а vg01-lv01-real фиксируется только для чтения и мы может откатиться к данному состоянию диска в любой момент.

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

mkdir /tmp/snp

Монтирование не XFS:

mount /dev/vg01/sn01 /tmp/snp

Монтирование XFS:

mount -o nouuid,ro /dev/vg01/sn01 /tmp/snp

Для выполнения отката до снапшота, выполняем команду:

lvconvert --merge /dev/vg01/sn01

Импорт диска из другой системы

Если мы перенесли LVM-диск с другого компьютера или виртуальной машины и хотим подключить его без потери данных, то нужно импортировать том.

Если есть возможность, сначала нужно на старом компьютере отмонтировать том и сделать его экспорт:

umount /mnt

* предположим, что диск примонтирован в /mnt.

Деактивируем группу томов:

vgchange -an vg_test

* в данном примере наша группа называется vg_test.

Делаем экспорт:

vgexport vg_test

После переносим диск на новый компьютер.

На новой системе сканируем группы LVM следующей командой:

pvscan

… система отобразит все LVM-тома (подключенные и нет), например:

  PV /dev/sdb    VG vg_test         lvm2 [1020,00 MiB / 0    free]
  PV /dev/sda5   VG ubuntu-vg       lvm2 [11,52 GiB / 0    free]
  Total: 2 [12,52 GiB] / in use: 2 [12,52 GiB] / in no VG: 0 [0   ]

* в данном примере найдено два диска с томами LVM — /dev/sdb (группа vg_test) и /dev/sda5 (группа ubuntu-vg).

В моем примере новый диск с группой vg_test — будум импортировать его. Вводим команду:

vgimport vg_test

Возможны два варианта ответа:

1) если мы экспортировали том:

Volume group "vg_test" successfully imported

2) если не экспортировали:

Volume group "vg_test" is not exported

Так или иначе, группа томов должна появиться в нашей системе — проверяем командой:

vgdisplay

… мы должны увидеть что-то на подобие:

  --- Volume group ---
  VG Name               vg_test
  System ID             
  Format                lvm2
  ...

Активируем его:

vgchange -ay vg_test

Готово. Для монтирования раздела, смотрим его командой:

lvdisplay

… и монтируем в нужный каталог, например:

mount /dev/vg_test/lvol0 /mnt

* в данном примере мы примонтируем раздел lvol0 в группе томов vg_test к каталогу /mnt.

Бесплатный KMS сервер⁠⁠

Для активации корпоративных лицензий Microsoft в локальной сети организации рекомендуют использовать KMS сервер. Сервер многопользовательской активации KMS позволяет активировать продукты Microsoft Windows и Office без доступа в Интернет. Принцип активации такой, клиент подключившись к сети организации, выполняет запрос к серверу DNS, на предмет наличия записи SRV_VLMCS._TCP и если такая запись имеется, то клиент отправляет запрос KMS серверу для активации. Если запись в DNS сервере отсутствует или же в организации отсутствует DNS сервер, то сервер активации на клиенте указывается вручную. Для проверки наличия DNS записи необходимо ввести команду nslookup -type=srv _vlmcs._tcp. Далее сервер активации, в зависимости от установленного KMS ключа, либо активирует лицензию на 180 дней, либо нет. Через 180 дней процедура активации повторяется, хотя клиенты по умолчанию пытаются возобновить активацию через каждые семь дней. После возобновления активации клиента отсчет срока активации начинается заново. Установленный KMS ключ на сервере может активировать нижестоящие версии продуктов Microsoft. Таблицу активации клиентов можно посмотреть здесь. Можно активировать и вышестоящие версии, но для этого на сервере потребуется установить необходимые обновления.

Чтобы развернуть сервер KMS необходимо иметь ключ узла KMS, который можно найти в личном кабинете с корпоративными лицензиями. При установке ключа на сервере активации потребуется доступ в Интернет для проверки его на серверах Microsoft. Потом уже доступ в Интернет можно отключить. Таким ключом на сервере можно активировать большое количество клиентов, даже превышающее количество имеющихся лицензий в организации. Все было замечательно, до поры до времени, пока мир не сошел с ума. Microsoft начала сворачивать свою деятельность на территории РФ и кинула корпоративных клиентов, а потом и еще обычных пользователей. Ключи узла KMS заблокированы на серверах Microsoft и по телефону их активировать тоже теперь не возможно, даже если прикинуться жителем Казахстана. Блокировка скорее всего происходит по принадлежности ключа к территории РФ. Все ключи в моей организации оказались заблокированы. Так мы жили месяца три с не активированными лицензиями.

Отношения с Microsoft уже испорчены, поэтому мне и карты в руки. В этой жизни пока сам не возьмешься, никто тебе подарков не сделает (С). Хотелось понять есть ли какой-нибудь способ наказать Microsoft за подлость с их стороны. Ответ я нашел очень быстро. В сети, на гитхабе, есть проект под названием vlmcsd. Господа, это просто подарок для халявщиков. VLMCSD — это KMS эмулятор с открытым кодом, разработанный на C и работающий на таких ОС как Linux, FreeBSD, Solaris, Minix, Mac OS, iOS и Windows. На данный момент эмулятор поддерживает версии протоколов KMS 4, 5 и 6. Сам эмулятор можно скомпилировать из исходников или же воспользоваться уже готовыми бинарниками. Настройка и запуск KMS сервера займет совсем немного времени.

Опишу процесс поднятия KMS узла на Debian и Alpine.

Скачиваем архив с бинарниками

wget -O vlmcsd-1113.tar.gz https://github.com/Wind4/vlmcsd/releases/download/svn1113/bi…

Распаковываем архив

tar -C vlmcsd-1113 -xvf vlmcsd-1113.tar.gz.

Так же еще необходимо скачать пару файлов

wget -O vlmcds.ini https://github.com/Wind4/vlmcsd/raw/master/etc/vlmcsd.ini

wget -O vlmcsd.kmd https://github.com/Wind4/vlmcsd/raw/master/etc/vlmcsd.kmd.

Создаем каталог mkdir -p /opt/vlmcsd. Копируем туда файлы

cp vlmcsd.{ini, kmd} /opt/vlmcsd/

cp vlmcsd-1113/binaries/Linux/intel/glibc/vlmcsd-x64-glibc /opt/vlmcsd/vlmcsd

Для Alpine необходимо скопировать следующий бинарник

cp vlmcsd-1113/binaries/Linux/static/vlmcsd-x64-musl-static /opt/vlmcsd/vlmcsd.

Далее лучше всего создать пользователя, с правами которого будет запускаться демон

useradd -s /sbin/nologin -d /run/vlmcsd/ -m -r vlmcsd.

В Alpine команда выглядит следующим образом

adduser -S -h /run/vlmcsd vlmcsd.

Раздаем пользователю vlmcsd права на каталог

chown -R vlmcsd:vlmcsd /opt/vlmcsd

В Alpine команда следующая

chown -R vlmcsd:nogroup /opt/vlmcsd

Необходимо еще создать файл для логов

touch /var/log/vlmcsd.log

Раздаем права на vlmcsd.log

chown vlmcsd:vlmcsd /var/log/vlmcsd.log

Для Alpine

chwon vlmcsd:nogroup /var/log/vlmcsd.log.

Рекомендую немного отредактировать файл настроек vlmcsd.ini. Я прописал такие настройки:

Listen = 192.168.88.10:1688

PidFile = /var/run/vlmcsd/vlmcsd.pid

KmsData = /opt/vlmcsd/vlmcsd.kmd

LogFile = /var/log/vlmcsd.log

User = vlmcsd

Для Debian осталось написать systemd unit для запуска демона. Создаем файл touch /etc/systemd/system/vlmcsd.service и прописываем в нем такие строки:

[Unit]

Description=Microsoft KMS Server

After=network-online.target

Wants=network-online.target

[Service]

Type=forking

ExecStart=/opt/vlmcsd/vlmcsd -i /opt/vlmcsd/vlmcsd.ini

[Install]

WantedBy=multi-user.target

Теперь можно запускать KMS сервер systemctl start vlmcsd и проверить статус systemctl status vlmcsd. На выхлопе должно получиться следующее:

Также можно проверить статус порта netstat -tunlp | grep vlmcsd. Картина должна быть следующей:

tcp 0 0 192.168.88.10:1688 0.0.0.0:* LISTEN 1466/vlmcsd

Для Alpine необходимо написать init script. Создаем файл touch /etc/init.d/vlmcsd и раздаем на него права chown root:root /etc/init.d/vlmcsd и chmod 755 /etc/init.d/vlmcsd. Добавляем в него такие строчки:

#!/sbin/openrc-run

name=»VLMCSD»

description=»Microsoft KMS Server»

command=»/opt/vlmcsd/vlmcsd»

command_args=»-i /opt/vlmcsd/vlmcsd.ini»

depend() {

need net

}

Можно запускать service vlmcsd start и проверить статус service vlmcsd status. Статус запуска должен быть started. Так же можно проверить статус порта netstat -tunlp | grep vlmcsd.

Сервер KMS запущен, осталось рассказать клиентам куда ходить им за активацией. В случае наличии в организации DNS сервера необходимо будет для начала создать A запись указывающую на IP адрес KMS сервера. Далее необходимо в зоне прямого просмотра создать SRV запись с названием сервиса _VLMCS, протоколом _tcp, номером порта 1688 и указать FQDN сервера KMS.

При наличии DNS сервера и записи, клиенты начнут запрашивать активацию на KMS сервере. Для активации на клиентах должен быть установлен GVLK ключ.

Для Windows ключ устанавливается командой slmgr /ipk GVLK_KEY.

Для Office необходимо в директории с установленным Office (например C:\Program Files\Microsoft Office\Office16) запустить cscript ospp.vbs /inpkey:GVLK_KEY.

Для ручного указания KMS сервера на клиенте для Windows необходимо ввести команду slmgr /skms KMS_SRV:Port.

Для Office команда будет следующая script ospp.vbs /sethst:KMS_SRV /setprt:Port.

Ну и проверить статус активации на клиенте для Windows slmgr /dlv,для Office cscript ospp.vbs /dstatus.

GVLK ключи для Windows корпорация Microsoft выкладывает в свободном доступе, как и для Office 2016/2019/2021. Для Office 2010/2013 ключей GVLK я на сайтах Microsoft не нашел поэтому выложу здесь.

Office 2010 GVLK:

Office Professional Plus 2010 VYBBJ-TRJPB-QFQRF-QFT4D-H3GVB

Office Standard 2010 V7QKV-4XVVR-XYV4D-F7DFM-8R6BM

Office Home and Business 2010 D6QFG-VBYP2-XQHM7-J97RH-VVRCK

Project Professional 2010 YGX6F-PGV49-PGW3J-9BTGG-VHKC6

Project Standard 2010 4HP3K-88W3F-W2K3D-6677X-F9PGB

Visio Premium 2010 D9DWC-HPYVV-JGF4P-BTWQB-WX8BJ

Visio Professional 2010 7MCW8-VRQVK-G677T-PDJCM-Q8TCP

Visio Standard 2010 767HD-QGMWX-8QTDB-9G3R2-KHFGJ

Access 2010 V7Y44-9T38C-R2VJK-666HK-T7DDX

Excel 2010 H62QG-HXVKF-PP4HP-66KMR-CW9BM

InfoPath 2010 K96W8-67RPQ-62T9Y-J8FQJ-BT37T

OneNote 2010 Q4Y4M-RHWJM-PY37F-MTKWH-D3XHX

Outlook 2010 7YDC2-CWM8M-RRTJC-8MDVC-X3DWQ

PowerPoint 2010 RC8FX-88JRY-3PF7C-X8P67-P4VTT

Publisher 2010 BFK7F-9MYHM-V68C7-DRQ66-83YTP

SharePoint Workspace 2010 QYYW6-QP4CB-MBV6G-HYMCJ-4T3J4

Word 2010 HVHB3-C6FV7-KQX9W-YQG79-CRY7T

Office 2013 GVLK:

Office 2013 Professional Plus YC7DK-G2NP3-2QQC3-J6H88-GVGXT

Office 2013 Standard KBKQT-2NMXY-JJWGP-M62JB-92CD4

Project 2013 Professional FN8TT-7WMH6-2D4X9-M337T-2342K

Project 2013 Standard 6NTH3-CW976-3G3Y2-JK3TX-8QHTT

Visio 2013 Professional C2FG9-N6J68-H8BTJ-BW3QX-RM3B3

Visio 2013 Standard J484Y-4NKBF-W2HMG-DBMJC-PGWR7

Access 2013 NG2JY-H4JBT-HQXYP-78QH9-4JM2D

Excel 2013 VGPNG-Y7HQW-9RHP7-TKPV3-BG7GB

InfoPath 2013 DKT8B-N7VXH-D963P-Q4PHY-F8894

Lync 2013 2MG3G-3BNTT-3MFW9-KDQW3-TCK7R

OneNote 2013 TGN6P-8MMBC-37P2F-XHXXK-P34VW

Outlook 2013 QPN8Q-BJBTJ-334K3-93TGY-2PMBT

PowerPoint 2013 4NT99-8RJFH-Q2VDH-KYG2C-4RD4F

Publisher 2013 PN2WF-29XG2-T9HJ7-JQPJR-FCXK4

Word 2013 6Q7VD-NX8JD-WJ2VH-88V73-4GBJ7

На данный момент таким образом у меня в организации активируются Windows 7/10, Server 2008/2012/2019, Office 2010/2016. Попытки активации можно посмотреть в логе /var/log/vlmcsd.log.
Если заглянуть в каталог с распакованным vlmcsd, то там есть каталог floppy, в котором находится файл образ загрузочной дискеты floppy144-2.fvd. Дискеты конечно уже редкость, но сам факт того что сервер активации продуктов Microsoft умещается на дискетку стоит похвалы. Так же есть уже готовый докер с vlmcsd, если кому то хочется быстренько развернуть KMS сервер.

Статья не моя, спасибо пикабушнику alfos79 разместил для себя как памятку, что бы не искать.