Archives de catégorie : OpenSolaris

LSI mon amour

Dans un récent article je vous ai parlé de la création d’un SAN iSCSI à base de OmniOS sur un serveur Dell PowerEdge R515.
Et notamment de cette @#!@# de carte PERC H700 qui ne supporte pas le JBOD, ce qui complique la gestion à chaud du remplacement de disques défectueux de notre zpool.

Ces cartes sont des cartes LSI re-brandées Dell (et donc avec un firmware et un bios bridés).
Il est donc possible de gérer ces cartes avec les outils LSI.
Ce que je vais vous détailler tout de suite.

MegaRaid Storage Manager sous Solaris et dérivés

Téléchargement

La dernière version du logiciel est disponible chez LSI.

Il faut donc récupérer :

  1. 13.08.04.01_Solaris_11_MSM.tar.gz
  2. CSA1.5-MegaCli_REL80571.zip

Dans l’archive 13.08.04.01_Solaris_11_MSM.tar.gz il y a l’utilitaire storecli qui est le remplaçant de MegaCLI.
Cependant celui-ci nous remonte des erreurs avec les controlleurs PERC.

Nous installons donc MegaCLI, en lieu et place de storecli.

Installation

Ici sous OmniOS, mais fonctionne de la même manière sous Linux.

$ tar tvfz 13.08.04.01_Solaris_11_MSM.tar.gz

Cela vous donne en sortie :

drwxr-xr-x   0/0        0 May 13 05:10 2013 ./
-rw-r--r--   0/0    24088 Jul 25 07:18 2013 ./readme.txt
drwxr-xr-x   0/0        0 Jul 25 07:23 2013 ./disk/
-rw-r--r--   0/0   35738624 Jul 25 07:19 2013 ./disk/storcli.pkg
-rwxr-xr-x   0/0     5634 Jun  4 08:30 2013 ./disk/install.sh
-rwxr-xr-x   0/0     7086 May 13 05:10 2013 ./disk/license-agreement.txt
-rwxr--r--   0/0   684728 Jul 25 07:19 2013 ./disk/libstorelibir-2.so.17.00-0
-rwxr--r--   0/0   520324 Jul 25 07:19 2013 ./disk/libstorelibir-3.so.2.00-0
-rwxr-xr-x   0/0   147108 Jun 25 05:14 2013 ./disk/libstorelib.so.4.07-0
-rw-r--r--   0/0   1928704 Jul 25 07:20 2013 ./disk/sassnmp-SOL11X86-13.08-0401.pkg
-rwxr-xr-x   0/0   416104 Jun 25 05:14 2013 ./disk/libstorelibir.so.5.06-0
-rw-r--r--   0/0   266143232 Jul 25 07:24 2013 ./disk/MegaRaidStorageManager-SOL11X86-13.08.04.01.pkg
-rw-r--r--   0/0   3421184 Jul 25 07:20 2013 ./disk/sasirsnmp-SOL11X86-13.08-0401.pkg

Les fichiers intéressants sont :

  1. MegaRaidStorageManager-SOL11X86-13.08.04.01.pkg
  2. readme.txt

Pour les extraires :

$ tar xvfz 13.08.04.01_Solaris_11_MSM.tar.gz ./disk/MegaRaidStorageManager-SOL11X86-13.08.04.01.pkg ./readme.txt
$ unzip CSA1.5-MegaCli_REL80571.zip

Puis installations des pkg

sudo pkgadd -d ./disk/MegaRaidStorageManager-SOL11X86-13.08.04.01.pkg
sudo pkgadd -d ./MegaCLI/MegaCli_Solaris/x86/MegaCli.pkg

Lancement du service MSMFramework

$ sudo svcadm disable -t MSMFramework
$ sudo svcadm enable MSMFramework
$ svcs -a | grep -i msm

Le service doit apparaitre online

online         10:00:48 svc:/application/network/vivaldiframework:MSMFramework

Si ce n’est pas le cas, lancer un clear des events

$ sudo svcadm clear MSMFramework

Maintenant avec le client (tous les OS sont supportés) MegaRAID Storage Manager vous devez pouvoir vous connecter sur le serveur pour gérer la carte.
Pour cela renseigner l’IP du serveur contenant la carte PERC, le compte « root » et son mot de passe.
Cet utilitaire vous permetra de gérer vos disques durs et les virtual disks en cas de défaillance d’un disque.

