Comment rajouter un disque sans créer de chambardement ?

Bonjour,
Question sûrement toute bête pour vous …
Dans une baie, j’ai trois disques, disons: A vide vide B C
A représente sda, B sdb, C sdc

  • sdA contient mon système Jessie composé d’une partition de boot (/dev/sda1) et d’un volume group LVM2 composé de trois lv (root,home,swap).
  • sdB est un disque de backup pour linux
  • sdC est un disque de backup pour windows (pour d’autres machines sur le réseau).

Voici mon problème:

  • sdB me donnant des erreurs de lecture (smartd), j’ai décidé de le remplacer par un neuf.
  • j’ai mis un disque neuf dans le slot 2. Donc ma baie devient A X vide B C.
  • puis je voulais copier (avec DD) sdb1 dans sdX1

Et la tout a changé quand j’ai fais un fdisk -l:
sda s’appelle sdb
le nouveau disque X devient sda
sdb devient sdc
sdc devient sdd

comment cela se fait-il ?
J’ai édité /etc/fstab et renommé sdc1 et sdd1

J’ai rebooté la machine et je me retrouve avec un écran noir et un curseur qui clignote.

J’ai pu rétablir la situation en enlevant le nouveau disque X puis en fournissant le password de l’administrateur (après plusieurs choix systemctl reboot,systemctl default, password root,ctrl-D). Apparemment les disques ont repris leur ancien nom !

Bref je ne sais toujours pas comment rajouter un disque n’importe où sans provoquer un chambardement.
Si je mets les uuid à la place des /dev/sdx dans fstab, aurais-je plus de succès ?
Faut-il modifier autre chose que fstab ?
j’ai des scripts qui utilise la notation /dev/sdx, comment je fais ?
Merci,

Oui, très probablement.
C’est même pour éviter ce genre de souci que les UUID sont utilisés par défaut dans fstab depuis quelques versions de Debian :wink:

Je n’ai pas de réponse à te donner à ta question malheureusement, mais je suis bien curieux aussi de savoir pourquoi les disques ont été renommés à l’insertion du nouveau disque X, sachant que tu as démarré sur le meme disque principal… et qui aurait théoriquement du rester en sda…

Sinon oui pour eviter des désagrements passes par les UUIDS, ou les Labels eventuellement si tu en as attribué.

Admettons pour /etc/fstab.
En théorie, il faudrait donc remplacer tous les /dev/sdxy PARTOUT !

Non. Le nommage des disques par Linux n’a aucun rapport avec le disque d’amorçage ni la numérotation des disques dans le BIOS. Pour rappel, le nommage des disques /dev/sd* est par nature non persistant et imprévisible car il dépend de l’ordre d’énumération qui n’est pas toujours déterministe. Il peut varier d’un démarrage à l’autre même si on n’a rien changé !

Il vaudrait mieux, oui. Pour les endroits où l’utilisation de la syntaxe de type “UUID=xxx” n’est pas possible et i faut impérativement un nom de périphérique, on peut utiliser les liens symboliques persistants mis en place par udev sous /dev/disk/by-{id,label,partlabel,partuuid,uuid}.

Oui c’est vrai j’avais deja lu ici à plusieurs reprises des sujets où tu avais écrit ça, mais dans ma réponse au-dessus je me suis fié à ma propre expérience jusqu’à présent où systématiquement le disque sur lequel j’amorçais était dénommé sda. Mais bon je ne me sers jamais de cette denomination personnellement, je passe en general par les UUID, ou bien par les labels que j’attribue aux disques (et là je sais tu vas me dire qu’il faut aussi se méfier des labels de disques si jamais deux disques ont le meme label).

S’il est question de se référer au disque dur lui même, il est possible d’utiliser les lien contenus dans le répertoire :

/dev/disk/by-id/

Ce lien reprends le numéro de série du disque, et ce numéro est indépendant du contenu (partitions et données) inscrit sur le disque.

Et les pro le font ? Je vois plein de scripts sur internet qui utilisent /dev/sdxy …

Finalement,pour revenir à mon problème, y a t’il un tutorial ou une marche à suivre quelque-part pour ajouter un disque SANS se poser des questions du genre “vais-je effacer ma partition” ?

ok

Copier avec dd une partition complète est en général ine fausse bonne idée. Toutes les structures sont copiées, en particulier les UUID. le système de fichier est conservé avec la même fragmentation.
D’autre part, vous constatez dans le reste de votre message les dégâts provoqués par la non persistance des nommages /dev/sdXp.
Comme vous utilisez déjà LVM2 pour le système sur le premier disque, pourquoi pas profiter du remplacement du disque qui présente des signes de faiblesse pour utiliser aussi LVM2 pour ce disque de sauvegarde pour Linux.
Insérer le disque et via

