Walery Wysotsky

апр 182020
 

One time I needed to use a counter for some heavy loaded process in multithread environment. As usual, I use the class java.util.concurrent.atomic.AtomicInteger, the methods incrementAndGet and decrementAndGet. But when I put these methods in only two places, absolutely synchronized by calls (increment and decrement counter in short time gap), I got a strange behavior with the counter — it constantly goes down to negative values. When I tried to view source code (OpenJDK 8), I saw this:

/**
     * Atomically increments by one the current value.
     *
     * @return the updated value
     */
    public final int incrementAndGet() {
        return unsafe.getAndAddInt(this, valueOffset, 1) + 1;
    }

So, instead of incrementing value concurrently and returning new value after this, we have a function call, which returns a current value and increments value by one in the same place. May be this function (getAndAddInt) really increments value of AtomicInteger… or may be not, in this place we don’t know, because we know nothing about new value — we simply return old value + 1.

I found the same behavior in OpenJDK11 source code:

public final int incrementAndGet() {
    return U.getAndAddInt(this, VALUE, 1) + 1;
}

And the same code up to OpenJDK14: https://github.com/openjdk/jdk14u/blob/master/src/java.base/share/classes/java/util/concurrent/atomic/AtomicInteger.java

Moreover, I wrote simple code with a volatile field and two methods for increasing/decreasing this field with ReentrantLock. And using this methods in the same places, where I used AtomicInteger methods, I got a different result — my counter was increased and decreased and had more plausible value, than AtomicInteger.

мая 192018
 

