Tuesday, October 6, 2015

Vmware. Задание policy path для LUN-а в ESXi


Нужна всего пара команд.
Можно делать через vSphere CLI или напрямую через SSH консоль.
  1. Вывод списка подключенных LUN'ов (device)
    esxcli nmp device list
    Например:
    naa.600a0b80003ac474000006884b9ef497
        Device Display Name: DS3400_SQLTest
        Storage Array Type: VMW_SATP_LSI
        Storage Array Type Device Config: SATP VMW_SATP_LSI does not support device configuration.
        Path Selection Policy: VMW_PSP_MRU
        Path Selection Policy Device Config: Current Path=vmhba2:C0:T1:L20
        Working Paths: vmhba2:C0:T1:L20
  2. Задание path policy для LUN'а.
    Выбираем нужный LUN и берем его device id, например naa.600a0b80003ac474000006884b9ef497
    Выполняем команду
    esxcli nmp device setpolicy --psp VMW_PSP_MRU --device naa.600a0b80003ac474000006884b9ef497
    Здесь мы задали для девайса naa.600a0b80003ac474000006884b9ef497 path policy VMW_PSP_MRU, т.е. политику наиболее часто используемого пути.
Подробности читать в мауале vSphere Command-Line Interface Installation and Reference Guide стр. 85.
Читать до полного просветления и НЕ БАЛОВАТЬСЯ этой настройкой.
Один раз сделал - и НЕ ТРОГАЙ без ОЧЕНЬ веской причины!

Vmware. Flex x240. Первоначальная настройка UEFI для VMware ESXi

​Для VMware ESXi рекомендуется такие настройки UEFI:
  • System Settings
    • Operating Modes
      • Choose Operating Mode - Custom
      • Power/Performance Bias - OS Controlled
      • Memory Power Management - Disable
      • Memory Speed - Max Performance
      • Turbo Mode - Enable
      • CPU C-States - Enable
      • C1 Enhanced Mode - Enable
      • QPI Link Frequency - Max Performance
    • Power
      • Workload Configuration - Balanced
      • Active Energy Manager - Capping Enabled
  • Для сетевого адаптера включить поддержку SR-IOV.

Vmware. Windows 2008-2012. На виртуалке появляется лишний дуплицирующий IP адрес

​На виртуалке с Windows 2008, 2012 после настройки статического IP адреса может появится лишний дуплицирующий IP адрес вида 169.254.x.x.
Решение из статьи VMwareKB 1028373 False duplicate IP address detected on Microsoft Windows Vista and later virtual machines on ESX/ESXi when using Cisco devices on the environment (1028373)
  • Выключить виртуалку.
  • Перенастроить сетевой адаптер на vSwitch без рабочего аплинка.
  • Включить виртуалку и залогиниться на нее.
  • Зайти в реестр и задать значение параметра ArpRetryCount = 0 в ветке реестра
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  • Выключить виртуалку.
  • Перенастроить сеть на vSwitch с рабочим аплинком.
  • Включить виртуалку.
Альтернативное решение - отключить gratuitous ARP на коммутаторах Cisco:
# no ip gratuitous-arps

Vmware. Эталонный образ сервера Windows Server


  1. Create virtual machine
    • 4 CPU cores (default)
    • 4 GB RAM (default)
    • 40GB HDD SCSI (0;0) Thin Provision
    • SCSI controller LSI Logic SAS. For VM with high IO load use VMware Paravirtualization (VM PVSCSI)
    • Virtual Machine version 8 (default)
    • use VMXNET3 network adapter
    • Use EFI boot firmware
  2. Install Windows Server 2012
  3. Windows settings
    • install VMware Tools
    • open Control Panel
      • check Date and Time settings
      • check Language Settings (ENG - UKR - RUS)
      • Power Options
        • set High Performance
        • set Turn off the display - Never
      • Region settings
        • check settings
        • Advanced - Copy Settings... - copy settings to welcome screen and New  user account
      • System - Change settings
        • Allow remote connections to this computer
        • set computer name
        • temporary join to Active Directory domain for Windows Update. After updating Windows - remove server form Active Directory
        • Advanced - Startup and Recovery settings - use Small memory dump
    • open cmd with Admin rights and run (it disables hibernation): powercfg -h off
    • select disk C: properties - uncheck Allow files on this drive to have contents indexed in addition to file properties - Apply to C:\ only
    • enable File and Printer Sharing in Windows Firewall for Domain network
    • after installing all Windows Updates
      • cleanup system
        to analyze system run
        dism /Online /Cleanup-Image /AnalyzeComponentStore

        to cleanup system run
        dism /Online /Cleanup-Image /StartComponentCleanup
    • after cleanup system
      • disable swap file and reboot
      • defragment system disk C:
      • enable swap file and reboot
  4. В конце можно финализировать образ
    sysprep /generalize /oobe /shutdown

http://blog.solori.net/2010/09/30/in-the-lab-windows-server-2008-r2-template-for-vmware/
http://www.mikes.eu/index.php/how-to/284-how-to-build-a-windows-2008-r2-vmware-template-2.html
http://willcode4foodblog.wordpress.com/2013/03/22/creating-a-server-2012-golden-image-with-sysprep-and-vmware-workstation-part-2-of-2/

VCSA 51. Интеграция с Active Directory


  1. In the "VMware vCenter Server Appliance" web site got to vCenter Server -> Authentication
    • Check "Active Directory Enabled"
    • Eneter values to fields:
      • Domain - domain name.
      • Administrator user - user principal name (UPN) with administrative rights in the domain.
      • Administrator password - password
    • For example:
  2. Go to vSphere Web Client with root account
    • Go to Administration -> Sign-On and Discovery -> Configuration -> Identity Sources
    • Click the + (green) symbol (Add Identity Source) and fill in the required information:
      • Name - Anything you want to refer to this Identity source as (typically domain name)
      • Primary Server URL: ldap://<domain server FQDN>
      • Secondary Server URL: <optional>
      • Base DN for users: distinguished name (DN) of object unit (OU) with users
      • Domain Name: <Domain Name>
      • Domain alias: <NetBIOS domain name>.
        WARNING!!! You must fill out this field. If you dont - you can't login to vSphere Web Client with AD login <domain>\<username> and option "Use Windows session authentication" don't work.
      • Base DN for groups: distinguished name (DN) of object unit (OU) with groups
      • Authentication Type: (How you want to authenticate the initial connection to your domain)
    • For example:
      • Name - MyDomain
      • Primary Server URL: ldap://mydom-dc1.com
      • Secondary Server URL: ldap://mydom-dc2.com
      • Base DN for users: OU=Users,OU=IT,DC=mydomain,DC=com
      • Domain Name: mydomain.com
      • Domain alias: mydomain
      • Base DN for groups: OU=Groups,OU=IT,DC=mydomain,DC=com
      • Authentication Type: Reuse Session
    • Select your AD server URL and click on the blue dot with an arrow ("Add to default domains").
      WARNING!!! When your domain appears in default domains list click on the blue disk icon to save your change, otherwise you will be wondering why it is not working as expected.
    • Go to Administration -> Access -> SSO Users and Groups -> Groups
      • Select internal group __Administrators__
      • Click "Add Principals"
      • Find user or group in AD domain and add to group __Administrators__
More information can find in this articles:
VMware vCenter 5.1 Installation: Part 9 (Optional SSO Configuration)
Unable to login to vCenter Server after upgrading to vCenter Server 5.1

Vmware. Linux VM. Решение проблемы - разрешение экрана при установке Linux слишком мало

​Решение для Oracle Linux, но, наверно, сработает и для других
  • На экране установки выбираем пункт "Troubleshooting".
  • На следующем экране выбираем пункт "Install Oracle Linux 7.0 in basic graphics mode" и жмем клавишу Tab.
  • Далее возможны три варианта:
    • изменяем параметр xdriver=vesa на xdriver=vmware и жмем Enter.
      Если не срабатывает пробуем следующий вариант.
    • изменяем параметр xdriver=vesa на xdriver=vmware, добавляем параметр inst.resolution=1280x800 и жмем Enter.
      Если не срабатывает пробуем следующий вариант.
    • оставляем параметр xdriver=vesa без изменений, добавляем параметр inst.resolution=1280x800 и жмем Enter.

Vmware. How-to enable SSH for ESXi


  1. Go to the ESXi console and press alt+F1
  2. Type: unsupported
  3. Enter the root password
  4. At the prompt type “vi /etc/inetd.conf
  5. Look for the line that starts with “#ssh” (you can search with pressing “/”)
  6. Remove the “#” (press the “x” if the cursor is on the character)
  7. Save “/etc/inetd.conf” by typing “:wq!”
  8. Reboot server or restart inetd service with command kill -HUP `cat /var/run/inetd.pid`;