lsblk
sudo lvmdiskscan

déterminer la lettre ‘X’ qui désigne ce disque (tout le disque, pas de partition)

sudo pvcreate /dev/sdX
sudo vgcreate backup_vg /dev/sdX

Puis, dans /dev/backup_vg vous créez autant de volumes logiques que nécessaire, formattés avec /sbin/mkfs.xfs par exemple.

Tout dépend du logiciel utilisé pour vos sauvegardes, mais si par exemple vous avez actuellement les sauvegardes d’une machine sous /mnt/NomMachine, vous pouvez vous permettre de créer un volume logique par machine sauvegardée.
LVM est suffisamment flexible pour pouvoir être adapté à la configuration la plus logique.

Pour l’utilisation des sauvegardes, si vous exportez par date/machine ou autre je suggère un export NFS d’un montage en lecture seule du volume logique, combiné éventuellement avec l’utilisation du mécanisme autofs

Autrement dit, vous pouvez décider d’une clé de nommage pour identifier les sauvegardes, et que le chemin canonique (sur les machines du réseau) est par exemple /backups/cle

Sur votre serveur stockant les sauvegardes un fichier pour autofs /etc/auto.backups pourrait contenir des lignes du genre

ATA1558A_18000     -fstype=xfs,defaults,ro  :/dev/backup_vg/ATA1558A_18000_lv

alors que sur les machines clientes, ce searit plutôt

# @(#)  /backups mapping for automount
*     -ro,nosuid         im10:/backups/&

Où im10 est à remplacer par le nom du serveur.

Naturellement, c’est tout un travail de conception, d’adaptation de la procédure de sauvegarde, mais vous n’aurez pas de problèmes d’UUID (vous utilisez un nommage logique /dev/backup_vg/Nom_lv ), vous pouvez conserver une zone du disque non utilisée, la copie faite lors de la bascule sur le disque neuf permet une défragmentation, …

Bref, c’est vous qui voyez :slight_smile: Il y en a qui ont essayé, ils ont eu des problèmes http://michel.buze.perso.neuf.fr/lavache/chevalier_laspales_le_train_pour_pau.htm

Cordialement,
Regards,
Mit freundlichen Grüssen,
مع تحياتي الخالصة

F. Petitjean
Ingénieur civil du Génie Maritime.

« Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. » (R. Devos)

Les pros utilisent du vrai matos de pro, qui coûte les yeux de la tête, et qui dispose de contrôleur RAID matériel très chiant à configurer et l’OS ne voit que /dev/sda, /dev/sdb et bonjour pour avoir des paramètres du genre taille des bandes ( Stripe Size )
Bien sûr les utilitaires ne sont fournis que pour les systèmes “supportés” (lire W$ RedHat et Süse ) et les dépôts de paquets communautaires (autres distros) ne sont pas à jour ou changent d’adresse sans prévenir.

Vous combinez cela avec des postes clients uniquement Windows Pro, un Active Directory bien opaque géré par des tâcherons qui ne connaissent rien à Linux (et qui travaillent depuis un Global Machin en Inde ), et vous comprenez ce que veut dire un environnement hostile :frowning2:

Cordialement,
Regards,
Mit freundlichen Grüssen,
مع تحياتي الخالصة

F. Petitjean
Ingénieur civil du Génie Maritime.
Bureau Veritas

« Un ordinateur c’est comme un frigo : on le branche et ça marche. »
Laurent Serano Directeur informatique, réunion Délégués du Personnel 2010

Dieu règne au ciel, et l’argent sur la terre.
Proverbe allemand

Je crois que je dois mal m’exprimer …

  • sdb est un disque de backup pour linux
  • si je rajoute un disque vierge dans un slot libre de la baie:
    • sdb devient sdc
    • sda composé de trois LV une partition boot devient sdb
    • sdc devient sdd
    • le disque vierge devient sda

Je n’ai pas de problèmes de backup … du moins pour l’instant !

Pas du tout ! C’est très clair.

Vos déboires avec les nommages de type sdX montrent à l’évidence la fragilité de l’approche.
Pour le disque système (sda qui se mue en sdb ) il est urgent de modifier /etc/fstab pour que la partition qui est montée en /boot soit identifiée par un UUID=xxxxx et non par /dev/sdaX