Для подключения к экрану виртуальной машины, расположенной на XenServer необходимо:

  1. Получить номер домена виртуальной машины (выполняется на консоли XenServer):
    xe vm-list params=dom-id name-label=[vm name] | grep dom-id
  2. Получить порт VNC для полученного домена (выполняется на консоли XenServer):
    xenstore-read /local/domain/[domain]/console/vnc-port
  3. Подключится посредством VNC ([port] – последние две цифры вывода предыдущей команды:
    vncviewer -via root@[xenserver] localhost:[port]

Все вместе в одном скрипте xen_vm_screen.sh, выполняется на удаленном компьютере:

#!/bin/bash
XEN_HOST=$1
VM=$2
XEN_USER=root
DOMAIN=`ssh $XEN_USER@$XEN_HOST "xe vm-list params=dom-id name-label=$VM | awk -F ':' '{gsub(/[ \t]+/, \"\", \\\$2); print \\\$2}'"`
VM_PORT=`ssh $XEN_USER@$XEN_HOST "xenstore-read /local/domain/$DOMAIN/console/vnc-port"`
vncviewer -via $XEN_USER@$XEN_HOST localhost:${VM_PORT:2:2}

Запускать:

bash ./xen_vm_screen.sh vm_host_name vm_name
сен 072016
 

На основе: Cisco SCP getting privileged denied

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

Privilege denied

При этом SCP на устройстве включено.

Для исправления достаточно добавить в настройки:

aaa authorization exec default local none
сен 042016
 

На основе Changing a RAID-10 into a RAID-5

Обычно считается, что лучшим вариантом организации дисков на бекап-сервере является RAID5, так как он обеспечивает достаточно хорошее соотношение цена/объем. К сожалению при увеличении количества дисков начинают сказываться недостатки RAID5, в частности надежность и скорость восстановления. Например при наличии на сервере RAID5 из 6 (шести) SATA дисков (даже достаточно надежных, например WD Re), при замене одного диска, время восстановления массива составляет около 10 часов (в моем случае). На время восстановления резервирование естественно отсутствует, нагрузка на диски повышается, что увеличивает вероятность сбоя оставшихся дисков, а уж если все диски одной и той же серии, вероятность, что во время восстановления испортится еще один диск увеличивается еще больше.
В связи с этим было принято решение преобразовать существующий дисковый массив из RAID5 в RAID10 с добавлением еще двух дисков, что теоретически должно было привести к увеличению скорости работы сервера и увеличению надежности.

Continue reading »

июл 192016
 

На основе: Начальная настройка коммутатора HP 1910 серии

Общеизвестно и всячески подчеркивается HP, что многие коммутаторы HP (HPE) настраиваются через web-интерфейс. Немного менее известно, что полноценная настройка большого количества коммутаторов также возможно через командную строку (например 1910, 1920).

Continue reading »

фев 272016
 

Когда вы пробуете получить доступ к консоли HP ILO2 посредством новых версий OpenSSH, вы увидите ошибку.
Для OpenSSH v.6
# ssh ilouser@iloserver
Received disconnect from iloserver: 2: Client Disconnect

Решение: добавьте параметр -o MACs=hmac-sha1 при вызове ssh:

# ssh -o MACs=hmac-sha1 ilouser@iloserver
ilouser@iloserver's password:

Для OpenSSH v.7
# ssh ilouser@iloserver
Unable to negotiate with UNKNOWN: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

Решение: добавьте параметры -o KexAlgorithms=diffie-hellman-group1-sha1 -o MACs=hmac-sha1 при вызове ssh:

# ssh -o KexAlgorithms=diffie-hellman-group1-sha1 -o MACs=hmac-sha1 ilouser@iloserver
ilouser@iloserver's password:

фев 272016
 

Из Pinoy UNIX Administrations

Периоодически вам нужно получить быстрый доступ к удаленной консоли сервера (как в HP ILO), но вы не хотите (не имеете возможности) сделать это через веб браузер. Существует возможность получить такой доступ через SSH (только текстовая консоль).

  1. Подключитесь через SSH к консоли HP ILO.
    # ssh ilo_admin@ip_address

  2. Введите логин (выше) и пароль для доступа к ILO. После этого вы увидите запрос ILO:
    hpILO->

  3. Для доступа к консоли сервера, введите «TEXTCONS»
    hpILO->TEXTCONS

  4. Вы увидите запрос консоли Login:. Введите логин/пароль пользовательского эккаунта сервера для получения доступа.
    Login:
апр 182014
 

Иногда при обновлении прошивки точек доступа UniFi через интерфейс контроллера точки долго висит в состоянии Upgrading (например этим страдают точки доступа UniFi AP PRO). при перезапуске точки доступа ничего не меняется.
В этом случае помогает прошивка точки доступа из командной строки.
Предполагается, что сервер установлен на Linux

  1. Определяете версию контроллера и код прошивки:
    Версия: на сервере выполняете команду

    ls -l /usr/lib/unifi/dl/firmware/BZ2/
    

    полученный каталог и будет номером версии

    Код прошивки определяется по таблице:
    Continue reading »

авг 072013
 
  1. В файле /etc/yum.repos.d/CentOS-Base.repo в секции [base] установить enabled=1
  2. sed -i 's/enabled=0/enabled=1/g' /etc/yum.repos.d/CentOS-Base.repo
  3. Для XenServer 6.2, 6.5 в файле /etc/yum.repos.d/Citrix.repo в секции [citrix] установить enabled=0
  4. sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/Citrix.repo
  5.  rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/$(uname -i)/epel-release-5-4.noarch.rpm
     cd /tmp
     wget https://yum.puppetlabs.com/el/5/products/$(uname -i)/puppetlabs-release-5-10.noarch.rpm
     rpm -Uvh puppetlabs-release-5-10.noarch.rpm
     yum install puppet
    

    настроить /etc/puppet/puppet.conf, после чего

     chkconfig puppet on
     /etc/init.d/puppet start
    

Также я рекомендую использовать xs_patcher для обновления XenServer.

авг 072013
 

Внимание: все операции производятся только с первыми двумя разделами RAID, третий раздел не изменяется

В связи с тем, что обновление XenServer представляет собой установку нового XenServer с сохранением виртуальных машин, но потерей всех изменений, которые делались вручную на сервере (установленное ПО, изменение/добавление настроек через консоль и т.п.), обновление XenServer заключается в новой установке и подключении старых виртуальных машин.

Основано на: http://support.citrix.com/article/CTX120962

  1. Бэкап всего, что есть (на всякий случай), либо вручную:
    xe vm-export vm=имя_виртуальной_машины filename=имя_файла compress=true
    ...
    xe pool-dump-database file-name=имя_дампа.dump
    

    либо с помощью: XENBack

  2. Экспорт метаданных
    xe vm-export metadata=true --multiple filename=VMEXPORT

    Внимание: сохраните получившиеся файлы VMEXPORT… на другом компьютере

  3. Continue reading »