Monday, October 5, 2015

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 драйвер для дискового хранилища
    • Драйвер ленточного накопителя