Ce que je suggérais c’était d’avoir à terme un disque backup_vg et non pas un jour sdb un jour sdc.

Si ce n’est pas un secret défense peut-on avoir le retour des commandes

lsblk
sudo lvmdiskscan
sudo lvs
cat /etc/fstab | grep -v '^#'
df -hT | fgrep -v tmpfs

Personnellement je préfère utiliser LVM quand c’est possible. En particulier pour des disques non système qui ne seront utilisés que par des systèmes Linux, un pvcreate sur tout le disque (pas de partitions physiques à la MSDOS ou GPT ) me semble le choix le plus naturel.
De plus vous pouvez faire cette opération sur n’importe quelle machine Linux.

Des goûts et des couleurs.

Cordialement,
Regards,
Mit freundlichen Grüssen,
مع تحياتي الخالصة

F. Petitjean

Tous les nombres premiers sont impairs, sauf un.
Tous les nombres premiers sont impairs, sauf deux.

Concierge qui roule, ne s’arrête qu’au bas de l’escalier.
Les proverbes philosophiques du Professeur Choron

Voici:
lsblk donne
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
├─sda1 8:1 0 243.2M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 1.8T 0 part
├─myVG0-lv–root 254:0 0 465.7G 0 lvm /
├─myVG0-lv–home 254:1 0 465.7G 0 lvm /home
└─myVG0-swap 254:2 0 3.7G 0 lvm [SWAP]
sdb 8:16 0 1.8T 0 disk
└─sdb1 8:17 0 1.8T 0 part
sdc 8:32 0 1.8T 0 disk
└─sdc1 8:33 0 1.8T 0 part /mnt/sdc1
sr0 11:0 1 1024M 0 rom

lvmdiskscan donne

/dev/myVG0/lv-root [ 465.66 GiB]
/dev/sda1 [ 243.19 MiB]
/dev/myVG0/lv-home [ 465.66 GiB]
/dev/myVG0/swap [ 3.72 GiB]
/dev/sda5 [ 1.82 TiB] LVM physical volume
/dev/sdb1 [ 1.82 TiB]
/dev/sdc1 [ 1.82 TiB]
3 disks
3 partitions
0 LVM physical volume whole disks
1 LVM physical volume

cat /etc/fstab | grep -v ‘^#’ donne:

/dev/mapper/myVG0-lv–root / ext4 errors=remount-ro 0 1
UUID=33a6c33d-ae69-4d73-a5fc-fd6526b457cb /boot ext4 defaults 0 2
/dev/mapper/myVG0-lv–home /home ext4 defaults 0 2
/dev/mapper/myVG0-swap none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/sdc1 /mnt/sdc1 ext4 defaults 0 2

df -hT | fgrep -v tmpfs donne

Sys. de fichiers Type Taille Utilisé Dispo Uti% Monté sur
/dev/dm-0 ext4 459G 171G 265G 40% /
/dev/sda1 ext4 232M 33M 183M 16% /boot
/dev/sdc1 ext4 1.8T 162G 1.6T 10% /mnt/sdc1
/dev/mapper/myVG0-lv–home ext4 459G 5.2G 430G 2% /home

Moi, pour l’instant, je préfère un disque Linux et un disque Windows. Un peu plus tard je les remplacerai par des disques externes.

Je vous propose de me corriger mon fstab et de me dire quand je peux mettre dans ma baie mon disque vierge.

Que nenni ! Je le formatte ci-dessos (balises 3*Altgr+7 )

/dev/mapper/myVG0-lv--root / ext4 errors=remount-ro 0 1
UUID=33a6c33d-ae69-4d73-a5fc-fd6526b457cb /boot ext4 defaults 0 2
/dev/mapper/myVG0-lv--home /home ext4 defaults 0 2
/dev/mapper/myVG0-swap none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/sdc1 /mnt/sdc1 ext4 defaults 0 2

Il est magnifique ce fichier ! Vous avez un système qui résiste à un changement de noms car il utilise des identifiants persistants, sauf le disque monté sur /mnt/sdc1

Reformattage de la sortie de df -hT

Sys. de fichiers Type Taille Utilisé Dispo Uti% Monté sur
/dev/dm-0 ext4 459G 171G 265G 40% /
/dev/sda1 ext4 232M 33M 183M 16% /boot
/dev/sdc1 ext4 1.8T 162G 1.6T 10% /mnt/sdc1
/dev/mapper/myVG0-lv--home ext4 459G 5.2G 430G 2% /home

Si j’ai bien compris, c’est le disque sdb qui n’est pas monté qui présente des signes de faiblesse ? ou celui qui est monté sur /mnt/sdc1 ?

