Sommaire
Bonjour 'nal,
J'étais tranquille en train de m'occuper de mes propres affaires quand soudain il n'y avait plus beaucoup de place sur le disque du NAS à la maison. Cela faisait des mois et des mois que l'on se battait pour gratter un giga par ici, un gigot par là, et force est de constater que la situation ne s'améliorait pas. 500 GB remplis à ras bord et plus grand chose à supprimer.
Bon allez je cède, je commande un SSD 1 TB en remplacement, et tant qu'a faire je vais changer les disques mécaniques des autres ordis. Allez hop, c'est parti pour le grand remplacement.
dd
Le NAS est en réalité un vieil Eee PC dans lequel le disque n'est pas facilement accessible. Il faut démonter le clavier, puis dévisser et retirer le cache, et enfin débrancher une nappe pour pouvoir retirer le support sur lequel le disque est vissé. J'en ai profité au passage pour casser une prise de la nappe, non sans m'étonner qu'il faille forcer autant pour la décoincer. Bah en fait il ne fallait pas forcer, comme pour les huit milles fois où j'ai abîmé un truc en forçant… C'est une leçon qui a du mal à rentrer.
Heureusement dans ce cas j'ai pu remettre la nappe en place, bien fixée. La petite nappe du touchpad, quant à elle, refuse de tenir en place dans son slot fendu, vestige d'une époque où je démontais les ordis en forçant. Heureusement cette époque est révolue. Mais bon, on s'en fiche, qui a besoin d'un touchpad sur un NAS ?
J'ai donc sorti l'ancien disque, et comme je n'avais pas envie de me refaire une installation du système je me suis dit, pas bête, que j'allais simplement transférer les données de l'ancien disque au nouveau à coup de dd
. Je suis un vrai hacker, tellement malin et ingénieux. Il s'avère après coup que c'était en fait la pire idée.
Les deux disques branchés via des boîtiers USB sur un autre ordi, je lance la commande. Ça prend un peu plus de 5 h à 30 MB/s. sans surprise. On en a déjà parlé lors d'une précédente anecdote, l'USB en pratique n'est pas aussi efficace qu'en théorie.
Une fois la copie terminée je lance GParted. Il me sort un message au sujet d'un backup GPT incorrect que je ne comprends pas et me propose de corriger lui-même le problème. Allez, fais donc ça. Ensuite il me présente bien les trois partitions : GPT, /boot, et / ; cette dernière étant chiffrée. J'étends / pour occuper tout l'espace puis je remets le disque dans le NAS.
Ça démarre sans problème. J'entre le mot de passe du disque, ça passe, puis le boot se termine correctement. J'entre le login et le mot de passe, puis je vérifie que l'opération a bien donné le résultat attendu.
$ df --human-readable
Filesystem Size Used Avail Capacity Mounted on
/dev/sda2 1G 430M 570M 42% /boot
/dev/mapper/ubuntu-vg 500G 498G 2M 99% /
Bah ! Où qu'il est mon tera ?
resize2fs
Un coup de fdisk --list
indique que les partitions ont bien la taille attendue ; tout le disque est occupé. Tout ? Tout. Je ne sais pas ce qu'il se passe et je fais l'hypothèse qu'il y a une différence entre la taille telle qu'indiquée dans la table des partitions et celle vue par ext4. À moins que ce soit le LVM entre les deux ? Nouvelle stratégie :
$ resize2fs /dev/mapper/ubuntu-vg
resize2fs: New size results in too many block group descriptors.
Ah mais c'est pas vrai, il n'y a rien qui marche à la fin ! Après une petite recherche sur le web je trouve un internaute prétendant que je fais n'importe quoi. Pfff, qu'est-ce qu'il y connaît ce tytso ?
Bon, okay, je remballe ma fierté… Ça fait pas loin de huit heures que je jongle avec des étrons sans le savoir.
Device UUID
Tant pis, me dis-je, je vais formater le disque correctement et transférer les données d'un disque à l'autre avec rsync
. Comme je n'ai pas envie de bosser sur le NAS poussif je sors à nouveau le disque, je le remets dans un boitier USB et je rebranche tout sur l'autre ordi. Il s'avère après coup que c'était en fait la pire idée.
Sur l'autre ordi, c'est le bazar. GParted n'arrive pas à créer les partitions. Il me sort toujours l'erreur au sujet de GPT. Je lance fdisk
mais celui-ci me sort la même erreur. Un internaute me conseille de supprimer et recréer les partitions aux mêmes offsets, sans effacer les données. C'est rigolo, et un peu flippant, mais ça ne change rien.
Et soudain la lumière. Je vois dans la sortie de fdisk
que les deux disques ont le même UUID. J'en débranche un, et hop plus de problème de GPT. Il semblerait que le système n'y voit plus très clair quand deux ressources ont le même Universally Unique IDentifier. Qui aurait pu prévoir ?
Après avoir changé l'UUID du disque grâce à l'aide du web (bien pratique ce recueil de connaissances) je remets d'équerre la partition chiffrée. Je monte la partition, tout à l'air okay. Je rebranche le second disque, 🎵touc-ta🎵ta-touc🎵 (sons de GNOME qui monte puis démonte le disque). Tiens tiens, me dis-je, on dirait que Nautilus buggue. M'en fiche, je n'ai pas besoin de l'UI, je vais monter la partition dans le terminal.
mount: unknown filesystem type 'LVM2_member'
Vazyyyyyy keskya encore ? À nouveau, une petite recherche sur le web me donne rapidement la réponse (décidément ce web est sacrément pratique). Il s'avère que les deux disques externes ont chacun un groupe de volumes, et que ces groupes ont le même nom. Ça devient compliqué pour le système. Quelle bonne idée d'avoir fait un dd
!
rsync
Finalement je renomme le groupe de volumes, ce qui me permet de monter les deux disques. Un coup de rsync --archive
et six heures plus tard je peux remettre le disque dans le NAS. Ça boute, reste à entrer le mot de passe pour déchiffrer le disque.
Not enough available memory to open a keyslot.
Bon okay, je dois être installé sur un cimetière indien ou un truc dans le genre. Nouvelle recherche sur le web (bien pratique cet outil), j'y apprends que le chiffrement appliqué par Luks dépend des ressources du système, alors évidemment il s'est basé sur l'ordi sur lequel j'ai fait les manips, plus puissant que l'Eee PC. Là où j'avais branché les disques en externe. Pour. Gagner. Du. Temps.
grub-install
Allez allez, on perd pas le moral. Je remets le disque dans le NAS et je démarre sur une distribution live pour refaire tout le partitionnement. Aucun souci ici si ce n'est que les menus en texte du live d'Ubuntu Server sont en blanc sur fond jaune. C'est illisible mais en plissant les yeux j'arrive à faire mes manips. Je sors ensuite à nouveau le disque que je branche en externe sur l'autre ordi. Le disque apparaît correctement partitionné et il est maintenant vierge et bien monté. Je peux voir les deux disques externes en même temps. Je copie les données de l'un à l'autre avec rsync
et il ne reste plus qu'à remettre GRUB. Ça franchement c'est fastoche, je l'ai fait plein de fois.
$ cryptsetup luksOpen /dev/sdb3
$ mount /dev/mapper/nas-vg /mnt
$ mount /dev/sdb2 /mnt/boot
$ mount --bind /dev /mnt/dev
$ mount --bind /proc /mnt/proc
$ mount --bind /sys /mnt/sys
$ chroot /mnt
$ grub-install /dev/sdb
Ceci terminé je remets le disque dans le NAS, je l'allume, eeeeeeeeeeeet… pas de GRUB. Enfin si, mais il me dit qu'il ne sait pas quoi faire.
update-initramfs
Après une courte recherche (je te laisse deviner où j'ai trouvé l'info) j'apprends que j'aurais dû lancer update-initramfs -u -k all
à la suite des commandes précédentes. Pas de souci, je fais ça à partir du système live.
cryptsetup: WARNING: failed to detect canonical device of overlayfs
cryptsetup: WARNING: could not determine root device from /etc/fstab
Rhô là là ça sent pas bon encore. Après un petit tour sur le web. Je comprends qu'il y a une incohérence entre les UUIDs des partitions tels qu'indiqués par lsblk --fs
et ceux notés dans /etc/fstab et /etc/crypttab. Quelle bonne idée d'avoir fait un rsync
!
Après avoir aligné ces deux derniers avec la sortie de lsblk
je relance update-initramfs
qui se termine sans erreur ni avertissement. Je redémarre le NAS, entre la clé du disque… tout se passe bien.
$ df --human-readable
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/nas-vg 914G 434G 434G 51% /
/dev/sda2 2.0G 181M 1.7G 10% /boot
C'était vraiment trop facile.
Conclusion
Des fois on pense gagner du temps en étant malin et finalement ce n'est que de la perte. On essaye alors de sauver la face en se disant qu'on a appris des trucs.
Des fois ont fait des trucs alors qu'on sait très bien que c'est une mauvaise idée. Parfois on s'y est même déjà brûlé plusieurs fois (RIP la nappe du touchpad).
Cette histoire illustre ce qui peut arriver quand on combine les deux : un enchaînement de mauvaises idées et de prises de décision en étant mal informé, le tout pour une perte de temps maximale. Si j'étais payé à l'énergie dépensée j'aurais fait fortune.
Pour les autres ordis j'ai opté pour un formatage complet suivi d'un rsync
de $HOME
uniquement. J'ai quand même eu quelques pépins mais rien d'aussi pénible qu'ici.
Un grand merci à tous les usagers du web qui prennent le temps d'expliquer leurs problèmes et à ceux qui se donnent la peine de proposer des solutions. J'espère que cet espace d'échanges ouverts va conserver cet état d'esprit et ne va pas se faire pourrir par des parasites.
Au moins j'aurai appris des trucs.
# LVM etc.
Posté par YannickP . Évalué à 10 (+11/-0). Dernière modification le 22 octobre 2024 à 23:29.
Effectivement, comme tu as vu, tu n'étais probablement pas loin mais qui dit
/dev/mapper/ubuntu-vg
dit LVM (il y a un Volume Group).Il fallait donc se préoccuper du Volume Group et du Physical Volume, mais c'est assez facile de redimensionner tout le bazar, même au passage le FS qui est dedans.
Dans ce cas, j'ai toujours tendance à oublier les commandes exactes alors je regarde le wiki de ArchLinux (et cette page comme pense-bête).
Par ailleurs, GNU dd rescue est vraiment génial pour copier des volumes bloc, c'est toujours un bonheur d'utiliser ce programme.
Et si tu veux copier une table des partitions tu peux utiliser
sgdisk --replicate=/dev/NEW /dev/OLD ### ATTENTION A L'ORDRE !!
ou bien
sgdisk --randomize-guids --replicate=/dev/NEW /dev/OLD ### ATTENTION A L'ORDRE !!
(pour avoir des UUID différents)
(c'est une commande assez pratique alors je la donne à toute fin utile)
Mais je suis étonné que tu te sois retrouvé avec des partitions de la bonne taille, il me semble que lorsque tu copies un volume bloc de A vers B il faut aussi redimensionner les partitions (lorsque B est plus grand que A).
[^] # Re: LVM etc.
Posté par Marc Quinton . Évalué à 6 (+4/-0).
très certainement un
pvresize
aurait fait l'affaire dans le cas présent. Effectivement, Archwiki est top et assez facilement transposable sur d'autres distributions linux.[^] # Re: LVM etc.
Posté par jigso . Évalué à 10 (+10/-0).
tant qu'a jouer avec lvm, une autre soluce était de mettre les 2 disques dans un pc, de formater le nouveau et de le rajouter comme pv dans le vg, puis demander a lvm de bouger les lv sur le nouveau pv. Une fois terminé on peut retirer l'ancien pv, et zou - modulo le transfert de /boot, grub et autres petits détails pour gerer le boot of course.
[^] # Re: LVM etc.
Posté par Pol' uX (site web personnel) . Évalué à 10 (+10/-0).
En fait avec LVM et les deux disques branchés en parallèle, tu aurais pu faire toute la transition en douceur (vgextend, pvmove, vgreduce), en dehors de la réinstallation de grub et la mise à jour de l'initramfs. LVM est justement fait pour ça.
Adhérer à l'April, ça vous tente ?
# J'ai la réponse
Posté par Luc-Skywalker . Évalué à 9 (+7/-0).
Merci pour le billet bien rigolo à lire.
Mais il m'a surtout rappelé les quelques galères de ce genre que j'ai connu moi aussi (des pbs de disques qui rendent fou, des tables GPT corrompues, des connecteurs cassés avec mes gros doigts etc). Parfois, j'en devenait même à me dire que plutôt que d'apprendre des trucs on est en fait mis de manière de plus en plus impitoyable face à sa propre bêtise.
facile, elle est pas loin: sur liuxfr.org à présent.
"Si tous les cons volaient, il ferait nuit" F. Dard
# man pvmove / lvresize
Posté par Psychofox (Mastodon) . Évalué à 6 (+4/-1). Dernière modification le 23 octobre 2024 à 14:45.
https://linux.die.net/man/8/pvmove
https://linux.die.net/man/8/lvresize
Ça t'aurais fais sans doute gagner du temps de lire ces 2 manpages.
[^] # Re: man pvmove / lvresize
Posté par Stéphane Ascoët (site web personnel) . Évalué à 2 (+1/-0).
Pour le lvresize, il y a des explications simples dans cette documentation qui est ma préférée pour débuter en LVM
Et oui, l'USB c'est de la merde… mes disques SCSI encore fonctionnels qui ont près de trente ans vont plus vite…
Et oui (encore), désolé mais il est bien connu que "dd" n'est pas conseillé pour répliquer deux supports hétérogènes.
Pour la méthode par Rsync, tu n'aurais rien oublié si tu avais suivi ce tutoriel, même si personnellement j'y ai fait des amendements sur papier
# Clonezilla n'aurais pas été plus "simple"
Posté par xandercagexxx . Évalué à 3 (+2/-0).
J'ai utilisé que peu clonezilla (mais content de son utilisation), encore moins avec du lvm et consorts, mais cela n'aurait-il pas été plus simple, avec derrière un coup de gparted ?
Comme dit, je connais pas trop le fonctionnement de lvm, donc cest peut-être pas jouable du tout avec ce type d'outil.
Merci pour le partage en tout cas, c'était plaisant à lire, et intéressant sur le côté "découverte et choix techniques pour aller vite", mais cumulé cest pas si rapide que prévu 😁😁
Vivement ta migration sur un ssd de 4To, pour voir si tu refais les mêmes erreurs 🫣😉
[^] # Re: Clonezilla n'aurais pas été plus "simple"
Posté par remico . Évalué à 2 (+1/-0).
Je fais bien avec dd, je viens encore de le refaire, de partition à partition, dd if=/dev/sda1 of=/dev/nvme0n1p1 mais j'utilise encore les partitions msdos, donc pas gpt, pas de lvm non plus, ni de cryptage, ni d'uefi j'en suis à des années lumières, je ne sais même pas exactement de quoi il s'agit ou comment l'utiliser. Il ne me reste qu'à arranger l'uuid éventuellement avec tune2fs -U . Je me garde bien de faire tout le disque secteur de boot compris.
Au premier démarrage comme c'est un disque M2, cela a coincé en bootant sur /dev/nvme0n1p1. J'ai eu peur de devoir me coller au gpt uefi ou je ne sais quoi et puis non cela ne bootait pas car comme je n'avais pas de disque M2, le module nvme n'était pas chargé, et l'initrd ne l'avait pas. Une fois refait l'initrd ça roule .
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.