Source: link1, link2

TSM Server. Как удалить определенную Legacy резервную копию с сервера

​Официально есть команда по удалению резервных копий. Но она работает только для VSS резервных копий.
Legacy резервные копии официально рекомендуется проводить по цепочке: active backup - inactive backup - и потом согласно политик inactive backup-ы будут удаляться.
Есть ещё один способ, но по-моему не официальный (в смысле если что набедокурите мы ответсвенности не несём, так что будьте внимательны и аккуратны) через консоль администирования TSM (dsmadmc).
Определяете объёкты, которые вам нужно удалить
select filespace_name,hl_name,ll_name,state,object_id from backups where node_name='<node_name_for_the_sql_backup>' ;
node_name_for_the_sql_backup - большими символами.
Удаляете выбраные объекты командой, одна команда - один объёкт:
delete object <object_id>

TSM Server. Сброс пароля для пользователя admin в Tivoli Storage Manager server


  1. Останавливаем службу TSM server
    service tsminst1_dsmserv.rc stop
    или
    kill `cut -sd " " -f 4 /tsm/tsminst1/dsmserv.v6lock`
  2. Заходим на сервер под пользователем, под которым запускается сервер TSM (tsminst1)
  3. Запускаем сервер, но не как службу, а как обычную программу (foreground)
    Starting the server from the user ID that owns the server instance
    • Перед запуском сервера запускаем db2profile
      ./home/tsminst1/sqllib/db2profile
    • Переходим в рабочий каталог сервера TSM
      cd /tsm/tsminst1
    • Запускаем сервер командой
      /opt/tivoli/tsm/server/bin/dsmserv
  4. И мы сразу попадаем в консоль сервера TSM
  5. Для сброса пароля выполняем команду UPADTE ADMIN
    UPDATE ADMIN admin <new_password>
  6. Все. Можно останавливать сервер и перезапускать его как обычно.
    Я это попробовал сделать без перезагрузки сервера (команда HALT - остановить TSM сервер, service tsminst1_dsmserv.rc start - запуск службы сервера). Но что-то пошло не так и выдавало ошибки. После перезагрузки всего сервера все запустилось норм.

TSM Server. Полное восстановление сервера TSM Server


Подробно об этом http://pic.dhe.ibm.com/infocenter/tsminfo/v6r4/topic/com.ibm.itsm.srv.doc/t_scen_srv_recover.html
  1. Устанавливаем на сервер с CentOS Tivoli Storage Manager с нуля как описано в документе
  2. При установке нового сервера необходимо использовать точно такие же пути для установки, пути для базы данных и логов, имя пользователя для старта процесса сервера TSM. А также необходимо подключить все диски и ленточки, на которых хранятся резервные копии со старого сервера и проверить, чтобы пользователь tsminst1 имел доступ к данным резервных копий со старого сервера.
    • Если используется ленточный накопитель ОБЯЗАТЕЛЬНО нужно проверить корректно ли установлены драйвера и доступен ли накопитель. Это можно сделать с помощью утилиты ITDT.
    • Также необходимо проверить права доступа на дсики с резервными копиями для пользователя из под которого будет работать служба dsmserv (у нас это tsminst1).
  3. Для восстановления всего сервера TSM нам будут необходимы резервные копии (instance_dir - рабчий каталог сервера TSM. У нас это /tsm/tsminst1):
    • данных devconfig ({instance_dir}/devconf.dat)
    • данных volhistory ({instance_dir}/volhist.dat)
    • файла dsmserv.opt ({instance_dir}/dsmserv.opt)
    • резервная копия базы данных TSM
  4. После установки сервера как описано в документе из п.1, останавливаем процесс TSM сервера
    service tsminst1_dsmserv.rc stop
  5. Удаляем базу данных, которая создалась при установке. Для этого необходимо зайти под пользователем tsminst1 и выполнить
    cd /opt/tivoli/tsm/server/bin/
    ./dsmserv -u tsminst1 -i /tsm/tsminst1/ removedb TSMDB1
  6. Восстанавливаем из резервных копий файлы devconf.dat, volhist.dat и dsmserv.opt в каталог {instance_dir} (у нас это /tsm/tsminst1).
  7. Восстанавливаем базу данных сервера TSM
    • заходим на сервер под пользователем tsminst1 (под ним будет работать сервер TSM)
    • выполняем восстановление базы данных
      cd /opt/tivoli/tsm/server/bin
      ./dsmserv -u tsminst1 -i /tsm/tsminst1/ restore db
    • если все проходит успешно, можно проверить состояние базы данных
      ./dsmserv -u tsminst1 -i /tsm/tsminst1/ display dbspace
  8. Стартуем сервер в интерактивном режиме и смотрим, что ошибок нет
    • заходим на сервер под пользователем tsminst1 (под ним будет работать сервер TSM)
    • cd /opt/tivoli/tsm/server/bin
    • ./dsmserv -u tsminst1 -i /tsm/tsminst1/
  9. Если все окей и сервер стартует нормально
    • останавливаем сервер командой HALT
    • заходим под пользователем root
    • запускаем службу сервера TSM
      service tsminst1_dsmserv.rc start
  10. Все. Можно подключаться к серверу и работать.

TSM Server. Очистка старых резервных копий базы TSMDB

​Посмотреть список созданных резервных копий базы TSMDB:
query volistory type=dbb
Удалить все резервные копии и оставить за последние 2 недели (например):
delete volhistory type=dbb todate=-14
Подробности:
Managing TSM Database Backups
DELETE VOLHISTORY
QUERY VOLHISTORY

TSM Server. Обновление сервера TSM


  1. Перед обновлением необходимо сделать резервное копирование:
    • базы данных TSM
      backup db type=Full devclass=TSMDB_BACKUP_DEV

      Смотреть за процессом резервного копирования можно командой
      query process
    • файлы volhystory и devconfig
      backup devconfig filenames=/tsm_storage/tsmdb_backup/devconfig_20141215.bak
      backup volhistory filenames=/tsm_storage/tsmdb_backup/volhistory_20141215.bak
    • файл настроек сервера dsmserv.opt
      cp /tsm/tsminst1/dsmserv.opt /tsm_storage/tsmdb_backup/dsmserv_20141215.opt
  2. Скопировать файл с обновлением для сервера в каталог на сервер TSM.
    • сделать файл с обновлением исполняемым. Например,
      chmod a+x 7.1.1.100-TIV-TSMSRV-Linuxx86_64.bin
    • распаковать обновление. Например,
      ./7.1.1.100-TIV-TSMSRV-Linuxx86_64.bin
  3. Подключаемся к серверу TSM и останавливаем его командой HALT.
    Проверить статус службы Tivoli можно линуксовой командой
    service tsminst1 status
  4. Логинимся с правами root и запускаем установку сервера Tivoli командой ./install.sh
  5. Выбираем вариант Update и проходимся по мастеру.
    Можно сначала обновить только серверную часть и потом отдельно Operation Center.
Подробности в статье Linux: Installing a Tivoli Storage Manager server fix pack

TSM Server. Обновление CentOS


  1. Перед обновлением останавливаем службу TSM
    service tsminst1 stop
  2. Запускаем обновление
    yum update
  3. После обновления перезагружаем сервер.
  4. Если обновилась версия ядра Linux, необходимо переустановить драйвер ленточного накопителя
    • останалвиваем службу TSM
      service tsminst1 stop
    • Переустанавливаем драйвер ленточной бибилиотеки
    • Запускаем службу TSM
      service tsminst1 start
  5. Проверяем, что все работает.

TSM OC. Замена самоподписанного сертификата на официальный


  1. You need server sertificates with private key and root and intermidiate sertificates in PFX file.
  2. Copy this PFX file to server with Tivoli Operation Center.
  3. Login to server with installed Tivoli Operation Center to GUI.
  4. Start bash terminal.
  5. You need root access for this actions.
  6. Stop Tivoli Operation Center service
    service opscenter.rc stop
  7. Run utility ikeyman. This utility require GUI.
    <installation_dir>/ui/jre/bin/ikeyman
    <installation_dir> - full path to directory in wich Tivoli Operation Center is installed. By default this is /opt/tivoli/tsm/
  8. Click Key Database File > Open.
    • Key database type - JKS
    • click "Browse..." and go to the following directory
      <installation_dir>/ui/Liberty/usr/servers/guiServer
    • In the guiServer directory, select the gui-truststore.jks file.
    • Click "Open", and click "OK".
  9. Enter the password for the truststore file, and click "OK".
  10. If you lost password for truststore file, you can reset it. See Resetting the password for the Operations Center truststore file.
    You should reset password for truststore file before importing new certificates.
  11. In the Key database content area of the IBM Key Management window, click the arrow, and select Personal Certificates from the list.
  12. Click "Export/Import".
    • select Import Key
    • Key file type - PKCS12
    • click "Browse..." and select PFX file with new server certificates
    • click "OK", enter password for PFX file and click "OK"
    • You will see window Select from Key Label List
    • In this window with Ctrl+LeftClick select all labels and click "OK"
    • In window Change Labels you can change label for imported certificates and click "OK"
  13. Root and intermidiate certificates will be imported to "Signer Certificates", server certifciate - to "Personal Certificates".
  14. In "Personal Certificates" delete "default" certificate. This is auto generated self-signed certificate for Tivoli Operation Center.
  15. Rename imported server certificate to "default".
  16. Close iKeyman.
  17. Start Tivoli Operation Center service
    service opscenter.rc start
  18. Chek in browser that Tivoli Operation Center uses imported server certificate.