Nota Bene

  • Les ports d’écoute du service sont les suivants : 3071 et 5571 en TCP.
  • Lors de l’installation de la version Windows sur votre poste, n’installer que le client.
  • La version serveur est à réserver pour les serveurs !!

Test MegaCLI

Il y a plein de page sur Google qui vous donnerons une idée de la puissance de MegaCLI pour la gestion des carte LSI (et PERC).

$ sudo /opt/MegaRAID/CLI/MegaCli -adpCount

Retourne le nombre de controlleur PERC LSI.

Activation des Jumbo Frame sous OmniOS

Pour faire suite à l’article sur la création d’un SAN ZFS sous OmniOS, voici comment activer les Jumbo Frame sous OmniOS

Je pars des hypothèses suivantes :

  • les cartes sont des Broadcom Gigabit Ethernet (Broadcom 5709C, driver bnx)
  • les carte bnx0 et bnx1 sont utilisées pour la partie iSCSI.

Activer le Jumbo Frame revient à passer le <a href="http://fr viagra en allemagne.wikipedia.org/wiki/Maximum_Transmission_Unit » title= »MTU »>MTU à 9000 en modifiant le fichier /kernel/drv/bnx.conf.
Ainsi la ligne :

#mtu=1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500;

Devient :

mtu=9000,9000,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500;

Ici on ne modifie que les MTU des cartes bnx0 et bnx1.
Les autres cartes restent avec un MTU de 1500.

Un reboot et un ifconfig plus tard vous affiche :

bnx0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 9000 index 3
        inet 10.10.2.4 netmask ffffff00 broadcast 10.10.2.255
bnx1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 9000 index 4
        inet 10.10.3.4 netmask ffffff00 broadcast 10.10.3.255
bnx2: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 10.10.1.21 netmask ffffff00 broadcast 10.10.1.255

On voit bien que les MTU des cartes bnx0 et bnx1 sont passés à 9000 et celui de la bnx2 est toujours à 1500.

Monter un serveur de stocakge iSCSI rapidement (avec du MPIO)

Ici je détail la procédure pour installer très rapidement, et donc en laissant de coté la sécurité un serveur de stockage sous OmniOS (un autre dérivé de OpenSolaris)
Pour la sécurité allez voir ici

Configuration Matérielle :

  • Le serveur : Dell PowerEdge R515
  • Carte RAID : Perc H700, 512Mo de cache
  • Disques système : 2 disques 300G SAS 10K RPM
  • Disques zpool : 9 disques 3To SAS 6Gb/s 7.2K RPM et 2 SSD Crucial M500 120Gb

A propos de la carte Perc H700:
Ce n’est pas le meilleur choix. En effet elle ne permet pas de présenter les disques en JBOD. Il faut donc créer autant de « virtual disk » en RAID0 qu’il y a de disques. Donc à priori quelques pertes de performances.

Installation du serveur

Télécharger le CD d’installation sur le site d’OmniOS.
Une fois installé, loggez-vous en root (sans mot de passe) via une console.

Configuration des interface réseaux

Liste des interfaces réseaux

# dladm show-phys
Configuration de la première interface (réseau de management)
# ipadm create-if bnx2
# ipadm create-addr -T static -a 10.10.1.1/24 bnx2/v4static
Configuration de la route par défaut
# route -p add default 10.10.1.254
Modification de la configuration de SSH

Pour pouvoir faire le reste de la configuration à distance …

# vi /etc/ssh/sshd_config

Changez « PermitRootLogin no » to « PermitRootLogin yes ».
Relancer ssh

# svcadm restart ssh

Maintenant vous pouvez vous logger en ssh sur le serveur

  • Login : root
  • Passord : y’en a pas. Taper entrer.
Configuration de la deuxième interface (réseau SAN)
# ipadm create-if bnx0
# ipadm create-addr -T static -a 10.10.2.1/24 bnx0/v4static
Configuration de la troisième interface (réseau SAN)
# ipadm create-if bnx1
# ipadm create-addr -T static -a 10.10.3.1/24 bnx1/v4static
Configuration de la résolution DNS
# echo "nameserver 192.168.100.1" >> /etc/resolv.conf
# echo "nameserver 192.168.100.2" >> /etc/resolv.conf
# cp /etc/nsswitch.conf{,.bak}
# cp /etc/nsswitch.{dns,conf}
Création d’un utilisateur non root

Référence : OmniOS : Adding local users

