Ma méthode pour les stations « lentes »

Les postes de travail ont un sujet récurrent : ils sont jugés trop lents. Il faut déjà faire la part entre l’impatience de l’utilisateur et ce qu’on demande à la machine. Le plus souvent, cela concerne les ordinateurs portables, qui ont des ressources plus limitées que les fixes (quoique la frontière se réduise de plus en plus). Il se trouve aussi, que les portables sont souvent attribués à des « VIP », dont on écoute plus volontiers leurs problèmes, y compris l’impatience.

Quand je dois traiter ce type de sujet, voici les éléments que je vérifie par ordre. Je chronomètre à chaque fois le temps de boot + ouverture de session comme temps de référence.

  1. Bios: est-ce que le mode ahci/raid est activé ? (attention à certains disques SSD qui n’aiment pas le mode raid pour le trim)
  2. Supprimer les anciens profils itinérants avec delprof.exe + lancer une defrag
  3. Vérifier que la carte réseau ethernet et bien avant la carte Wifi & co (si la station passe par le réseau ethernet)
  4. Vérifier que la partie réseau n’a pas de problème (100Mb/s full duplex, pas de collision sur le port..)
  5. Lancer Autoruns de Sysinternals. Nettoyer certains programmes non indispensables (Java updater, Adobe speed Launcher…)
  6. Vérifier la version des pilotes & bios. Cela inclus les utilitaires constructeurs types lecteurs d’empreintes/smartcard.
  7. Vérifier la version du moteur antivirus. S’il est configuré pour faire un full scan au boot, le désactiver au moins temporairement.
  8. Lancer un autre moteur antivirus/antispyware autre (par exemple housecall qui est gratuit).
  9. Lancer Process monitor en mode « boot logging« .
  10. Vérifier le plan d’économie d’énergie. S’il n’est pas par défaut ou modifié par le constructeur, le remettre par défaut.
  11. S’il s’agit d’un profil itinérant, vérifier la taille et le débit réseau vers le serveur de fichier l’hébergeant (avec Wireshark sur le chemin).
  12. Prendre un autre portable, avec le même matériel. Y installer Windows manuellement (sans utiliser de master). Installer le minimum nécessaire et comparer les temps.

 

Avec cette méthode, j’ai déjà réussi à faire chuter le temps de boot+ouverture de session de 1mn30 à 45 secondes.

Si vous utilisez d’autres pistes avec succès, n’hésitez pas à m’en faire part dans les commentaires!

Dedibox: IPMI down

Si l’interface web de gestion de vos dedibox rame (console.online.net), la vérification IPMI de vos serveurs doit être HS.

Cela m’arrive quand notamment après que mon port Cisco soit coupé suite à des tests.

2 solutions:

  • Provoquer/demander un arrêt électrique
  • Forcer l’idrac à récupérer un nouveau bail

La deuxième solution est plus élégante et ne coupe pas le service. Pour le faire, il faut installer OpenManage de Dell sur le serveur.

