понедельник, 28 марта 2016 г.

USB over IP CentOS 7 - Windows



1) CentOS:

yum install kernel-devel automake autoconf gcc glib make ncurses-devel ncurses sysfsutils rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed xmlto audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel  newt-devel python-devel zlib-devel glib2-devel libsysfs-devel libtool


 #Module build
 Download the correct linux-`uname -r`.tar.bz2 from vault.centos.org
 Login as a diffrent user other than root
 tar xvf linux-`uname -r`.tar.bz2 -C ~/
 cp /usr/src/kernels/<uname -r>/Module.symvers ~/linux-`uname -r`
 cd ~/linux-`uname -r`
 make oldconfig
 make menuconfig
 >>Device Drivers>>Statging>USBIP ( Select M)
 make prepare scripts
 make prepare
 make M=drivers/staging/usbip/
 sudo cp drivers/staging/usbip/*.ko /lib/modules/`uname -r`/extra/
 sudo modprobe usbip_core usbip_host vhci_hcd

#Binary file build

You should install the sources for the Linux kernel you are running. Then you'll find the userspace tools in /usr/src/linux/drivers/staging/usbip/userspace/ on your system. Run “./autogen.sh” inside that directory, then the usual configure and make.

2) Для windows просто скачайте клиента с оф.сайта разработчика.

NOTE:

Having a look at usbip_windows_v0.2.0.0_signed\usbip_protocol.h there is a version define
#define USBIP_VERSION 0x000106
0x111 makes version 262

In the linux 3.1.10 kernel, in usbip/userspace/config.h it is defined as
#define USBIP_VERSION 0x00000111

Просто перед make файлов демона исправьте строку в usbip/userspace/config.h, иначе клиент из windows не подключится, сборка клиента на оф.сайте увы не актуальна, ждем исправления

iSCSI в Linux, мини-шпаргалка

Сначала мы находим нужные нам target, для этого мы должны знать IP/dns-имя инициатора:  

iscsiadm -m discovery -t st -p 192.168.0.1 -t st — это команда send targets.
iscsiadm -m node (список найденного для логина)
iscsiadm -m node -l -T iqn.2011-09.example:data (залогиниться, то есть подключиться и создать блочное устройство).
iscsiadm -m session (вывести список того, к чему подключились)
iscsiadm -m session -P3 (вывести его же, но подробнее — в самом конце вывода будет указание на то, какое блочное устройство какому target'у принадлежит).
iscsiadm - m session -u -T iqn.2011-09.example:data (вылогиниться из конкретной )
iscsiadm -m node -l (залогиниться во все обнаруженные target'ы)
iscsiadm -m node -u (вылогиниться из всех target'ов)
iscsiadm -m node --op delete -T iqn.2011-09.example:data (удалить target из обнаруженных).

Установка и настройка initiator и multipath в CentOS 7:

yum install iscsi-initiator-utils
yum install device-mapper-multipath

systemctl start iscsi
systemctl start iscsid
systemctl start multipathd
systemctl enable iscsi
systemctl enable iscsid
systemctl enable multipathd

mpathconf --enable --with_multipathd y

Проверяем, используя команду multipath -ll

вторник, 22 марта 2016 г.

Configure iSCSI on Windows Server 2012 R2



Source
It should be simple to configure iSCSI on Windows Server 2012 R2 right? While it is not rocket science and really not that difficult at all to configure, it’s also not as intuitive as I think it should be. Therefore I decided to create this post on how to configure iSCSI for a Windows Server 2012 R2 Hyper-V cluster using an HP MSA 1040 as the shared storage device.
Equipment
Shared Storage: HP MSA 1040 (4 NICS)
Servers: Quantity of 2 Hyper-V Hosts (each host has 6 NICS)
Network switches: Quantity of 2 network switches (for redundancy)
Operating System: Windows Server 2012 R2
Storage Network: Each Hyper-V host has two NICS dedicated for the storage (1 NIC cabled to MSA Controller A and 1 NIC cabled to MSA Controller B)
Configure HP MSA 1040 Storage Network
The first thing you must do is configure the storage network. This involves configuring the HP MSA 1040. This post will not cover all the aspects involved in configuring the MSA 1040. The screen shots below are just demonstrating the IP configuration so as to better understand how it ties to configuring iSCSI in this environment.
Log into your MSA 1040 shared storage device
The MSA 1040 comes with dual controllers with two NICS on each controller for a total of four network interface cards (NICs). The first thing you will do when you are ready to configure the MSA 1040 is to run the Configuration Wizard. At some point in the configuration wizard you will be asked to assign IP addresses to the MSA NICs. Please consider configuring a separate “private” IP scheme for the storage network. The storage network should always be isolated from your internal network so that the storage traffic doesn’t interfere with your normal network traffic. Normally, your internal network will reside in the 10.0.0.0 network. You will need to VLAN the ports on your network switch in order to do this. That is beyond the scope of this post. In the example below, you’ll notice that the four NICS were configured as such:
MSA Controller A Port 1 (A1) – 192.168.9.7
MSA Controller B Port 1 (B1) – 192.168.9.8
MSA Controller A Port 2 (A2) – 192.168.9.9
MSA Controller B Port 2 (B2) – 192.168.9.10

From a cabling standpoint, on MSA Controller A, we have cabled port A1 to Network Switch 1 and port A2 to Network Switch 2 for redundancy. We’ve done the same for MSA Controller B. On MSA Controller B, we have cabled port B1 to Network Switch 1 and port B2 to Network Switch 2. We have a total of four different paths going through two network switches for maximum resiliency. We can lose a controller AND a network switch and still maintain connectivity to the storage.
Configure Hyper-V Host Storage Network
As stated in the Equipment section at the beginning of this post, each Hyper-V host server has 6 NICs. We are using 2 of those NICs on each host for the storage network. We are also teaming the two storage NICs. Of course, the storage network on the Hyper-V host must reside on the same network as the MSA 1040 storage network. In our example, that is the 192.168.9.0 network. See the example in the figure below. We have configured the storage network for both Hyper-V hosts as such:
Hyper-V Host 1 (MSA Storage Team) – 192.168.9.3
Hyper-V Host 2 (MSA Storage Team) – 192.168.9.4

Configure MPIO on Hyper-V Host/s
Before you continue, you must add the MPIO (Multi-Patch I/O) which is built into the Windows Server 2012 R2 operating system. To do this, just open Server Manager on each Hyper-V host and select Manage, then Roles and Features. Complete the Add Roles and Features wizard to install the MPIO feature to your Hyper-V Host/s. After the MPIO feature is installed, configure MPIO by opening Server Manager, Tools, then MPIO. Select the Discover Multi-Paths tab, check the Add support for iSCSI devices and select OK. This will require a REBOOT of the Hyper-V Host server.

Configure iSCSI Initiator on Hyper-V Host/s
Now it is time to configure the iSCSI Initiator on the Hyper-V host server. To do this, from Server Manager select Tools, then iSCSI Initiator.

On the Targets tab, enter in one of the IP addresses you assigned to the MSA 1040 NICs in Configure HP MSA 1040 Storage Network section at the beginning of this blog post. In the example below, we used the first IP address of 192.168.9.7 and selected Quick Connect. It will discover the iSCSI target and display it in the Discovered Targets box and the status will state “Connected” (see image below).

Once the target is discovered, select Properties for the connected iSCSI target. You will notice the image below. What are we seeing here? Each Identifier represents a NIC or path on the MSA 1040 storage. Remember, in our configuration, we have 4 NIC’s on the HP MSA 1040 (2 on MSA controller A and 2 on MSA Controller B). You must add each Identifier manually by selecting Add Session.

Once you’ve selected Add Session, you will be presented with the Connect to Target screen below. Make sure you check the boxes below, especially the Enable multi-path checkbox and select Advanced.

In the Advanced Settings, for the Local adapter select Microsoft iSCSI Initiator from the drop-down menu. For the Initiator IP, select the Hyper-V Host 1 MSA Storage Team (192.168.9.3 in this example). You configured this in the Configure Hyper-V Host Storage Network section earlier in this blog post. For the Target portal IP, select the first IP address of the MSA 1040 storage (192.168.9.7 in this example). You configured this in the Configure HP MSA 1040 Storage Network section earlier in this blog post.
* You will need to do this for all 4 NICs/paths on each Hyper-V Host.

At this point you are pretty much done if you are OK with all the default settings. However, if you choose to customize the configuration each of the devices you just added above, select Devices from the iSCSI Initiator Properties screen (below).

On the Devices screen, you will notice all the disks or LUNS associated with the devices (sessions) you added. So what are we looking at? Notice the GREEN highlighted areas in the image below for Disk 1 and Disk 2. Don’t worry about LUN 0. Since our example included 4 NICs or paths on the MSA 1040 storage device, you will have 4 disks or LUNS for each device. In the example below, you don’t see the 4th device because you would need to scroll down. So why are there two disks associated with each device (Disk 1 and Disk 2)? The reason for this is because before we configured MPIO and iSCSI on the Hyper-V host, we presented two disks/LUNS from the MSA 1040 storage unit to the Hyper-V host server. We presented a Quorum LUN and a Data LUN. This is not relative to the iSCSI configuration but I thought it was important to understand what you are viewing in the image below.

To configure the MPIO Policy for each disk/LUN, select the disk, then select MPIO. You can configure the MPIO Policy several different ways. The default is Round Robin With Subset. This is what we used in our configuration example.


If you selected the Details for each Path ID, you’d notice that each one with have a different Target Portal IP address (one for each NIC on the MSA 1040).

I wanted to give props to the post below. It definitely helped me wrap my head around the process. Thanks mate!

четверг, 17 марта 2016 г.

Modify OWNER on all tables simultaneously in PostgreSQL Database

1) pg_dump -s YOUR_DB | grep -i 'owner to' | \
sed -e 's/OWNER TO .*;/OWNER TO NEW_OWNER;/i' | \
psqL YOUR_DB
 
2) 
 
Tables
SELECT 'ALTER TABLE '|| schemaname || '.' || tablename ||' OWNER TO my_new_owner;' FROM pg_tables WHERE NOT schemaname IN ('pg_catalog', 'information_schema') ORDER BY schemaname, tablename;


Sequences
SELECT 'ALTER SEQUENCE '|| sequence_schema || '.' || sequence_name ||' OWNER TO my_new_owner;'
FROM information_schema.sequences WHERE NOT sequence_schema IN ('pg_catalog', 'information_schema')
ORDER BY sequence_schema, sequence_name;
 
 
Views
SELECT 'ALTER VIEW '|| table_schema || '.' || table_name ||' OWNER TO my_new_owner;' FROM information_schema.views WHERE NOT table_schema IN ('pg_catalog', 'information_schema') ORDER BY table_schema, table_name;


This generates all the required ALTER TABLE / ALTER SEQUENCE / ALTER VIEW statements, copy these and paste them back into plsql to run them.
Check your work in psql by doing:
\dt *.*
\ds *.*
\dv *.*

пятница, 11 марта 2016 г.

Формат конфигурационного файла программы запуска 1CEStart

 
Формат конфигурационного файла программы запуска Файл расположен в каталоге %APPDATA%\1C\1CEStart (%ALLUSERSPROFILE%\1C\1CEStart, если есть нужда установки единых настроек для всех пользователей ПК разом)
В конфигурационном файле содержится следующая информация:
- Версия платформы, которую нужно использовать по умолчанию;
- Расположение списков общих баз;
- Список каталогов с установленными версиями;
- Список каталогов с дистрибутивами;
- Расположение общего конфигурационного файла.
Файл представляет собой текстовый документ в кодировке UTF-16LE и содержит строки формата Параметр=Значение
Описание параметров DefaultVersion - определяет версию, используемую по умолчанию. Допускается наличие нескольких строк с таким параметром.
Пример 1: DefaultVersion=8.2-8.2.9.150
Данная строка означает, что при попытке запуска информационной базы с указанием версии 8.2 будет использоваться версия 8.2.9.150.
Пример 2: DefaultVersion=8.2.9-8.2.9.100
Данная строка означает, что при попытке запуска информационной базы с версией 8.2.9 будет использоваться версия 8.2.9.100.
CommonInfoBases - указывает путь и имя файла со списком общих информационных баз.
InstalledLocation - содержит указание на каталог, в который выполнена установка 1С:Предприятие. По умолчанию это значение C:\Program Files\1Cv82.
DistributiveLocation - содержит указание на каталог, в котором будет производится поиск новой версии для автоматической установки.
CommonCfgLocation - указывает путь и имя общего конфигурационного файла. Допускается наличие нескольких строк с таким параметром.
InstallComponents - В локальном конфигурационном файле (1CEStart.cfg) содержит перечень установленных компонент. Общий файл для всех пользователей компьютера находится в каталоге \Documents and Settings\All Users\Application Data\1C\1CEStart.

В общем конфигурационном файле (1CESCmn.cfg) содержит перечень компонент, которые необходимо установить (формируется администратором системы).
Содержит строку компонентов с признаком необходимости установки, разделенных пробелом:- 0 — не устанавливать,
- 1 — устанавливать.

Возможны следующие компоненты:
- DESIGNERALLCLIENTS — все клиенты и конфигуратор.
- THINCLIENT — тонкий клиент для клиент-серверного варианта работы.
- THINCLIENTFILE — тонкий клиент с возможностью работы с файловыми информационными базами.
- SERVER — сервер 1С:Предприятия. Если программа установки запускается из программы запуска, то сервер будет установлен как приложение.
- WEBSERVEREXT — компоненты расширения для веб-сервера.
- CONFREPOSSERVER — сервер хранилища конфигураций 1С:Предприятия.
- SERVERCLIENT — компоненты для администрирования кластера серверов 1С:Предприятия.
- CONVERTER77 — конвертер информационных баз из версии 1С:Предприятия 7.7.
- LANGUAGES — список языков интерфейса для установки. Если указано несколько языков, они перечисляются через ",". Перечень кодов языков локализации см. здесь.
Пример: LANGUAGES=RU,UK,BG
Пример параметра: InstallComponents=THICKCLIENT=0 THINCLIENT=1 WEBSERVEREXT=0 SERVER=0 CONFREPOSSERVER=0 CONVERTER77=0 SERVERCLIENT=1 LANGUAGES=RU,EN

В файле для всех пользователей 1CEStart.cfg могут быть указаны все настройки, аналогичного файлам пользователей, но интерактивные режимы редактирования настроек изменяют настройки в файле пользователя.
Инсталлятор записывает в All Users\Application Data\1C\1CEStart\1CEStart.cfg ключи InstalledLocation и InstallComponents.
При использовании настроек из общего конфигурационного файла и файла текущего пользователя, если ключ присутствует в обоих файлах:
Более высокий приоритет общего файла настроек для ключей: InstallComponents
Более высокий приоритет файла настроек текущего пользователя для ключей: DefaultVersion
UseHWLicenses
Остальные ключи, объединяются.
ConfigurationTemplatesLocation - указывает путь к каталогу шаблонов конфигураций. Может быть более одной записи.
Если параметр присутствует и в локальном и общем конфигурационном файле, то параметры анализируются в следующем порядке:- параметры DefaultVersion, InstallComponents в порядке описания в локальном файле, затем в порядке описания в общем файле;
- параметры InstalledLocation, DistributiveLocation, CommonInfoBases в порядке описания в общем файле, затем в порядке описания в локальном файле;
- параметры CommonCfgLocation только в локальном файле;
- параметр InstallComponents используется из общего файла (если указано) и замещает значение в локальном файле, если не указано — используется значение из локального файла.
UseHwLicenses - указывает необходимость поиска локального ключа защиты.
Пример параметра: UseHWLicenses=0 - поиск аппаратного ключа не выполняется
Пример конфигурационного файла:
Код
DefaultVersion=8.2-8.2.8.256
DefaultVersion=8.2.8-8.2.8.256
DefaultVersion=8.2.9-8.2.9.14
DefaultVersion=8.3-8.3.10.27
CommonInfoBases=\\net\1cv8\mainBases.v8i
CommonInfoBases =\\net\1cv8\backBases.v8i
InstalledLocation=C:\Program Files\1cv82
InstalledLocation=C:\Program Files\1cv83
DistributiveLocation=\\net\1cv82\
DistributiveLocation=\\net\1cv83\
CommonCfgLocation=\\net\1cv8\1CESCmn.cfg