# echo "* localhost:/export/home/&" > /etc/auto_home
# svcadm refresh autofs
# useradd -u 2000 -m -d /export/home/weldone weldone
# usermod -d /home/weldone weldone
# passwd weldone
Configuration sudo pour cet utilisateur
# grep ^root /etc/sudoers | sed -e 's/^root/weldone/' > /etc/sudoers.d/weldone
# chmod 0440 /etc/sudoers.d/weldone

Création du Zpool

Identification des disques
# format < /dev/null 
Création d’un zpool avec les disques disponibles
# zpool create -f vmpool raidz2 c1t1d0 c1t2d0 c1t3d0 c1t4d0 c1t5d0 c1t6d0 c1t7d0 c1t8d0 spare c1t9d0 log mirror c1t11d0 c1t12d0
# zpool status 
# zfs get available vmpool 
Création d’un zvolume
# zfs create -V 15T vmpool/datastore01

ou

# zfs create -V 15899G vmpool/datastore01

ou

# zfs create -V 16280995M vmpool/datastore01

En « M », vous perdez le moins d’espace…

C’est la commande suivante qui vous permet de vérifier l’espace disponible dans votre zpool, et donc d’affiner la taille du zvolume.

# zfs get available vmpool

Attention:
Ne pas donner une taille trop petite, sinon à la création du zvolume vous aurez un message d’erreur car les Metadata ne pourront pas être écrites.

Installation et lancement des services iSCSI et serveur de stockage

Avec la configuration d’un proxy si vous devez en utiliser un.

# echo "export http_proxy=\"http://192.168.100.10:8080/\"" >> /root/.profile
# . .profile
# pkg install storage-server
# svcadm enable stmf
# svcs stmf
# svcadm enable -r svc:/network/iscsi/target:default
# svcs -l iscsi/target
Création d’un Logic Unit (LU) pour notre « vmpool/datastore01 »
# stmfadm create-lu /dev/zvol/rdsk/vmpool/datastore01

En retour nous avons l’ID du LU, par exemple : 600144F0000000000000523AC3FA0001

# stmfadm list-lu
# stmfadm add-view 600144F0000000000000523AC3FA0001
# stmfadm list-view --lu-name 600144F0000000000000523AC3FA0001
# itadm create-target

En retour nous avons l’ID de la target, par exemple : iqn.2010-08.org.illumos:02:2303d8d3-75f9-c341-c389-ff982528211c

# itadm create-tpg tpg01 10.10.2.1:3260 10.10.3.1:3260

Et cerise sur le gâteau !!
Cette commande nous permet d’activer le MPIO

# itadm modify-target -t tpg01 iqn.2010-08.org.illumos:02:2303d8d3-75f9-c341-c389-ff982528211c

Et voilà, mettez un client iSCSI dans le même réseau, ça devrait marcher sans problème.

Jumpstart is so 2000

Il est devenu courant d’installer sa distribution Linux à partir d’une clé USB. (Ubuntu fournit sa méthode, et il existe aussi lili, pour ne citer qu’eux). En ce moment je joue avec de l’OpenSolaris pour en faire des SAN (zfs rocks) sur du matériel SuperMicro (chassis et carte-mère).

Notre souci est l’installation rapide de SAN en cas de crash.

X8DTU-F

X8DTU-F

Même si ce type de serveur offre de l’IPMI, l’installation via le virtual cdrom est assez longue…et par le réseau c’est lourd. Or ces carte-mères ont des ports USB internes (sur le bord, en bas à gauche de la photo). Il est possible de télécharger un fichier .usb et d’en faire une clé USB boutable contenant OpenSolaris. D’où l’idée de mettre une clé USB OpenSolaris dedans, et de commander le boot sur le disque USB dans le BIOS en cas de réinstallation.

L’autre idée était d’ajouter quelques scripts shell de post-installation, et quelques fichiers ZIP contenant des pilotes et/ou utilitaires non intégrés dans la distribution OpenSolaris, de manière a pouvoir les appeler via le déport KVM de la console IPMI.

Pour cela il nous faut, dans un environnement OpenSolaris installé :

  1. Télécharger l’ISO osol-dev-134-x86.iso depuis Genunix
  2. Modifier l’image ISO
  3. Convertir cette nouvelle image ISO en fichier .usb
  4. Créer notre clé USB (1Go suffit)

La partie qui requière un poil soyeux et abondant, est celle de la modification de l’image ISO. Heureusement il y a des wookies en Chine. Le script modifié que voici (bash, x86 only) vous permettra de créer une image ISO modifiée de oso-dev-134-x86.iso.

