Skip to content

Linux Attitude

Le libre est un état d'esprit

Archive

Tag: Matériel

Niveau :      
Résumé : hdparm ; danger

Tout le monde sait qu'il est possible de faire du hotplug disque avec du scsi. C'est prévu, du point de vue du système et du matériel. Il suffit juste que le disque ne soit pas utilisé lorsqu'on le débranche, c'est-à-dire que ses partitions sont démontées. D'un point de vue physique, il est préférable d'avoir des connecteurs sca (80 broches) pour faciliter la chose.

Pour ce qui est des disques ide, rien n'a été prévu. Mais cela n'est pas impossible. Il s'agit de désactiver le disque dans le noyau, puis de désactiver le contrôleur. Et on le réactivera par la suite.

Attention, tout ce qui suit est à tester à vos risques et périls. Il il y a peu de chance que vous perdiez votre disque (même si cela peut arriver), mais il est plus probable que vous perdiez votre carte mère (le contrôleur ide), voire quelques données. Pour ma part, je n'ai jamais rien grillé, mais ça n'a pas fonctionné à tous les coups.

Notez qu'il existe plusieurs techniques. Soyez prudents !

# on démonte les partitions utilisées
$ umount /dev/hdb1
# on éteint le disque
$ hdparm -Y /dev/hdb # si votre disque ne se réveille pas après le rebranchement, supprimer
# on coupe le bus (on peut aussi essayer sans si la réactivation ne fonctionne pas)
$ hdparm -b 0
# on enlève le disque
# et on en remet un autre si besoin
# on remet le bus en activité
$ hdparm -b 1
# teste la lecture de quelques octets
$ dd if=/dev/hdb of=/dev/null count=1
# si ça ne marche pas, il ne vous reste qu'une solution avant le reboot
$ hdparm -w /dev/hdb # attention, jamais testé !
# et enfin relecture des partitions
$ hdparm -z /dev/hdb

Si votre nouveau disque est plus grand que l'ancien, il se peut que vous ayez des problèmes d'accès aux données en fin de disque.

Notez qu'une autre technique existe, on peut remplacer les hdparm -b par :

# on désactive l'interface ide
$ hdparm -U /dev/hdb
# et on la réactive
$ hdparm -R /dev/hdb

Attention, cela coupe l'interface ide et donc les 2 disques de la même nappe.

Niveau :      
Résumé : lspci ; lshw : lsusb ; dmidecode

Pour savoir quel matériel constitue votre machine vous avez plusieurs commandes à votre disposition. La première, la plus courante est lspci :

$ lspci

Elle vous donne un aperçu simple et rapide des périphériques tournant sur le bus pci, cela inclue les contrôleurs usb, les ports isa ...

Une autre commande peut vous donner des informations bien plus détaillées sur ces périphériques, mais aussi ceux de beaucoup d'autres (par exemple la liste des barrettes mémoire) :

$ lshw

Option -short pour avoir une simple liste avec moins de détails (notez que vous aurez plus d'informations en étant root qu'utilisateur normal) :

$ lshw -short

Notez que dmidecode peut vous afficher le même genre d'information avec encore plus de détails , mais cette fois en lisant les informations fournies par le bios (il faut être root) :

$ dmidecode -q

L'intérêt de dmidecode est qu'il permet de lire des informations détaillées sur un type de périphérique précis, par contre il n'en connaît pas autant que lshw :

$ dmidecode -t bios

Si vous cherchez uniquement la liste des périphériques usb :

$ lsusb -t

Notez l'option -t qui vous permet de distinguer du premier coup d'oeil les point d'accès, les hubs et les périphériques.

Dans un prochain article nous verrons les informations que peuvent nous donner /proc et /sys.

Niveau :      
Résumé : raid1

On me dit souvent que mettre une machine en raid c'est une bonne idée, j'approuve, mais il faut savoir ce que l'on cherche.

Si vous cherchez la sécurité (de vos données), vous allez vouloir du raid1. Deux disques, partitionnés de la même façon, et c'est parti. Et là vous vous sentez très intelligent et vous vous dites que mettre le swap en raid 0 serait une bonne idée, ça permettrait d'accélérer le taux de transfert du swap et économiser de la place.

Hé oui, mais avez-vous vraiment pensé au cas où un disque grille ? Bravo, vous n'avez pas perdu vos données ! Mais votre système ne fonctionne plus, et donc vos données en cours d'utilisation ne sont probablement plus valables, pensez à votre base mysql, à la reconstruction des données, au scandisk au prochain redémarrage ... finalement rien ne garanti que vous n'avez rien perdu. Bon si vous êtes chez mémé c'est peut-être acceptable, mais ne faites jamais ça sur une machine de production !

Finalement, vous avez compris, et vous mettez aussi votre swap sur un raid1. Et vous en profiterez pour ajouter un disque d'avance (en failover) pour reconstruire automatiquement le raid en cas de problème (disque que vous pouvez brancher et éteindre). Cela vous laissera en cas de problème le temps d'aller chez monoprix acheter un disque de secours. Car on n'oublie pas son copain Murphy qui vous fera griller le 2e disque dans la journée. Les disques de la même série grillent toujours en même temps.

De plus, vous n'oublierez pas de monitorer votre raid, car un raid non monitoré c'est comme un ordinateur sans OS (libre), ça ne sert à rien.

Petite note sur les performances du raid 1 : celui-ci ne profite pas du fait qu'il y a 2 disques durs pour accélérer UNE lecture (pas de stripping), par contre, il est capable d'effectuer 2 lectures simultanées.

Niveau :      
Résumé : hdparm -z || blktool reread-part

Il ne faut pas confondre ce qui est enregistré sur disque et ce qui est en cours d'utilisation par le logiciel. Ceci est valable en beaucoup d'endroits (fichiers de configuration par exemple), c'est aussi valable pour les partitions.

Lorsque vous allumez votre machine, le noyau scanne la table des partitions de vos disques une seule fois et l'enregistre en mémoire. Toute modification que vous pourriez faire par la suite ne sera pas prise en compte. Par conséquent lorsque vous modifiez une table de partition (avec fdisk par exemple), la modification n'est pas directement prise en compte. Mais il n'est pas nécessaire pour autant de rebooter. En effet, il existe un appel système qui permet de demander au noyau de relire la table des partitions. Et celui-ci est appelé automatiquement par fdisk ou cfdisk lorsqu'une modification a été faite (ouf !).

Alors pourquoi toute cette histoire me direz-vous ? Hé bien il existe 2 cas où vous pourriez avoir besoin de faire cet appel vous-même. Tout d'abord si vous êtes expérimentateur dans l'âme et que vous modifiez votre table des partitions à la main.

Ensuite, si vous modifiez un disque dont une des partitions est montée le noyau refusera de relire la table. A vous de démonter les partitions nécessaires avant de relancer la commande magique :

$ hdparm -z /dev/hda

Pour ceux qui voudraient s'ancrer dans la modernité et utiliser les nouveaux outils :

$ blktool /dev/hda reread-part

Notez que dans le cas où votre disque modifié contient '/', rien à faire, vous serez obligé de rebooter pour relire la table (à moins que vous ne soyez capable de démonter / :-). Pour ceux qui voudraient chercher, il est possible de démonter / (enfin de le remplacer par un autre) avec la commande pivot_root ...