Pour avoir un /etc/fstab du tonnerre il faudrait les UUID
Donnez le retour (entre balises triple backquotes Altgr+7 ) de

sudo lsblk -o +UUID

sudo est nécessaire pour avoir le champ UUID

Vous pouvez en ouvrant deux terminaux tester la commande mount d’un côté et éditer /etc/fstab de l’autre.

Exemple

fp2x@halc9:~$ sudo lsblk -o +UUID /dev/sdd7
NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT UUID
sdd7   8:55   0 768,7M  0 part /mnt/truc  cc03dd3a-8cd7-4a4f-aa99-d6c40ae81e6a
fp2x@halc9:~$
fp2x@halc9:~$ sudo mkdir /mnt/truc
fp2x@halc9:~$ sudo mount -t reiserfs UUID=cc03dd3a-8cd7-4a4f-aa99-d6c40ae81e6a /mnt/truc
fp2x@halc9:~$ df -hT /mnt/truc /tmp
Sys. de fichiers Type     Taille Utilisé Dispo Uti% Monté sur
/dev/sdd7        reiserfs   769M     33M  737M   5% /mnt/truc
/dev/sdd7        reiserfs   769M     33M  737M   5% /tmp
fp2x@halc9:~$
fp2x@halc9:~$ sudo umount -l /mnt/truc
fp2x@halc9:~$ fgrep cc03dd3a-8cd7-4a4f-aa99-d6c40ae81e6a -B1 /etc/fstab
# /dev/sdd7       /tmp            reiserfs defaults        0       2
UUID=cc03dd3a-8cd7-4a4f-aa99-d6c40ae81e6a       /tmp    reiserfs defaults        0       2
fp2x@halc9:~$

En vous inspirant de ce modèle, vous obtenez facilement une table de montage robuste et documentée. Cette modification de cette table a été faite il y a très longtemps par une mise à jour de Debian.

Pour utiliser un système de fichiers dans un script (ou en interactif) vous référencez le point de montage, et seulement le point de montage.
Dans le cas d’une copie pour remplacer préventivement un disque (sage précaution), nous allons supposer que le système de fichiers à copier est celui monté présentement en /mnt/sdc1 et que la destination finale est la partition /dev/sdb1 1.8To inutilisée.
Vous vérifiez que la destination est bien la bonne et bien inutilisée.
Vous créez un système de fichiers sur le périphérique et un point de montage temporaire

sudo /sbin/mkfs.ext4 /dev/sdb1
sudo mkdir /mnt/copie
sudo mount -t ext4 /dev/sdb1 /mnt/copie

Vous choisissez un moment où vous êtes sûr que la sauvegarde ne va pas se mettre en route, éventuellement vous arrêter la tâche planifiée.
Vous lancez la copie via rsync car cela peut durer longtemps et si pour une raison quelconque cela s’arrête vous ne serez pas obligé de recommencer au début.

sudo rsync -a -v /mnt/sdc1 /mnt/copie >  /tmp/copie.log 2>&1 &

Ou vous pouvez détourner le journal de la copie dans votre répertoire HOME, ce n’est pas la place qui manque.
Vous vérifiez que cela s’est bien passé

df -h -t ext4

Pour finaliser la bascule, il faut

  • démonter /mnt/sdc1
  • mettre à jour la table de montage, en déterminant le nouvel UUID et en le collant dans la table
  • monter sur /dev/sdc1 le nouveau périphérique
  • démonter /mnt/copie et rmdir /mnt/copie

Cette méthode est celle qui se rapproche le plus de celle que vous avez envisagé dans votre premier message.

Je ne vous cache pas que pour ma part je procéderais ainsi
Vérifier à deux fois que la destination est bien /dev/sdb

sudo pvcreate /dev/sdb
sudo vgcreate backup_vg /dev/sdb
sudo lvcreate bkp1_lv  --size 300G backup_vg
sudo /sbin/mkfs.ext4  /dev/backup_vg/bkp1_lv
sudo mount -t ext4  /dev/backup_vg/bkp1_lv  /mnt/copie

suivi du rsync comme ci-dessus
Pour la bascule, l’entrée dans fstab est à changer en

/dev/backup_vg/bkp1_lv /mnt/sdc1 ext4 defaults 0 2

Pas besoin de spécifier un UUID, le nommage est persistant, vous avez amplement de la place sur le reste du disque pour d’autres utilisations ou pour étendre le volume logique bkp1_lv.

