Les disques à 4096 bytes de Noël

Tags: ,
No Comments »

Parfois je me demande si je suis le seul à vivre des aventures aussi pourries avec les disques…

Pour Noël, j’ai demandé (et reçu), un disque “clone” du disque de ma gentille station de travail, afin de monter un RAID1 logiciel à grand coups de mdadm. Du moins je pensais qu’il s’agissait d’un clone. En réalité, ce disque Western Digital (je ne prend plus que cette marque depuis des années), s’il fait strictement la même taille que son copain, 1TB, a la particularité d’avoir des secteurs de 4096 octets au lieu de 512. J’avais lu, incrédule, que ceci posait quelques tracas sous GNU/Linux, ce que je me refusais à croire tant ma foi est grande. Seulement voila, un

# sfdisk -d /dev/sda | sfdisk /dev/sdb

ne m’a procuré que peine et frustration, car l’alignement des secteurs par bloc de 4096 octets rendait parfaitement incompatibles les deux tables de partitions.

La sauvegarde provint de parted associé aux options -l et -u de fdisk.

En effet, en me calant sur le nombre de Megaoctets fournis par les commandes unit Mb et print de parted, comme le conseille le site suivant, j’arrive à obtenir des tailles assez voisines pour qu’un pvmove et l’ajout du disque source dans l’array RAID1 se déroulent sans accroc.

Pour la doc concernant la migration d’un volume LVM vers du RAID1 logiciel, c’est par ici que ça se passe.

Suxtor.

Tags: , , , , , ,
3 Comments »
Jul 27 21:49:06 tatooine kernel: [  133.205355] ata3.00: configured for UDMA/133
Jul 27 21:49:06 tatooine kernel: [  133.205363] ata3: EH complete
Jul 27 21:49:06 tatooine kernel: [  137.205302] ata3.00: exception Emask 0x0 SAc
t 0x0 SErr 0x0 action 0x0
Jul 27 21:49:06 tatooine kernel: [  137.205353] ata3.00: BMDMA stat 0x24
Jul 27 21:49:06 tatooine kernel: [  137.205400] ata3.00: failed command: READ DM
A
Jul 27 21:49:06 tatooine kernel: [  137.205451] ata3.00: cmd c8/00:80:8f:06:e0/0
0:00:00:00:00/e0 tag 0 dma 65536 in
Jul 27 21:49:06 tatooine kernel: [  137.205458]          res 51/40:00:03:07:e0/0
0:00:00:00:00/e0 Emask 0x9 (media error)
Jul 27 21:49:06 tatooine kernel: [  137.205565] ata3.00: status: { DRDY ERR }
Jul 27 21:49:06 tatooine kernel: [  137.205608] ata3.00: error: { UNC }

Ça f’sait longtemps.

Depuis environ un mois que les zozos d’EDF sont en train de “rénover les installations éléctriques” de mon quartier, le courant va-et-vient. Parfois nous sommes prévenus et j’eteins consciencieusement mes machines avant l’heure fatidique, et parfois non. Jeudi dernier, ils ont pas prévenu. Et mon disque dur est mouru. C’était pour la rime.

Et c’est parti pour une séance de migration de disque en bonne et due forme.

1. Boot de la machine sur un LiveCD intégrant quelques outils indispensables, et parmi eux LVM. J’avais dans un tiroir un CD GParted relativement recent, bien heureusement.

2. Préparation du disque cible (reconnu en /dev/sda) :

  • Partitionnement
  • # fdisk /dev/sda
    - [n]ew
    - partition 1
    - [p]rimary
    - +10G (partition /boot)
    - [n]ew
    - partition 2
    - [e]xtended
    - tout l'espace restant
    - [n]ew
    - partition 5
    - [l]ogical
    - tout l'espace
    - [t]ype
    - 8e (Linux LVM)
    - [a]ctivate boot flag
    
  • LVMisation de la cible
  • # pvcreate /dev/sda5
    # vgcreate tatooine2 /dev/sda5
    # lvcreate -L 8G -n swap tatooine2
    # lvcreate -L 100G -n root tatooine2
    # lvcreate -L 200G -n home tatooine2
    
  • Création des systèmes de fichier
  • # mkfs.ext3 /dev/sda1
    # mkfs.ext3 /dev/mapper/tatooine2-root
    # mkfs.ext3 /dev/mapper/tatooine2-home
    # mkswap /dev/mapper/tatooine2-swap
    
  • Bourrinage du disque défectueux (/dev/sdb)
  • # fsck -cyk /dev/sdb1
    # fsck -cyk /dev/mapper/tatooine-root
    # fsck -cyk /dev/mapper/tatooine-home
    

    Notez que cette opération a duré près de 5h, fsck fait ici un examen des blocks et appelle l’outil badblocks afin de créer une liste des blocks défecteux et passe un temps considérable sur ces derniers.

  • Montage
  • # mkdir -p /root/sda/boot /root/sda/home # disque cible
    # mkdir /root/sdb # disque source (défectueux)
    # mount -o ro /dev/mapper/tatooine-root /root/sdb # disque source
    # mount -o ro /dev/sdb1 /root/sdb/boot
    # mount -o ro /dev/mapper/tatooine-home /root/sdb/home
    # mount /dev/mapper/tatooine2-root /root/sda
    # mount /dev/sda1 /root/sda/boot
    # mount /dev/mapper/tatooine2-home /root/sda/home
    
  • Synchronisation
  • # rsync -av --exclude /dev /root/sdb/ /root/sda/
    # sync; sync
    # umount /root/sdb/home
    # umount /root/sdb/boot
    # umount /root/sdb
    

    Cette opération peut prendre plus ou moins de temps fontion de l’état du disque défectueux, perso, j’ai été me coucher.

  • GRUB
  • # mount --bind /dev /root/sda/dev
    # mount --bind /proc /root/sda/proc
    # mount --bind /sys /root/sda/sys
    # chroot /root/sda
    # grub-install --no-floppy --root-directory=/ /dev/sda
    

    Il est désormais possible de booter sur le nouveau disque.

Étant un peu sectaire, je souhaitais que le nom du volume group soit le même que sur l’ancien disque, aussi, après avoir débranché ce dernier, je boote sur le nouveau qui, evidemment, ne retrouve pas la partition root et me renvoie sur le mini-shell disponible sur l’initrd qui a le bon goût d’embarquer LVM. Ainsi :

initrd> lvm
lvm> vgrename tatooine2 tatooine
lvm> exit
initrd> reboot

Et “tadaaaaaa”, je retrouve mon desktop comme je l’avais laissé.

Phew.

WP Theme & Icons based on GlossyBlue by N.Design Studio
Banner from www.trynthlas.com
Entries RSS Comments RSS Log in
Performance Optimization WordPress Plugins by W3 EDGE