#!/usr/bin/bash

#
# Author : mishuang
# URL : http://blogold.chinaunix.net/u/23177/showart_2182517.html
# Updated by Hugues Lepesant
#

LOFIADM=/usr/sbin/lofiadm
AWK=/usr/gnu/bin/awk
GSED=/usr/bin/gsed

UMOUNT=/usr/sbin/umount
MOUNT=/usr/sbin/mount

GREP=/usr/gnu/bin/grep
GZIP=/usr/bin/gzip
MKDIR=/usr/gnu/bin/mkdir
FIND=/usr/gnu/bin/find
CPIO=/usr/bin/cpio
MKISOFS=/usr/bin/mkisofs

ISO_FILE="/export/home/hugues/iso/osol-dev-134-x86.iso"
ISO_NEW_FILE=$(printf "%s/%s" $(dirname ${ISO_FILE}) "osol-dev-134-x86_custom.iso")

ISO_MNT_DIR="/mnt/osol"
ISO_TMP_DIR="/var/tmp/osol"

BA_MNT_DIR="/mnt/boot_archive"
BA_FILE="/var/tmp/boot_archive"

CP='/bin/cp -f'
RM='/bin/rm -rf'

function clear_lofi
{
    lofis=$(${LOFIADM} | ${AWK} '/\/dev\/lofi/{print $1}')

    for lofi in ${lofis}
    do
        ${LOFIADM} -d ${lofi}
    done
}

function set_kbd_lang
{
    ${GSED} -i -e 's/kbd -s/& US-English/' -e 's/set_lang/& default/' $1/lib/svc/method/media-fs-root
}

function create_x86_iso
{
    ${UMOUNT} ${ISO_MNT_DIR}
    ${UMOUNT} ${BA_MNT_DIR}

    clear_lofi

    ${RM} ${ISO_TMP_DIR} ${BA_FILE}
    ${RM} ${ISO_NEW_FILE}

    ${MKDIR} -p ${ISO_MNT_DIR} ${ISO_TMP_DIR} ${BA_MNT_DIR}

    iso_lofi=$(${LOFIADM} -a ${ISO_FILE})
    ${MOUNT} -F hsfs ${iso_lofi} ${ISO_MNT_DIR}

    cd ${ISO_MNT_DIR}

    ${FIND} . -depth -print | ${CPIO} -pdum ${ISO_TMP_DIR}
    cd -

    for dir in "" "amd64"
    do
        ${GZIP} -cd ${ISO_TMP_DIR}/platform/i86pc/${dir}/boot_archive > ${BA_FILE}

        ba_lofi=$(${LOFIADM} -a ${BA_FILE})
        sleep 5
        ${MOUNT} ${ba_lofi} ${BA_MNT_DIR}

        ${CP} /export/home/hugues/2.00.15_Solaris_MegaCLI.zip ${BA_MNT_DIR}/root
        ${CP} /export/home/hugues/postinstall.sh ${BA_MNT_DIR}/root

        set_kbd_lang ${BA_MNT_DIR}

        sleep 5
        ${UMOUNT} ${BA_MNT_DIR}
        ${GZIP} -c ${BA_FILE} > ${ISO_TMP_DIR}/platform/i86pc/${dir}/boot_archive
        sleep 5
        ${LOFIADM} -d ${ba_lofi}
    done

    ${MKISOFS} -o ${ISO_NEW_FILE}    \
        -b boot/grub/stage2_eltorito \
        -c .catalog                  \
        -no-emul-boot                \
        -boot-load-size 4            \
        -boot-info-table             \
        -N -l -R -U -allow-multidot  \
        -no-iso-translate            \
        -cache-inodes -d -D          \
        -V "OpenSolaris"             \
        ${ISO_TMP_DIR}

    ${UMOUNT} ${ISO_MNT_DIR}
    ${LOFIADM} -d ${iso_lofi}
    ${RM} ${ISO_TMP_DIR} ${BA_FILE}
}

create_x86_iso

Cette image iso pourra ensuite être convertie en fichier .usb et servir de matrice à la création d’une clé boutable.

pfexec pkg install SUNWdistro-const
pfexec usbgen osol-dev-134-x86_custom.iso osol.usb  /tmp/osol
pfexec usbcopy osol.usb

ou si vous êtes sous Windows avec l’outil OpenSolaris Live USB Creator.