Vu la place occupée relativement modeste, j’ai l’impression que vous vous inquiétez de la santé des disques un peu prématurément. Quels sont les paramètres SMART qui vous donnent du souci ?

Sur la machine halc9 ci-dessus le disque sda a été fabriqué

Manufactured in week 49 of year 2002

et j’ai en tout 3 erreurs d’écriture corrigées. La table de partition de type DOS a été faite pour AIX et est incompatible avec Linux, mais on a bien 8 ou 9 ans d’utilisation sous IBM AIX.

Cordialement,
Regards,
Mit freundlichen Grüssen,
مع تحياتي الخالصة

F. Petitjean
Ingénieur civil du Génie Maritime.

« Un ordinateur c’est comme un frigo : on le branche et ça marche. »
Laurent Serano Directeur informatique, réunion Délégués du Personnel 2010

Mon fstab (3*altgr+7:comprend pas: je ne viens pas assez souvent :disappointed_relieved:)

/dev/sda1: UUID="33a6c33d-ae69-4d73-a5fc-fd6526b457cb" TYPE="ext4" PARTUUID="7d993a1e-01" /dev/sda5: UUID="ISxiRw-SikF-6aak-jBbT-SrwS-vXm7-TRpnQM" TYPE="LVM2_member" PARTUUID="7d993a1e-05" /dev/sdc1: UUID="b80b4b6a-a844-42da-8d19-e03a58dd9f56" TYPE="ext4" PARTUUID="696ded66-01" /dev/sdb1: UUID="8a0cfaaf-1601-447f-8b0b-29b2b5a8e4bf" TYPE="ext4" PARTUUID="14b56577-01" /dev/mapper/myVG0-lv--root: UUID="b960602f-1ca7-432a-8ae7-15b205fd5077" TYPE="ext4" /dev/mapper/myVG0-swap: UUID="7a15115c-b155-49c1-a9a9-6ec41055dd2f" TYPE="swap" /dev/mapper/myVG0-lv--home: UUID="700f99f1-2ec9-4b84-9201-b0aff1a15b5b" TYPE="ext4"

Si j’ai bien compris, c’est le disque sdb qui n’est pas monté qui présente des signes de faiblesse ?

oui

votre méthode est applicable aussi aux LVs ? par exemple

uuid=700f99f1…b5b /dev/mapper/mvVG0-lv–home /home ext4 defaults 0 2

je vous cite en corrigeant le disque défaillant:

Quand je vais insérer un nouveau disque, qui me dit qu’il va s’appeler sdb ?

J’ai un message quotidien qui me dit que j’ai UN secteur mauvais.
Current_pending_sector = 1

Avant d’utiliser la commande fsck.ext4 -vcDfty -C 0 /dev/sdb1 j’en avais 105 !

Je m’attendait à passer de 105 à zéro.

Oui, mais c’est sans intérêt puisque les noms des LV sont déjà persistants (et basés sur des UUID internes à LVM).

Non, c’est soit l’UUID soit le nom de périphérique mais pas les deux.

Rien, et c’est pour cela qu’il ne faut pas se baser sur le nom du disque après l’avoir initialisé (création des partitions + systèmes de fichiers).

Et idéalement il faudrait renommer le point de montage /mnt/sdb1 (d’autant plus que /mnt est censé servir de point de montage temporaire et n’a pas vocation à contenir des sous-répertoires servant de points de montage).

fsck n’est pas prévu pour réparer les secteurs défectueux, mais au mieux les détecter et les marquer avec l’option -c pour ne plus les utiliser. Et en présence de secteurs défectueux, je me garderais bien de passer des options comme -D (optimisation des répertoires) qui modifient la structure du système de fichiers.

Si tu as la position exacte du secteur défectueux, tu peux essayer d’écrire dedans avec hdparm pour le faire réallouer mais ce n’est pas garanti. Parfois le fait qu’un secteur soit illisible n’est que transitoire, il peut spontanément redevenir lisible ultérieurement (par effet de variation de tension d’alimentation ou de température par exemple).

On est en train de changer de sujet …
gsmartcontrol m’annonce 132 error count
les 5 derniers messages sont:
8 sectors at lba 79681296 deux fois
79681288 deux fois
79681273 une fois

Dois-je vraiment pas m’inquiéter ? et il n’a pas 8 huit ans le disque !

Tu devrais peut-être ouvrir une autre discussion pour ce nouveau sujet.

PS : je n’ai rien contre gsmartcontrol (que je ne connais pas) mais je préfère la sortie brute de smartctl -a /dev/sdX