Links: Configuring for SSL communication between the Operations Center and the hub server

Tivoli Integrated Portal. Resetting the TIP Admin ID


  1. Go to the TIP bin directory ( default install location is /opt/IBM/tivoli/tipv2 ):
        cd <Install Location>/bin
  2. Run the following wsadmin commands from the TIP bin directory where <tip admin> is the TIP admin ID and <password> is the new password to be used for the TIP admin ID:
        ./wsadmin.sh -conntype none -profileName TIPProfile
        wsadmin>$AdminTask changeFileRegistryAccountPassword {-userId <tip admin> -password <password>}
        wsadmin>$AdminConfig save
        wsadmin>quit
  3. Reboot the system.
  4. Start the TIP server if it is not a service:
        cd <Install Location>/bin
        ./startServer.sh server1
  5. Log in to TIP using the new password.

Tivoli Integrated Portal. How-to install custom SSL certificat


  1. You need:
    • server certificate + intermidiate certificate + root certificate + private key in PFX file
    • to convert certificate files from Windows CR+LF to Linux LF do this:
      • copy files in Windows CR+LF format to Linux server
      • run this command for each file:
        sed 's/$'"/`echo \\\r`/" input.txt > output.txt
    • intermidiate certificate in Base64 Encoded PEM file. New line format should be Linux (LF).
    • root certificate in Base64 Encoded PEM file. New line format should be Linux (LF).
    • copy these 3 files to temporary directory on the TIP server. For example:
      /tmp/ssl/serverssl.pfx
      /tmp/ssl/GeoTrust_Root.pem
      /tmp/ssl/RapidSSL_Interm.pem
  2. Open and login to Tivoli Integrated Portal. Usually this is URL https://<server_name>:16311/ibm/console/logon.jsp
  3. In the left menu open Settings -> WebSphere Administrative Console and click Launch WebSphere Administrative Console
  4. In the left menu open Security -> SSL certificate and key management. In the Related Items list, click Key stores and certificates.
  5. Click NodeDefaultKeyStore. In the Additional Properties list, click Personal certificates and click Import...
  6. Select Key store file. Enter full path to PFX file. For example: /tmp/ssl/serverssl.pfx. Enter password for PFX file and click Get Key File Aliases.
  7. Select the certificate alias to import and assign a new alias name to the imported certificate (for example: rapidssl_2014-2016).
  8. Click OK.
  9. Click Save to save the changes to the WebSphere Application Server master configuration.
  10. Click SSL certificate and key management -> Key stores and certificates -> NodeDefaultKeyStore -> Personal certificates.
  11. Select certificate with alias default and Delete him.
  12. Click Save to save the changes to the WebSphere Application Server master configuration.
  13. Click SSL certificate and key management -> Key stores and certificates -> NodeDefaultTrustStore -> Signer certificates.
  14. Click Add.
  15. Specify the alias name for the new root CA signer certificate (for example: GeoTrust_Root), the certificate file name (for example: /tmp/ssl/GeoTrust_Root.pem), certificate data type (for example: Base64-encoded ASCII data), and click OK.
  16. Click Save to save the changes to the WebSphere Application Server master configuration.
  17. Repeat steps 13 to 15 to import all associated intermediary signer certificates (for example: to import RapidSSL intermidate SSL certificate).
  18. Click SSL certificate and key management -> Key stores and certificates -> NodeDefaultTrustStore -> Personal certificates.
  19. Click Import... (if do not have any SSL certificate in Personal certificates) or select the check box associated with the old SSL certificate and click Replace...
    In our example we will be Import new SSL certificate. So click Import...
  20. Select Key store file. Enter full path to PFX file. For example: /tmp/ssl/serverssl.pfx. Enter password for PFX file and click Get Key File Aliases.
  21. Select the certificate alias to import and assign a new alias name to the imported certificate (for example: rapidssl_2014-2016).
  22. Enter once again password for PFX file and Click OK.
  23. Click Save to save the changes to the WebSphere Application Server master configuration.
  24. Refresh web page and check that new SSL certificate installed correctly to Integrated Solution Console.
  25. Open Tivoli Integrated Portal and also check that new SSL certificate installed correctly.

PS.
This link was really helpfull Replacing existing WebSphere Application Server SSL certificates

Monday, October 5, 2015

BrocadeFC. Подключение FC коммутаторов Brocade между собой


  1. Необходимые условия перед поключением
    • На коммутаторах должны стоять РАЗНЫЕ значения таких параметров
      • Domain ID (по умолчанию стоит 1)
        Лучше устанавливать сразу при первоначальной настройке. Т.к. изменение Domain ID требует полной остановки трафика через свич.
        Можно изменить таким образом:
        switchdisable
        configure
        Configure...

             Fabric parameters (yes, y, no, n): [no] y

                  Domain: (1..239) [1] 10
        Остальные параметры менять не нужно.
      • Switch Name
        Изменить можно всегда. На работу коммутатора никак не влияет.
        switchname <switch_name>
      • Chassis Name
        Изменить можно всегда. На работу коммутатора никак не влияет.
        chassisname <chassis_name>
    • На коммутаторах должны стоять ОДИНАКОВЫЕ значения таких параметров (в скобках указаны значения по умолчанию).
      Узнать значения этих параметров можно из графического интерфейса коммутатора.
      Заходим на коммутатор -> click "Switch Admin" -> click "Show Advanced Mode" -> select tab "Configure" -> select tab "Fabric".
      Изменить их можно с помощью команды configure (аналогично как и при смене Domain ID). Но это требует полной остановки трафика через коммутатор.
      • Resource Allocation Time Out Value (R_A_TOV) [10000]
      • Error Detect Time Out Value (E_D_TOV) [2000]
      • Data field size [2112]
      • Sequence level switching [0]
      • Disable device probing [0]
      • Class F traffic suppression [0]
      • Per-frame route priority [0]
    • Также, есть еще некоторые параметры, которые должны совпадать. Вот цитата из Fabric OS Administrator's Guide (page 64, Inter-switch links)
      There are non-fabric parameters that must match as well, such as zoning. Some fabric services, such as Management Server, must match. If the fabric service is enabled in the fabric, then the switch you are introducing into the fabric must also have it enabled. If you experience a segmented fabric, refer to the Fabric OS Troubleshooting and Diagnostics Guide to fix the problem.
      Но, т.к. у нас один из коммутаторов еще чистый - на это можно не обращать внимание.
  2. При соединении двух коммутаторов один из них будет иметь роль Principal, другой - Subordinate. Выбор роли зависит от двух факторов (link):
       - The switch priority (ie: a switch definitely does wish to be principal). If only one switch wants to be principal, then it wins the election.
       - The WWN of the switch. If multiple switches have equal priority, then the switch with the lowest switch WWN will become the principal.
    Роль Principal отличают такие функции:
       - Maintains time for the entire fabric. Subordinate switches synchronize their time with the principal switch. Changes to the clock server value on the principal switch are propagated to all switches in the fabric.
       - Manages domain ID assignment within the fabric. If a switch requests a domain ID that has been used before, the principal switch grants the same domain ID unless it is in use by another switch.
    Поэтому, если мы хотим, чтобы один из коммутаторов был Principal, перед подключением коммутаторов нужно выполнить такую команду:
    fabricprincipal 1
    И этот коммутатор будет иметь роль Principal.
  3. Если один из коммутаторов уже имел настроенную конфигурацию зон, то эта конфигурация будет загружена и активирована на втором коммутаторе.
  4. Подробнее про соединение двух коммутаторов можно почитать в Fabric OS Administrator's Guide разделы Device login и Inter-switch links.