Il faut ensuite sur le site openmanage (https://localhost:1311) puis dans Accès à distance.

Vous devriez constater qu’il n’y a plus d’adresse IP mais uniquement 0.0.0.0.

Il faut ensuite changer à statique, repasser en DHCP et cliquer sur Appliquer les Changements.

Cela force l’idrac à récuperer de nouveau son adresse IP de gestion.

Et voilà 🙂

Dedibox: port cisco down & idrac: la double peine

Faisant face à quelques difficultés avec Dedibox, je souhaitais partager avec vous mon analyse.

La nouvelle offre Dedibox s’appuie sur des serveurs Dell, et propose un accès à l’idrac de votre serveur. Cela permet de faire l’installation de l’OS soit même (par exemple Windows en montant l’iso à travers l’idrac).

Dell propose 2 méthodes pour connecter l’idrac:

  • Dédié: l’accès se fait à travers un port Ethernet.
  • Partagé: l’accès se fait à travers les cartes réseaux normales du serveur.

C’est cette deuxième solution que Dedibox a retenue. Elle leur permet évidemment une grosse économie:

  • de câblage réseau (surtout vu la quantité de serveurs),
  • De ports sur les commutateurs (1 par machine).

Cela ne me pose pas de problème au demeurant, mais cela se complique avec leur politique de gestion du réseau et de sa sécurité. La couleur est annoncée tout de suite: en cas de problème détecté, le switch coupe le port réseau associé. Il faut alors ouvrir un ticket pour être débloqué.

Impact: quand le port est coupé par le switch, on perd également l’accès à l’idrac. D’où la double peine: le serveur n’est plus joignable, et on ne peut même pas réparer via l’idrac.

La connexio à l’idrac se passe en plusieurs phases:

  • Connexion à la console de gestion Dedibox
  • Accès au menu idrac
  • Génération d’une URL d’accès (idrac.online.net qui fait office de reverse proxy) contenant un token d’accès unique
  • Depuis l’interface idrac de Dell, accès à la console virtuelle (uniquement via Java, activeX est désactivé)
  • Téléchargement d’un Java Webstart (fichier jnlp)
  • Lancement de l’applet Java

Sécuriser son Windows dans le cloud (Dedibox/Amazon…)

Suite  à mon retour vers Dedibox, et le fait que j’y installe du Windows, je me suis demandé ce que je pouvais faire pour la sécuriser.

Voici les pistes envisagées:

  • Pas de port TCP accessible directement. Passer donc par exemple avec LogMeIn, au moins pendant la configuration. L’accès idrac n’est pas assez fluide et simple d’accès.
  • Renommer le compte Administrateur via GPedit
  • Interdire l’affichage du dernier compte authentifié via GPedit.
  • Ajouter un disclaimer, toujours via GPedit. Cela n’arrêtera pas un pirate motivé, mais peu suffire à bloquer certains logiciels de brute force RDP.
  • Autoriser RDP mais:
    • Sur un port TCP non standard. Procédure Microsoft : http://support.microsoft.com/kb/306759/en-us/
    • Utiliser le firewall Windows pour autoriser l’accès uniquement depuis certaines IP fixes. Pour y accéder depuis ailleurs, d’abord se connecter en LogMeIn pour modifier la règle firewall.
    • Autoriser uniquement les clients permettant une authentification réseau.
  • Scanner régulièrement les adresses IP depuis l’extérieur avec nmap pour vérifier ce qui est visible.
  • Appliquer les mises à jour Windows dès leur sortie.

Dedibox: Nat de VM Hyper-V

Suite au retour sur Dedibox, j’ai décidé d’utiliser Hyper-V plutôt que VMware pour la virtualisation. Les adresses IP publiques sont facturées chez Online.net, et d’autre part je ne veux pas que certaines VM soient exposées sur Intrenet (DC, Exchange…).

Par défaut, Hyper-V ne permet pas de faire du Nat, et donc cacher tout se beau monde tout en leur donnant accès à Internet.

Voici les grandes étapes:

  • Installer le rôle Network Policy and Access Services
  • Créer un réseau interne dans Hyper-V
  • Assigner une adresse IP fixe (ex 192.168.1.1) sur la carte réseau du réseau ainsi crée (carte virtuelle Hyper-V)
  • Configurer Routing and Remote Access pour faire du NAT
  • Configurer les VM afin d’utiliser le réseau virtuel Hyper-V et de passer en DHCP ou IP fixe suivant vos souhaits.

Ajouter le rôle

Configurer le NAT

Test nouvelle Dedibox (R410)

Je n’ai pas pu résister à l’appel des nouvelles offres Dedibox !

Les plus fervents lecteurs savent que j’ai déjà par le passé utilisé leur serveurs avant de basculer chez Amazon.

Sauf que là, le rapport puissance/qualité reprends le dessus en version serveur dédié. 24Go de ram, 16 coeurs logiques et 2To. L’arme de destruction massive reste l’idrac, qui permet enfin de faire ce que l’on veut avec son serveur 🙂

Commande du serveur

Depuis l’interface Web, commande faite en quelques clics. Premier stress, rupture de stock (message du premier écran). Anyway, je prends quand même, quitte à patienter 7 jours. Bizarre, sur l’écran suivant, on m’indique qu’il y a du stock (30), et que je vais en avoir une tout de suite 🙂 Ca n’a pas raté, 10mn seulement après la commande, mon serveur tout chaud est sorti du four !

KVM KVM KVM

Tel un chercheur d’or, je me mets en quête de mon idrac immédiatement. Bon, en fait il faut déployer un serveur, même bidon, pour que le menu magique apparaisse. Ce qui peut tromper, c’est le menu rescue, qui propose un kvm virtuel (vnc), qui n’a rien à voir avec un idrac de dell. Pour les lecteurs pressés, c’est ici qu’il faut aller:

Ensuite, on a accès à l’interface Web de Dell pur jus. On lance le KVM Dell (Java), et il suffit de monter un .iso local ou donner accès à un lecteur DVD/virtuel clone drive.

La question est : Est-ce que le débit va être au rendez-vous pour déployer un OS (au hasard, Windows) ? La réponse est OUI. Avec mon accès fibre Orange, je pousse facilement l’ISO à traver idrac à 5Mb/s.

Stockage

La question qu’on peut se poser est: Comment est configuré le raid ? En raid 1. Du coup on voit environ 1800Go:

La suite prochainement 🙂

Ma vision pour résoudre les problèmes qui durent

J’ai la chance que l’on me confie souvent des problèmes complexes à résoudre, qui durent en général depuis pas mal de temps, et où plusieurs personnes s’y sont déjà, comment dire… »cassé les dents » ?

Je parle bien de chance, car c’est à travers ces expériences que j’apprends souvent le plus. Toutes les solutions classiques ont déjà été essayées plusieurs fois, et il faut donc « innover » pour trouver le grain de sable, le petit détail qui va faire la différence !

Voici les quelques règles/approches que j’applique :

  • Ne pas se faire expliquer tout ce qui a été essayé. On construit un diagnostic à partir d’hypothèse, que l’on vérifie, et dont on considère ensuite les résultats comme réputés « surs ». Il va ensuite se passer un long moment avant que l’on remette en question ces résultats et que l’hypothèse soit évaluée à nouveau. Si la personne qui a passé X jours ou heures dessus vous explique tout ce qu’elle a fait et les résultats qu’elle a eu, et qu’elle est convaincante, vous allez vous aussi construire ensuite à partir de ces informations et arriver à la même impasse. Il peut s’avérer que certains résultats soient erronés, ou qu’ils soient arrivés avec un concours de circonstance ou ne soient plus d’actualité. Vous avez la chance unique d’avoir un regard neuf, absent de tout cela. Et vous n’avez qu’un essai, car vous allez vous aussi émettre bientôt des hypothèses et rentrer dans l’entonnoir ! L’inconvénient est que vous allez certainement perdre du temps en essayant des choses qui ont déjà été testées à maintes reprises, mais c’est le prix à payer pour résoudre le problème. L’objectif est de comprendre juste le problème.
  • Avoir accès à tout ce qui est nécessaire. Il est crucial de pouvoir s’incruster dans toutes les couches (système/réseau/sécurité), afin de comprendre l’ensemble. Bien sûr cela se complique avec la taille de la structure et sa segmentation. Cela passe parfois par des ruses techniques afin de ne devoir attendre une validation organisationnelle ou technique.
  • Pouvoir reproduire le même le test ou scénario. Pour vérifier les idées et hypothèses, il faut valider le changement de comportement ou non en fonction des modifications, et donc pouvoir reproduire le problème à volonté.
  • Utiliser ses propres outils. Vous travaillez tout le temps avec Wireshark et là il n’y a que Network Monitor ? Il faut se battre pour utiliser ce que vous connaissez, pour plusieurs raisons. Déjà c’est un gain de temps immédiat. Un outil n’a d’intérêt que si l’on sait s’en servir. Aucun doute que l’on peut arriver au même résultat avec 2 outils, mais il faut être parfaitement à l’aise, afin de se concentrer sur que l’on voit (dans l’exemple, les paquets réseaux), et non pas sur comment mettre un filtre pour masquer ou afficher certains détails.
  • Valider les hypothèses majeures 2 fois et par deux outils si possible. Se tromper sur une hypothèse de ce type, et on risque de ne pas trouver avant longtemps. Si l’on construit d’après des connaissances d’une version précédente (sous Windows 2003 ça fonctionnait comme cela) alors qu’on est sur du Windows 2008, vérifier la documentation officielle pour entériner l’hypothèse.
  • Ne pas hésiter à générer des erreurs. Si l’on pense qu’un paramètre est complètement hors de cause, ne pas hésiter à le rendre faux et valider qu’il n’impacte toujours pas le problème.

Comme tout « sport », on prend des réflexes au fur et à mesure 🙂

Et vous, comment résolvez-vous vos problèmes ?

Le mot de la fin : Si vous aussi vous avez des cadavres et autres problèmes de préférence « insolubles », pensez à moi !

PowerShell: Measure-Command et Write-Output

Measure-Command permet de mesurer le temps d’exécution d’un bloc de code PowerShell, de façon simple et efficace. Cependant, cela génère une contrainte:

Measure-Command n’affiche aucun write-output à l’écran!

Il faut alors utiliser par exemple write-host, qui lui envoi le texte directement à la console, et n’est donc pas impacté. Utiliser write-host peut générer des impact:

  • Une redirection de la sortie écran vers un fichier ne fonctionnera pas ( > monlog.txt).
  • L’ordonnanceur ORSYP ne gère pas bien les sorties faites par Write-host, alors que les write-output ne posent pas de problème

Voici un script pour illustrer le sujet (ou à télécharger ici lotp_test_measure-command):

#******************************************************************************
#
#
Titre: lotp_test_measure-command.ps1
#
#
Description: test de measure-command
#
#
Prérequis: désactiver la signature des scripts PowerShell: Set-ExecutionPolicy remotesigned
#
#
Auteur: Mathieu Chateau – LOTP
#
mathieu.chateau@lotp.fr
#
Version: 0.1
#
******************************************************************************

#purge de l’écran
Clear

#Objectif du script: stocker plusieurs valeurs pour chaque ligne du tableau

Write-Output « Test 01: fait un sleep de 2s dans un measure-command« 
$temps=Measure-Command { sleep -Seconds 2}
Write-Output « temps d’exécution du test 01: $temps« 
Write-Output « ############« 

Write-Output « Test 02: fait un write-output dans un measure-command« 
$temps=Measure-Command {Write-Output « ce message est supprimé par measure-command, vous ne le verrez pas« }
Write-Output « le message n’est pas apparu mais la commande est exécutée quand même« 
Write-Output « temps d’exécution du test 02: $temps« 
Write-Output « ############« 

Write-Output « Test 03: fait un write-host dans un measure-command« 
$temps=Measure-Command {Write-host « ce message est envoyé à la console, vous le voyez même dans un measure-command« }
Write-Output « temps d’exécution du test 03: $temps« 

Powershell : tableau multidimensionnel (array de array)

J’ai dû récemment stocker des valeurs dans des tableaux (array) multidimensionnel en PowerShell. J’ai quelques peu galéré, et je me suis dit que je ne devais pas être le seul. Mes recherches d’infos via Google ne ramenaient pas grand chose, il est donc temps d’y remédier… 🙂

L’objectif est de stocker plusieurs ensembles de valeurs dans un tableau, afin de pouvoir les appeler dans une boucle for.

Ce qui m’a induit en erreur: Si on ne met pas une virgule au départ, cela ne fonctionne pas….Sauf si on met plus d’un élément lors de l’initialisation du tableau de tableau…Tout se complique quand on change et ne met plus qu’un seul élément… Patatras!

Voici un script qui explicite les différents cas, le dernier étant celui qu’il faut utiliser:

Egalement en téléchargement ici: lotp_test_array_of_array

#******************************************************************************
#
# Titre: lotp_test_array_of_array.ps1
#
# Description: test sur des array
#
# Prérequis: désactiver la signature des scripts PowerShell: Set-ExecutionPolicy remotesigned
#
# Auteur: Mathieu Chateau – LOTP
# mathieu.chateau@lotp.fr
# Version: 0.1
#******************************************************************************

#purge de l’écran
Clear

#Objectif du script: stocker plusieurs valeurs pour chaque ligne du tableau
Function afficherTableau($array)
{

for ($i=0;$i -lt $array.Length;$i++)
{
Write-Output « boucle N°: $i »
Write-Output $array[$i][0]
Write-Output $array[$i][1]
Write-Output $array[$i][2]
Write-Output « ——–« 
}

}

#Ce tableau ne fonctionne pas du tout comme prévu (il manque la virgule au début pour cela)
$tableauMauvais=(« Mathieu »,« Chateau »,« mathieu.chateau@lotp.fr »)
Write-Output « Affichage mauvais tableau »
afficherTableau $tableauMauvais

#Ce tableau fonctionne mais la construction n’est pas correcte (pas de virgule au début, mais ok car 2 éléments)
$tableauPasCorrect=(« Mathieu »,« Chateau »,« mathieu.chateau@lotp.fr »),(« Microsoft »,« Réseau »,« Sécurité »)
Write-Output « Affichage tableau qui fonctionne mais mal construit »
afficherTableau $tableauPasCorrect

#Tableau multidimensionnel construit correctement
#creation du tableau avec un seul élément (virgule avant la parenthèse)
$tableauCorrect=,(« Mathieu »,« Chateau »,« mathieu.chateau@lotp.fr »)
#Ajout d’un élément
$tableauCorrect+=,(« Microsoft »,« Réseau »,« Sécurité »)
Write-Output « Affichage tableau qui fonctionne et bien construit »
afficherTableau $tableauCorrect

Pour la coloration syntaxique dans le blog, j’ai utilisé le script PowerShell proposé ici:
http://helgeklein.com/blog/2010/01/syntax-highlighting-powershell-code-in-html-with-a-powershell-script/

Prise en main du Google Nexus S / android 2.3

La poste ayant fait son travail, me voici l’heureux possesseur du dernier de Google, le Nexus S. J’utilisais depuis 9 mois le premier de la firme, le Nexus One.

J’ai été saisi tout de suite par la fluidité de l’écran et la vitesse entre les écrans du wizard de démarrage. La mise à jour vers Android 2.3 n’étant pas encore sortie pour le Nexus One, je ne sais pas dire si cela vient essentiellement du matériel ou de l’OS, mais j’imagine des deux réunis.

La première chose demandée est bien sûr un compte Google. Comme pour le précédent, le téléphone n’a pas les paramètre correctes pour la 3G, il faut donc avoir un accès Wifi a porté!

Voici les paramètres à positionner dans les réglages:

nom: orange FR
apn: orange
proxy: aucun
port: aucun
user: orange
pass: orange
serveur: na
proxy mms: 192.168.10.200
mms: 8080
mcc: 208
mnc: 01
authen: aucun
type apn: default
Le Nexus S télécharge et installe les applications présentent sur l’autre téléphone, ce qui est très agréable 🙂
Le changement du bouton d’alimentation du haut vers le côté droit est perturbant au départ, mais comme avec tout changement, on s’y fait.
La face est totalement lisse, exit la trackball. Même les 4 « boutons tactiles » du bas sont rétro éclairés, la façade étant donc tout noir quand l’écran est éteint. Il n’y a également plus de led indiquant si le chargement du téléphone est en cours.
Je m’étais habitué à utiliser le trackball, notamment pour cliquer sur des liens étroit sur les pages web. La qualité du nouvel écran rend cependant inutile ce workaround.
Les sonneries ont changées, pas en mieux, mais cela n’engage que moi.
L’aspect semble plus « plastique » et moins massif, mais je trouve cela tout aussi bien. Suite à quelques chutes et avec le temps, la peinture commençait à partir en bas du Nexus One.
La batterie dure à priori plus longtemps, ce qui est normal (matériel neuf + 100mAH + nouvel OS).
Les 16Go intégrés de base sont un réel plus pour moi. Le montage et démontage pour l’accès depuis le PC va vraiment plus vite. Il n’y a en revanche plus d’emplacement pour carte d’extension.
Les traces de doigts sont beaucoup moins présentes, ce qui améliore la sécurité quand on utilise le dessin comme mot de passe.
Le son est meilleur que le Nexus One, mais je ne l’ai pas encore suffisamment utilisé pour quantifier l’amélioration.
Toutes mes applications fonctionnent sauf Navigon, qui crash au lancement :'(
Je ne comprends pas, comment est-ce que Google ne gère pas mieux les comptes Google Apps, même avec la nouvelle version de l’OS.
En rédigeant cet article, je suis tombé sur l’extension Chrome to Phone.  Devinez quoi ? Un message subliminal en bas indique que ça ne fonctionne pas avec un compte Google Apps…Damned!
En résumé:
Les plus par rapport au Nexus One:
  • Ecran plus grand
  • Fluidité et rapidité
  • Un coup de « polish » sur l’interface
  • Caméra avant et arrière, les 2 à 5M pixels
  • 16Go de stockage
  • Boot + vite
Les moins biens:
  • Les sonneries sont moins sympas
  • Le bouton power sur le côté droit est perturbant
  • Les comptes Google Apps sont toujours laissés de côté
Bref, je kiffe grave… 🙂