BrocadeFC. Настройка FC коммутаторов Brocade


  • Базовая конфигурация
    1. Сначала нужно с помощью консольного кабеля прописать сетевой IP адрес для свича. Для этого подключаемся к свичу через консольный кабель, заходим в HyperTerminal и командой ipaddrset прописываем IP адрес.
    2. Настраиваем DNS командой dnsconfig.
    3. Настраиваем NTP и временную зону
      tsclockserver "timesrv1.domain.com;timesrv2.domain.com"
      tstimezone Europe/Kiev
    4. Настраиваем имя свича и шасси
      switchname <switch_name>
      chassisname <chassiss_name>
    5. Настраиваем SysLog
      syslogdipadd <syslog_ip_address>
  • Настройки безопасности
    1. Блокируем Telnet. Т.к. это небезопасный протокол.
      ipfilter --show
      По умолчанию есть две политики: default_ipv4 и default_ipv6. Для блокировки Telnet мы клонируем политику default_ipv4 и добавляем туда правило блокировки порта 23 (Telnet)
      ipfilter --clone BlockTelnet -from default_ipv4
      ipfilter --save BlockTelnet
      ipfilter --addrule BlockTelnet -rule 1 -sip any -dp 23 -proto tcp -act deny
      Сохраняем изменения в политике BlockTelnet и активируем ее.
      ipfilter --save
      ipfilter --activate BlockTelnet
      Проверяем, что политика BlockTelnet активирована
      ipfilter --show
      Name: BlockTelnet, Type: ipv4, State: active
      Rule    Source IP                               Protocol   Dest Port   Action
      1     any                                            tcp       23       deny
      2     any                                            tcp       22     permit
      3     any                                            tcp       23     permit
      4     any                                            tcp      897     permit
      5     any                                            tcp      898     permit
      6     any                                            tcp      111     permit
      7     any                                            tcp       80     permit
      8     any                                            tcp      443     permit
      9     any                                            udp      161     permit
      10    any                                            udp      111     permit
      11    any                                            udp      123     permit
      12    any                                            tcp      600 - 1023     permit
      13    any                                            udp      600 - 1023     permit
    2. Включаем использование Secure File Copy (SCP) протокола
      configure
      Not all options will be available on an enabled switch.
      To disable the switch, use the "switchDisable" command.
      Configure...
        Fabric parameters (yes, y, no, n): [no] n
        System services (yes, y, no, n): [no] n
        ssl attributes (yes, y, no, n): [no] n
        rpcd attributes (yes, y, no, n): [no] n
        cfgload attributes (yes, y, no, n): [no] y
              Enforce secure config Upload/Download (yes, y, no, n): [no] y
              Enforce signature validation for firmware (yes, y, no, n): [no] n
              Add Suffix to the uploaded file name (yes, y, no, n): [no] n
        webtools attributes (yes, y, no, n): [no] n
    3. Включаем использование HTTPS при заходе через Web
      • Генерируем приватный ключ
        seccertutil genkey -keysize 1024 -nowarn
      • Генерируем CSR запрос для создания SSL сертификата и сохраняем этот запрос в файл на другом сервере
        seccertutil gencsr -country UA -state Kiev -locality Kiev -org <org_name> -orgunit IT -cn <FC_switch_FQDN>
        seccertutil export -protocol scp -ipaddr ftpsrv.domain.com -remotedir /var/www/files/san -login user - эта команда сохранит CSR запрос на сервере ftpsrv.domain.com  в папке /var/www/files/san.
      • Генерируем SSL сертификат для свича
        На издающем CA сервере (issuingca.flyuia.com) для создания SSL сертификата выполняем команду
        certreq -submit -attrib "CertificateTemplate:WebServer" filename.csr
        ВНИМАНИЕ!!!! Для избежания проблем, лучше всего после генерации SSL сертификата экспортировать его в бинарном DER формате
      • Устанавливаем SSL сертификат на свич и включаем HTTPS
        seccertutil import -config swcert -nowarn -enable https -protocol scp -ipaddr ftpsrv.domain.com -remotedir /var/www/files/san -certname cert_file_der.cer -login user - эта команда загружает SSL сертификат cert_file_der.cer на свич с сервера ftpsrv.domain.com из папки /var/www/files/san/ и включает использование HTTPS
      • Примечание. В FC коммутаторах FC5022 в составе шасси Flex уже изначально пристутствуют самоподписанные сертификаты для входа через Web и корневой сертификат. Поэтому для этих коммуторов необходимо дополнительно сделать такой шаг. Импортировать таже сертфикаты центров сертификации. Для этого берем два сертфиката: промежуточный и корневой, в формате BASE64 и создаем один файл сертифката по типу:
        -----BEGIN CERTIFICATE-----
        intermediate cert
        -----END CERTIFICATE-----
        -----BEGIN CERTIFICATE-----
        root cert
        -----END CERTIFICATE-----
        Затем импортируем этот комбинированный сертификат в коммутатор командой
        seccertutil import -config cacert -nowarn -protocol scp -ipaddr ftpsrv.domain.com -remotedir /var/www/files/san -certname SSL_package.cer -login user
      • Чтобы при заходе через Web не спрашивало вопросов о недоверенном сертификате, нужно импортировать корневой и промежуточный сертификаты в хранилище браузера и Java. Импорт сертификатов в хранилище Java делается командой:
        cd c:\Program Files\Java\jre6\bin
        keytool -importcert -alias Alias_RootCA -file "RootCA.crt"
        keytool -importcert -alias Alias_IntermCA -file "IntermediateCA.crt"
        При импорте запросит пароль к хранилищу сертификатов. Стандартный пароль для хранилища сертификатов в Java changeit
    4. Включаем аутентификацию через Active Directory
      • Создаем группу, в которую будут включены пользователи с доступом к свичу. Таких групп может быть несколько с разным уровнем доступа. Например, пусть группа в Active Directory называется gr_SAN_Admins. И добавляем нужных пользователей в эти группы в AD.
      • Связываем группу AD и локальную группу свича. Локальную группу нужно выбирать исходя из того какие права хотим выдать пользователям группы в AD.
        ldapcfg --maprole gr_SAN_Admins admin
      • Добавление списка Admin Domains на свиче куда пользователи будут иметь доступ. На наших свичах всего один Active Domain с номером 0.
        • Запускаем ADSI.msc, находим нужного пользователя.
        • Заходим в его свойства на вкладку "Редактор атрибутов". Находим пустой атрибут adminDescription.
        • Устанавливаем значение атрибута adminDescription:
          adlist_<Admin Domains list>_endAd
          <Admin Domains list> - список доступных пользователю Admin Domain разделенных символом нижнее подчеркивание ( _ ). Первый в списке Active Domain будет являться Home Active Domain (homeAD).
          Например, в нашем случае есть только один Active Domain с номером 0. Поэтому мы устанавливаем такое значение атрибута:
          adminDescription = adlist_0_endAd
      • Добавляем контроллеры домена на свич для аутентификации
        aaaconfig --add DC1.domain.com -conf ldap -p 389 -d domain.com
        aaaconfig --add DC2.domain.com -conf ldap -p 389 -d domain.com
      • Включаем аутентификацию через AD
        aaaconfig --authspec "ldap;local"
        Эта команда устанавливает, что пользователь сначала будет аутентифицироваться через Active Directory и, если не смог аутентифицироваться в AD, будет попытка аутентификации с помощью локальной базы пользователей свича.
      • Если все прошло успешно, на свич можно будет зайти с учеткой AD. Имя пользователя при заходе на свич нужно вводить в виде <username>@<domain>. Например: user@domain.com

BrocadeFC. Стандартные пароли для FC коммутаторов Brocade


  • username - Admin
    password - ​password
  • username - USERID
    password - PASSWORD
  • username - root
    password - fibranne

MS CertSvc. Как выдать SSL сертификат с доменного CA для недоменных серверов


  1. Генерируем сертификат на сервере. Сервер может быть не доменным.
  2. Копируем файл CSR запроса на CA сервер и пробуем выполнить PSubmit new request через MMC консоль Certification Authority.
  3. В ответ можем увидеть ошибку:
    The request contains no certificate template information. 0x80094801 (-2146875391)
    Denied by Policy Module  0x80094801, The request does not contain a certificate template extension or the CertificateTemplate request attribute.
  4. Значит запускаем cmd и выполняем команду (пример для выдачи с использование шаблона вэб-сервера):
    certreq -submit -attrib "CertificateTemplate:WebServer" <path_to_CSR_file>
  5. В ответ можем увидеть ошибку:
    The permissions on the certificate template do not allow the current user to enroll for this type of certificate. 0x80094012 (-2146877422)
    Denied by Policy Module
  6. Запускаем MMC консоль и добавляем оснастку Certificate Templates.
  7. Ищем шаблон Web Server. Заходим свойства шаблона на вкладку Security и для Authenticated Users ставим птичку Enroll.
  8. Еще раз выполняем команду из п. 4.
  9. Теперь все должно получится.

SharePoint 2010. При попытке открыть документ на SharePoint 2010 нет кнопки Открыть


Эта ситуация подробно описана в этой статье Missing the open button when opening PDF files from SharePoint 2010.
В кратце, эту проблему можно решить так:
  1. Open Central Administration
  2. Application Management
  3. Manage Web Applications
  4. Select the webapplication to change
  5. Click General Settings in the ribbon
  6. Scroll down to Browser File Handling and select Permissive
  7. Click on the OK button

SharePoint 2010. Как увеличить максимальный объем для шаблона списка, сайта в SharePoint

​При сохранении списка, сайта или библиотеки в SharePoint как шаблона можно увидеть ошибку, что превышен максимальный размер.
Чтобы увеличить максимальный размер для шаблона, выполняем на сервере SharePoint команду:
stsadm -o setproperty -propertyname max-template-document-size -propertyvalue N

где N - размер в байтах.

SharePoint 2010. Если на странице SharePoint 2010 не появляются вертикальные полосы прокрутки

​Вкратце, проблема из-за того, что Microsoft отключает стандартный скроллинг на странице и реализует скроллинг на SharePoint 2010 с помощью своих CSS стилей и JavaScript скриптов. Это сделано для того, чтобы Ribbon bar всегда был сверху при прокрутке страницы.
Из-за этого иногда скроллинг ломается, ели делать свои кастомизации на SharePoint 2010.
Мне помог метод из статьи SharePoint 2010 Scrolling

SharePoint 2010. Clicking the icon in Type column is highlighting the item instead of launching the document

Проблема: при просмотре документов в библиотеке приклике на иконку в колонке Тип (значок связи с документом) документ выделяется, но не открывается.
Решение.
Подробности можно почитать здесь:
Вкратце решение:
  • Создаем текстовый файл с именем fldtypes_docicon.xsl и содержимым:

    <xsl:stylesheet xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" version="1.0" exclude-result-prefixes="xsl msxsl ddwrt" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:ddwrt2="urn:frontpage:internal" ddwrt:oob="true">
        <xsl:output method="html" indent="no"/>
     
      <xsl:template ddwrt:dvt_mode="body" match ="FieldRef[@Name='DocIcon']" mode="Computed_DocIcon_body">
        <xsl:param name="thisNode" select="."/>
        <xsl:param name="folderUrlAdditionalQueryString" select="''"/>
        <xsl:choose>
          <xsl:when test="$thisNode/@FSObjType='1'">
            <xsl:variable name="alttext">
              <xsl:choose>
                <xsl:when test="starts-with($thisNode/@ContentTypeId, &quot;0x0120D5&quot;)">
                  <xsl:value-of select="$thisNode/../@itemname_documentset"/>: <xsl:value-of select="$thisNode/@FileLeafRef"/>
                </xsl:when>
                <xsl:otherwise>
                  <xsl:value-of select="$thisNode/../@listformtitle_folder"/>: <xsl:value-of select="$thisNode/@FileLeafRef"/>
                </xsl:otherwise>
              </xsl:choose>
            </xsl:variable>
            <xsl:variable name="mapico" select="$thisNode/@HTML_x0020_File_x0020_Type.File_x0020_Type.mapico"/>
            <xsl:variable name="folderIconPath">
              <xsl:call-template name="GetFolderIconSourcePath">
                <xsl:with-param name="thisNode" select="$thisNode"/>
              </xsl:call-template>
            </xsl:variable>
            <!-- This is a folder -->
            <xsl:choose>
              <xsl:when test="$RecursiveView='1'">
                <img border="0" alt="{$alttext}" src="{$folderIconPath}" />
                <xsl:choose>
                  <xsl:when test="$thisNode/@IconOverlay != ''">
                    <img src="/_layouts/images/{$thisNode/@IconOverlay.mapoly}" class="ms-vb-icon-overlay" alt="" title="" />
                  </xsl:when>
                </xsl:choose>
              </xsl:when>
              <xsl:otherwise>
                <xsl:variable name="FolderCTID">
                  <xsl:value-of select="$PagePathFinal" />RootFolder=<xsl:value-of select="$thisNode/@FileRef.urlencode" /><xsl:value-of select="$ShowWebPart"/>&amp;FolderCTID=<xsl:value-of select="$thisNode/@ContentTypeId" />&amp;View=<xsl:value-of select="$View"/><xsl:value-of select="$folderUrlAdditionalQueryString"/>
                </xsl:variable>
                <a href="{$FolderCTID}" onmousedown ="VerifyFolderHref(this, event, '{$thisNode/@File_x0020_Type.url}','{$thisNode/@File_x0020_Type.progid}','{$XmlDefinition/List/@DefaultItemOpen}', '{$thisNode/@HTML_x0020_File_x0020_Type.File_x0020_Type.mapcon}', '{$thisNode/@HTML_x0020_File_x0020_Type}', '{$thisNode/@serverurl.progid}')"
                   onclick="return HandleFolder(this,event,&quot;{$PagePathFinal}RootFolder=&quot; + escapeProperly(&quot;{$thisNode/@FileRef}&quot;) + '{$ShowWebPart}&amp;FolderCTID={$thisNode/@ContentTypeId}&amp;View={$View}{$folderUrlAdditionalQueryString}','TRUE','FALSE','{$thisNode/@File_x0020_Type.url}','{$thisNode/@File_x0020_Type.progid}','{$XmlDefinition/List/@DefaultItemOpen}','{$thisNode/@HTML_x0020_File_x0020_Type.File_x0020_Type.mapcon}','{$thisNode/@HTML_x0020_File_x0020_Type}','{$thisNode/@serverurl.progid}','{$thisNode/@CheckoutUser.id}','{$Userid}','{$XmlDefinition/List/@ForceCheckout}','{$thisNode/@IsCheckedoutToLocal}','{$thisNode/@PermMask}');">
                  <img border="0" alt="{$alttext}" title="{$alttext}" src="{$folderIconPath}" />
                  <xsl:choose>
                    <xsl:when test="$thisNode/@IconOverlay != ''">
                      <img src="/_layouts/images/{$thisNode/@IconOverlay.mapoly}" class="ms-vb-icon-overlay" alt="" title="" />
                    </xsl:when>
                  </xsl:choose>
                </a>
              </xsl:otherwise>
            </xsl:choose>
          </xsl:when>
          <xsl:otherwise>
            <xsl:choose>
              <xsl:when test="$IsDocLib">
                <a onfocus="OnLink(this)" href="{$thisNode/@FileRef}" onmousedown="return VerifyHref(this,event,'{$XmlDefinition/List/@DefaultItemOpen}','{$thisNode/@HTML_x0020_File_x0020_Type.File_x0020_Type.mapcon}','{$thisNode/@serverurl.progid}')"
       onclick="return DispEx(this,event,'TRUE','FALSE','{$thisNode/@File_x0020_Type.url}','{$thisNode/@File_x0020_Type.progid}','{$XmlDefinition/List/@DefaultItemOpen}','{$thisNode/@HTML_x0020_File_x0020_Type.File_x0020_Type.mapcon}','{$thisNode/@HTML_x0020_File_x0020_Type}','{$thisNode/@serverurl.progid}','{$thisNode/@CheckoutUser.id}','{$Userid}','{$XmlDefinition/List/@ForceCheckout}','{$thisNode/@IsCheckedoutToLocal}','{$thisNode/@PermMask}')">
                  <xsl:choose>
                    <xsl:when test="not ($thisNode/@IconOverlay) or $thisNode/@IconOverlay =''">
                        <xsl:choose>
                            <xsl:when test="not ($thisNode/@CheckoutUser.id) or $thisNode/@CheckoutUser.id =''">
                                <img border="0" alt="{$thisNode/@FileLeafRef}" title="{$thisNode/@FileLeafRef}" src="/_layouts/images/{$thisNode/@HTML_x0020_File_x0020_Type.File_x0020_Type.mapico}"/>
                            </xsl:when>
                            <xsl:otherwise>
                                <xsl:variable name="alttext"><xsl:value-of select="$thisNode/@FileLeafRef"/><xsl:text disable-output-escaping="yes" ddwrt:nbsp-preserve="yes">&#10;</xsl:text><xsl:value-of select="$thisNode/../@managecheckedoutfiles_header_checkedoutby"/>: <xsl:value-of select="$thisNode/@CheckoutUser.title"/></xsl:variable>
                                <img border="0" alt="{$alttext}" title="{$alttext}" src="/_layouts/images/{$thisNode/@HTML_x0020_File_x0020_Type.File_x0020_Type.mapico}" />
                                <img src="/_layouts/images/checkoutoverlay.gif" class="ms-vb-icon-overlay" alt="{$alttext}" title="{$alttext}" />                           
                            </xsl:otherwise>
                        </xsl:choose>                 
                    </xsl:when>
                    <xsl:otherwise >
                        <img border="0" alt="{$thisNode/@FileLeafRef}" title="{$thisNode/@FileLeafRef}" src="/_layouts/images/{$thisNode/@IconOverlay.mapico}" />
                      <img src="/_layouts/images/{$thisNode/@IconOverlay.mapoly}" class="ms-vb-icon-overlay" alt="" title="" />
                    </xsl:otherwise>
                  </xsl:choose>
                </a>
              </xsl:when>
              <xsl:otherwise>
                <img border="0" src="/_layouts/images/{$thisNode/@HTML_x0020_File_x0020_Type.File_x0020_Type.mapico}">
                  <xsl:attribute name="alt">
                    <xsl:value-of select="$thisNode/@Title"/>
                  </xsl:attribute>
                  <xsl:attribute name="title">
                    <xsl:value-of select="$thisNode/@Title"/>
                  </xsl:attribute>
                </img>
              </xsl:otherwise>
            </xsl:choose>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:template>
     
    </xsl:stylesheet>
  • Сохранить файл и скопировать его на SharePoint сервер в папку c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\template\layouts\XSL
  • Выполнить ресет IIS'а командой iisreset

SharePoint 2010. MSIE постоянно спрашивает логин и пароль при заходе на сайт SharePoint 2010

Проблема: при заходе на сайт SharePoint 2010 MSIE постоянно спрашивает логин/пароль. Добавление сайта в список надежных узлов, принудительное добавление сайта в зону "Местная интрасеть", выставление опции "Автоматически входить в сеть с текущим именем пользователя и паролем" не помогает.
Решение:
  • Заходим на сервер SharePoint в оснастку IIS Manager.
  • Там находим нужный SharePoint сайт и заходим в опции Authentication.
  • Кликаем на "Windows Authentication" -> "Advanced Settings..."
  • Включаем опцию "Enable Kernel-mode authentication"
  • Проверяем
Примечание:
Если в SharePoint 2010 Central Administration изменить настроки Authentication Provider'a Defalut, то нужно еще раз зайти в IIS Manager и снова выставить эту опцию.

MS SQL Server. Ошибка OLE DB provider SQLNCLI11 for linked server unable to begin a distributed transaction

Проблема:
Есть два SQL сервера. На одном из них (local) настроен Linked Server на другой сервер (remote). На local сервере создали триггер для таблицы. И в этом триггере есть запрос через Linked Server на remote SQL сервер. При попытке вызова триггера выдается ошибка "The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "<linked_server>" was unable to begin a distributed transaction."
Решение:
Необходимо на обоих SQL серверах настроить службу Distributed Transaction Coordinator. Инструкция по настройке и рекомендуемые параметры для Windows Server 2008 описаны в статье Microsoft Technet Enable Network DTC Access

MS SQL Server. Настройка Windows аутетификации для linked серверов


  1. Для примера возьмем ситуацию. Есть такая схема: <клиентский ПК> - <SQL Server 1> - <SQL Server 2>
    SQL Server 2 - это linked сервер для SQL Server 1
    Нужно настроить Windows аутентификацию между SQL Server 1 и SQL Server 2.
  2. Обязательные условия:
    • службы SQL Server-а должны быть запущены от имени доменной учетной записи
    • учетные записи, которые будут работать с linked сервером должны быть зарегистрированы на обоих SQL серверах и им должны быть выданы соответствующие права
  3. Тестовая конфигурация выглядит так:
    SQL Server 1: hostname - sqlsrv1.domain.com   service account - domain\srv_sqlsrv1
    SQL Server 2: hostname - sqlsrv2.domain.com   service account - domain\srv_sqlsrv2
  4. Заходим на контролер домена и проверяем есть ли SPN записи для учетных записей srv_sqlsrv1 и srv_sqlsrv2
    setspn -L  domain\srv_sqlsrv1
    setspn -L  domain\srv_sqlsrv2
  5. Должны быть созданы SPN записи для службы MSSQLSvc. Если их нет, создаем для обоих серверов:
    setspn -A MSSQLSvc/sqlsrv1.domain.com domain\srv_sqlsrv1
    setspn -A MSSQLSvc/sqlsrv1.domain.com:1433 domain\srv_sqlsrv1
    setspn -A MSSQLSvc/sqlsrv2.domain.com domain\srv_sqlsrv2
    setspn -A MSSQLSvc/sqlsrv2.domain.com:1433 domain\srv_sqlsrv2
  6. Заходим в консоль Active Directory Users and Computers и находим учетные записи обоих сервров и их сервисных учетных записей. Для них необходимо:
    • проверить, что опция "Account is sensitive and cannot be delegated" на вкладке Account отключена для обоих сервисных учетных записей
    • установить опцию "Trust this user for delegation to any service (Kerberos only)" на вкладке Delegation для сервисных учетных записей
    • установить опцию "Trust this computer for delegation to any service (Kerberos only)" на вкладке Delegation для учетных записей серверов
  7. Теперь можно создавать и настраивать linked сервер.
    • Вариант 1.
      В свойсвах linked сервера на вкладке Security кликаем Add и выбираем логин на SQL сервере, который будет подключаться к удаленному SQL серверу. И устанавливаем птичку Impersonate.
    • Вариант 2.
      В свойсвах linked сервера на вкладке Security внизу выбиравем вариант "Be made using the login's current security context". Теперь все обращения к удаленному SQL серверу будут автоматически выполняться от имени доменного пользователя, который иницировал запрос.

Linux. Увеличение размера multipath диска


  1. Extend the LUN from storage device (IBM DS, IBM Storwize etc).
  2. Identify the SCSI device for this LUN.

    # multipath -ll
    mpath21 (3600a0b80003ac4d800001057506d4309) dm-1 IBM,1726-4xx  FAStT
    size=6.0G features='1 queue_if_no_path' hwhandler='1 rdac' wp=rw
    |-+- policy='round-robin 0' prio=6 status=active
    | `- 3:0:0:21 sdf 8:80 active ready running
    `-+- policy='round-robin 0' prio=1 status=enabled
      `- 2:0:0:21 sdc 8:32 active ghost running
  3. Rescan the SCSI device

    # echo 1 > /sys/block/sdf/device/rescan
    # echo 1 > /sys/block/sdc/device/rescan
  4. Reload multipathd service

    # service multipathd reload
    Reloading multipathd:                                      [  OK  ]
  5. Check and verify multipath whether it claims the new LUN size

    # multipath -ll
    mpath21 (3600a0b80003ac4d800001057506d4309) dm-1 IBM,1726-4xx  FAStT
    size=7.0G features='1 queue_if_no_path' hwhandler='1 rdac' wp=rw
    |-+- policy='round-robin 0' prio=6 status=active
    | `- 3:0:0:21 sdf 8:80 active ready running
    `-+- policy='round-robin 0' prio=1 status=enabled
      `- 2:0:0:21 sdc 8:32 active ghost running
  6. Unmount the partition

    # umount /dev/mapper/mpath21p1
  7. Fdisk the device, drop and recreate the partition with desired size. I’ll also do the 64k block alignment do get the maximum performance.
    Before deleting partition check start sector for partition. Because partition may start from 63 sector (not aligned) or 64 sector (aligned).

    # fdisk /dev/mapper/mpath21
    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
             switch off the mode (command 'c') and change display units to
             sectors (command 'u').
    Command (m for help): p
    Disk /dev/mapper/mpath21: 7516 MB, 7516192768 bytes
    255 heads, 63 sectors/track, 913 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0xab317070
                   Device Boot      Start         End      Blocks   Id  System
    /dev/mapper/mpath21p1               1         783     6289415+  83  Linux
    Partition 1 has different physical/logical beginnings (non-Linux?):
         phys=(0, 1, 1) logical=(0, 1, 2)

    --------------Here we check start sector for partition
    Command (m for help): x

    Expert command (m for help): p

    Disk /dev/mapper/mpath21: 255 heads, 63 sectors, 913 cylinders
    Nr AF  Hd Sec  Cyl  Hd Sec  Cyl     Start      Size ID
     1 00   1   1    0 254  63  782         64   12578831 83
    Partition 1 has different physical/logical beginnings (non-Linux?):
         phys=(0, 1, 1) logical=(0, 1, 2)
     2 00   0   0    0   0   0    0          0          0 00
     3 00   0   0    0   0   0    0          0          0 00
     4 00   0   0    0   0   0    0          0          0 00
    Expert command (m for help): r
    Command (m for help): d
    Selected partition 1
    Command (m for help): p
    Disk /dev/mapper/mpath21: 7516 MB, 7516192768 bytes
    255 heads, 63 sectors/track, 913 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0xab317070
                   Device Boot      Start         End      Blocks   Id  System
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-913, default 1):
    Using default value 1
    Last cylinder, +cylinders or +size{K,M,G} (1-913, default 913):
    Using default value 913
    Command (m for help): x
    Expert command (m for help): b
    Partition number (1-4): 1
    New beginning of data (1-14667344, default 63): 64
    Expert command (m for help): p
    Disk /dev/mapper/mpath21: 255 heads, 63 sectors, 913 cylinders
    Nr AF  Hd Sec  Cyl  Hd Sec  Cyl     Start      Size ID
     1 00   1   1    0 254  63  912         64   14667281 83
    Partition 1 has different physical/logical beginnings (non-Linux?):
         phys=(0, 1, 1) logical=(0, 1, 2)
     2 00   0   0    0   0   0    0          0          0 00
     3 00   0   0    0   0   0    0          0          0 00
     4 00   0   0    0   0   0    0          0          0 00
    Expert command (m for help): r
    Command (m for help): w
    The partition table has been altered!
    Calling ioctl() to re-read partition table.
    WARNING: Re-reading the partition table failed with error 22: Invalid argument.
    The kernel still uses the old table. The new table will be used at
    the next reboot or after you run partprobe(8) or kpartx(8)
    Syncing disks.
  8. Let kernel identify the new partition table.

    # partprobe
    Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.
    Warning: WARNING: the kernel failed to re-read the partition table on /dev/sdd (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.
    device-mapper: remove ioctl on mpathfp1 failed: Device or resource busy
    Warning: parted was unable to re-read the partition table on /dev/mapper/mpathf (No such file or directory).  This means Linux won't know anything about the modifications you made.
    device-mapper: create ioctl on mpathfp1 failed: Device or resource busy
    device-mapper: remove ioctl on mpathfp1 failed: Device or resource busy

    This warnings and errors is normal because other partition is still mounted.
  9. Add the partitioning table to device mapper.

    # kpartx -a /dev/mapper/mpath21
  10. Run filesystem check.

    # e2fsck -f /dev/mapper/mpath21p1
    e2fsck 1.41.12 (17-May-2010)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    /dev/mapper/mpath21p1: 12/393216 files (8.3% non-contiguous), 85614/1572353 blocks
  11. Extend the filesystem.

    # resize2fs /dev/mapper/mpath21p1
    resize2fs 1.41.12 (17-May-2010)
    Resizing the filesystem on /dev/mapper/mpath21p1 to 1833410 (4k) blocks.
    The filesystem on /dev/mapper/mpath21p1 is now 1833410 blocks long.
  12. Mount partition and check new size.

    # mount -a
    # df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/mpath21p1
                          6.9G  240M  6.4G   4% /test
This manual was created based on this post How To: Extend LUN without reboot (Redhat)

Работа в GUI на сервере Linux с ПК на Windows из putty

​Если нужно запустить на сервере Linux программу с графическим интерфейсом обычно заходят на сервер в графическую консоль напрямую.
Но есть вариант как это сделать удаленно с помощью putty и Xming.
  1. Ставим себе putty
  2. Ставим Xming (Xming X Server for Windows)
  3. Настраиваем сессию putty по умолчанию (Default Settings)
    • Connection -> SSH -> X11
    • Enable X11 forwarding - yes
    • X display location - localhost:10.0
  4. Делаем bat-файл для запуска Xming
    start /b "" "C:\Program Files (x86)\Xming\Xming.exe" :10 -clipboard -multiwindow
  5. Заходим на Linux сервер и проверяем
    • переменные окружения
      DISPLAY=localhost:10.0
    • настройки SSH /etc/ssh/sshd_config
      X11Forwarding yes
    • Перезапускаем сервис SSH
      /etc/rc.d/sshd restart
  6. На ПК с Windows запускаем через bat файл Xming, стартуем putty, подключаемся на сервер и пробуем запустить, например, Firefox. Если все настроено правильно - Firefox запустится в отдельном окне.
  7. Чтобы перенаправление X11 заработало через sudo (X Forwarding with sudo)
    • также проверяем настройки и переменные окружения
    • в /root/.bashrc добавляем строку
      export XAUTHORITY="/root/.Xauthority"
    • копируем из домашней директории пользователя файл .Xauthority в каталог /root/
    • закрываем сессию putty, заходим по новой и пробуем. По идее все должно работать.

Linux. Подключение multipath диска

​​Для начала примапите жесткий диск к машине.  После этого необходимо выполнить несколько шагов.

  1. ​Нужно просканировать все scsi хосты, чтобы новый диск обнаружился в системе. Для этого нужно выполнить следующую команду
    echo "- - -" > /sys/class/scsi_host/hostN/scan
    где N номер хоста.
    Чтобы узнать сколько всего хостов, выполните
    ls /sys/class/scsi_host​
  2. Узнаем wwid​​ ​для нового диска. Для этого выполним команду
    multipath -v3​
    Вы должны увидеть в конце вывода команды список wwid. Добавьте wwid нового ди​ска в blacklist_exceptions​ секцию в файле /etc/multipath.conf
    Например​​         wwid "3600a0b80004248ba00004d574f44d52f"​
  3. Перегрузите multipath daemon
    service multipathd reload​
  4. Проверьте новое multipath устройство
    multipath​ -ll
  5. После этого создаем раздел на новом диске
    kpartx -a /dev/mapper/mpath​N
    где N номер (а точнее буква) нового диска
    WARNING! Утилита fdisk на MAPPER-устройствах работает некорректно!
  6. А затем создаем файлову систему на новом разделе
    Например​        mkfs.ext3 /dev/mapper/mpathN1
  7. Создаем папку для монтирования нового диска
    mkdir /<new_mp_name>
  8. Добавляем его в /etc/fstab для автоматического монтирования после перезагруки
    /dev/mapper/mpathN1             /<new_mp_name>​                ext3    defaults        1 1
  9. И выполняем команду mount -a , чтобы диск уже сейчас появился в системе.

LVM. Увеличение размера диска


  1. Увеличиваем размер выделенного хранилища для сервера (вирутальная машина или физический сервер).
  2. Делаем рескан диска для определения нового размера
    echo '1' > /sys/block/sdX/device/rescan
    Результат можно увидеть командой
    fdisk -l /dev/sdX
    Здесь и далее /dev/sdX - это дисковый раздел, который нужно увеличить.
  3. Необходимо сообщить операционной системе, что изменился размер диска
    partprobe /dev/sdX
  4. Делаем рескан физических дисков LVM
    pvscan
  5. Делаем увеличение физичекого диска LVM.
    Для начала можно протестировать увеличение размера диска
    pvresize -v -t /dev/sdX
    Если тест пишет, что все окей, увеличиваем размер диска
    pvresize -v /dev/sdX
  6. Смотрим, что все прошло окей
    pvs                - покажет краткую информацию по физическим дискам. Смотрим, что показывает диск уже с новым размером
    pvdisplay       - покажет детальную информацию по физическим дискам. Смотрим, что Free PE уже не ноль.
    vgdisplay       - покажет инфомацию о volume group. Смотрим, что Free  PE / Size уже не ноль.
  7. Увеличиваем логический диск
    lvextend -l +100%FREE /dev/<VG_name>/<LV_name>
  8. Увеличиваем размер файловой системы
    resize2fs /dev/<VG_name>/<LV_name>
  9. Смотрим, что все окей
    df -h

LVM. Добавление нового multipath диска в систему


  1. Нужно просканировать все scsi хосты, чтобы новый диск обнаружился в системе. Для этого нужно выполнить следующую команду
    echo "- - -" > /sys/class/scsi_host/hostN/scan
    где N номер хоста.
    Чтобы узнать сколько всего хостов, выполните
    ls /sys/class/scsi_host​
  2. Узнаем wwid​​ ​для нового диска. Для этого выполним команду
    multipath -v3​
    Вы должны увидеть в конце вывода команды список wwid. Добавьте wwid нового ди​ска в blacklist_exceptions​ секцию в файле /etc/multipath.conf
    Например​​         wwid "3600a0b80004248ba00004d574f44d52f"​
  3. Перегрузите multipath daemon
    service multipathd reload​
  4. Проверьте новое multipath устройство
    multipath​ -ll
  5. После этого создаем раздел на новом диске
    kpartx -a /dev/mapper/mpath​N
    где N номер (а точнее буква) нового диска
    WARNING! Утилита fdisk на MAPPER-устройствах работает некорректно!
  6. Создаем физический раздел (physical volume - PV)
    pvcreate /dev/mapper/mpathb

    Посмотреть физические разделы
    pvdisplay
  7. Создаем группу томов (volume group - VG)
    vgcreate <VG_name> /dev/mapper/mpathb

    Посмотреть созданные тома
    vgdisplay
  8. Создаем логические разделы (logical volume - LV) в раннее созданной группе томов (VG)
    lvcreate -L <LV_size_in_MB_GB_TB> -n <LV_name> <VG_name>lvcreate -l <LV_size_in_extents_or_%VG|FREE|ORIGIN> -n <LV_name> <VG_name>

    Например,
    lvcreate -L 100G -n lv_tsmdb vg_tsm_database         - создает логический раздел размером 100ГБ
    lvcreate -l 100%VG -n lv_tsmdb vg_tsm_database     - создает логический раздел размером в 100% от свободного объема

    Посмотреть логические разделы
    lvdisplay
  9. Создаем нужную файловую систему на логическом разделе
    mkfs.ext4 или mkfs.ext3, или ту файловую систему, которая нужна.
    При создании файловой системы указываем устройство
    /dev/<VG_name>/<LV_name>

    Например:
    mkfs.ext4 /dev/vg_tsm_database/lv_tsmdb
  10. Создаем каталог лдя монтирования и прописываем в fstab точки монтирования. Для multipath устройств указываем устройство /dev/mapper/<VG_name>-<LV_name>
    Например:
    /dev/mapper/vg_tsm_database-lv_tsmdb    /tsm    ext4    defaults        1 1
  11. Монтируем новый диск
    mount -a

Linux. Удаление multipath диска без перезагрузки


  1. Смотрим какие multipath диски подключены
    multipath -ll
    [root@Inspur5280M4 home]# multipath -ll
    Jul 28 15:59:31 | multipath.conf line 32, duplicate keyword: defaults
    mpathj (360080e50001fa3f0000016e155b7293f) dm-5 LSI,INF-01-00
    size=1.4T features='4 queue_if_no_path pg_init_retries 50 retain_attached_hw_handle' hwhandler='1 rdac' wp=rw
    |-+- policy='round-robin 0' prio=14 status=active
    | `- 2:0:0:2 sdh 8:112 active ready  running
    `-+- policy='round-robin 0' prio=9 status=enabled
      `- 1:0:0:2 sdd 8:48  active ready  running
    mpathi (360080e50001fa3f0000016e055b72912) dm-4 LSI,INF-01-00
    size=1.4T features='4 queue_if_no_path pg_init_retries 50 retain_attached_hw_handle' hwhandler='1 rdac' wp=rw
    |-+- policy='round-robin 0' prio=14 status=active
    | `- 2:0:0:0 sdf 8:80  active ready  running
    `-+- policy='round-robin 0' prio=9 status=enabled
      `- 1:0:0:0 sdb 8:16  active ready  running
    mpathh (360080e50001ff11c00000f6955b72924) dm-3 LSI,INF-01-00
    size=1.4T features='4 queue_if_no_path pg_init_retries 50 retain_attached_hw_handle' hwhandler='1 rdac' wp=rw
    |-+- policy='round-robin 0' prio=14 status=active
    | `- 1:0:0:1 sdc 8:32  active ready  running
    `-+- policy='round-robin 0' prio=9 status=enabled
      `- 2:0:0:1 sdg 8:96  active ready  running
    mpathg (360080e50001ff11c00000f6a55b7293d) dm-2 LSI,INF-01-00
    size=1.4T features='4 queue_if_no_path pg_init_retries 50 retain_attached_hw_handle' hwhandler='1 rdac' wp=rw
    |-+- policy='round-robin 0' prio=14 status=active
    | `- 1:0:0:3 sde 8:64  active ready  running
    `-+- policy='round-robin 0' prio=9 status=enabled
      `- 2:0:0:3 sdi 8:128 active ready  running
  2. Удаляем нужные multipath диски
    multipath -f mpathj
  3. Удаляем разделы, созданные для каждого пути multipath диска
    echo 1 > /sys/block/sdh/device/delete
    echo 1 > /sys/block/sdd/device/delete
  4. Все

CentOS. Первоначальная настройка сервера


  1. Настройка sudo 
    • зайти под root
    • visudo
    • раскоментировать строку
      #%wheel ALL=(ALL) NOPASSWD: ALL
    • vi /etc/group и в строке
      wheel:x:10:
      в конец добавить логины пользователей, у которых будет право sudo. В итоге получится что-то типа:
      wheel:x:10:dudko
  2. Настройка сети
    • Host Name
      • vi /etc/hostname и в нем прописать имя сервера (не FQDN)
    • DNS и DNS search list
      • vi /etc/resolv.conf
        nameserver <DNS_Server1_IP_address>
        nameserver <DNS_Server2_IP_address>
        searchlist <DNS domains search list>
    • Default gateway
      • vi /etc/sysconfig/network
        NETWORKING=yes
        HOSTNAME=<Server's FQDN>
        NTPSERVERARGS=iburst
        GATEWAY=<Default_gateway_IP_address>
    • IP address
      • Включаем временно один сетевой интерфейс (можно через Network Manager). Адрес можно получить с DHCP. Потом правильный IP будет прописан руками на bonding-интерфейс.
    • NTP
      • vi /etc/ntp.conf
        в самый конец файла добавляем строки
        server <NTP_Server1_DNS_Name> iburst
        server <NTP_Server2_DNS_Name> iburst
    • reboot
  3. Прописываем прокси для yumпрокси для yum
    • в файл /etc/yum.conf добавить строку
      # The proxy server - proxy server:port number
      proxy=http://<proxy_server_FQDN>:<proxy_port>
  4. Настройка тиминга на сетевых итерфейсах
    • удаляем Network Manager
      #Ищем текущую установленную версию пакетов NetworkManager
      rpm -qa | grep NetworkManager
      #Удаляем NetworkManager
      yum remove NetworkManager-gnome-<version_number>.el6.x86-64 NetworkManager-glib-<version_number>.el6.x86-64 NetworkManager-<version_number>.el6.x86-64
    • vi /etc/modprobe.d/bonding.conf
      прописать строку
      alias bond0 bonding
    • vi /etc/sysconfig/network-scripts/ifcfg-eth0
      прописать что-то типа:

      DEVICE=eth0
      ONBOOT=yes
      BOOTPROTO=none
      MASTER=bond0
      SLAVE=yes
      DEFROUTE=no
      USERCTL=no
      NM_CONTROLLED=no
      TYPE=Ethernet
      IPV6INIT=no
      NAME="System eth0"
      PEERDNS=yes
      PEERROUTES=yes
    • vi /etc/sysconfig/network-scripts/ifcfg-eth1
      прописать что-то типа:

      DEVICE=eth1
      ONBOOT=yes
      BOOTPROTO=none
      MASTER=bond0
      SLAVE=yes
      DEFROUTE=no
      USERCTL=no
      NM_CONTROLLED=no
      TYPE=Ethernet
      IPV6INIT=no
      NAME="System eth1"
      PEERDNS=yes
      PEERROUTES=yes
    • vi /etc/sysconfig/network-scripts/ifcfg-bond0
      Прописать:

      DEVICE=bond0
      IPADDR=<Server IP address>
      NETMASK=<NETMASK>
      ONBOOT=yes
      DEFROUTE=yes
      BOOTPROTO=none
      USERCTL=no
      NM_CONTROLLED=no
      BONDING_OPTS="mode=6 miimon=100 downdelay=200"

      Важно!!! Нужно в параметрах BONDING_OPTS параметры miimon и downdelay указывать именно в таком порядке. Иначе при рестарте сети будет ругаться.
    • service network restart
    • проверка режима работы bonding
      cat /proc/net/bonding/bond0
  5. Проверка/настройка SSH доступа
  6. Обновление ОС
    yum update

    Если было обновление ядра, нужно делать перезагрузку сервера.
  7. Драйвера
    Инструкции по утсановке драйверов читаем в README.TXT каждого драйвера.
    • перед установкой драйверов необходимо установить следующие пакеты:
      yum -y install rpm-build kernel-devel glibc-devel gcc
    • FC адаптер
      • Для сервера IBM HS21XM и FC адаптера QLogic 4Gb CIOv (QMC2462S, IBM Part Number: 26R0892) драйвера качать на сайте qlogic.com для FC адаптера QLA24xx). На момент написания статьи последняя версия была qla2xxx-src-v8.06.00.10.06.0-k.tar.gz
      • проверить заработал ли драйвер можно командой:
        lsmod | grep qla2xxx

        в ответ должны увидеть:
        qla2xxx               466573  4
        scsi_transport_fc      55299  1 qla2xxx
    • Multipath драйвер для дискового хранилища
    • Драйвер ленточного накопителя