Forum Linux.débutant Montage d'un disque dur de sauvegarde à froid sur raspberry

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
8
jan.
2018

Bonjour à tous,

Je possède actuellement deux raspberry pi 3.

Les services fonctionnait bien pour le moment avec un disque.

J'ai eu quelques problèmes pour le montage des deux disques dur au démarrage.

Avez-vous déjà mis en place deux disque dur sur une raspberry pi 3 ? (1 disque en fonctionnement et un clone avec rsync sans raid)

Ma séquence de boot est la suivante :

-carte microSD : cmdline.txt -> root=/dev/sda1 -> le montage se fait bien

-disque dur origin : /etc/fstab ->

    proc             /proc           proc    defaults          0       0
    /dev/mmcblk0p1   /boot           vfat    defaults          0       0
    #/dev/mmcblk0p2  /               ext4    defaults,noatime  0       0

    /dev/disk/by-uuid/xxxxxxx-xxxxx-xxxxx-xxxxx / default 0 2
    /dev/disk/by-uuid/xxxxxxx-xxxxx-xxxxx-xxxxx /mnt/my_data default 0 2

    /dev/disk/by-uuid/xxxxxxx-xxxxx-xxxxx-xxxxx /mnt/rootfs_clone default 0 2
    /dev/disk/by-uuid/xxxxxxx-xxxxx-xxxxx-xxxxx /mnt/my_data_clone default 0 2

Est-ce que l'interface USB de la Pi est capable de gérer deux disques dur ?

Mes disques dur sont alimentés en externe.

Merci d'avance et bon début d'année

  • # pourquoi pas, et simplification

    Posté par  . Évalué à 2.

    je ne vois pas pourquoi tu ne pourrais pas mettre 2 disques durs sur les ports USB du RPi,
    par contre il faudra allimenter le RPi avec une alimentation externe voire brancher les disques durs sur un hub USB alimenté, ou alimenter les disques independamment, sinon je crains que le port USB ne founissent pas assez d'electricité

    sinon pour rendre le FSTAB plus facile à lire, tu peux
    changer les lignes : /dev/disk/by-uuid/xxxxx
    par UUID=xxxxx-xxxxx-xxxxx

    • [^] # Re: pourquoi pas, et simplification

      Posté par  . Évalué à 2.

      Je regarde ce qui bloque ce soir et revient vers vous.

      Oui je peux mettre ceci.

      Par contre dans le fichier cmdline.txt qui sera mis en cmdline.usb, j'ai cette commande :

      dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait rootdelay=5

      Je n'arrive pas à remplacer root=/dev/sda1 par UUID, ça ne fonctionne pas.

      Je ne lance pas le système de fichier de la carte microSD donc je boot sur un disque dur externe de la pi.

      Dans l'ordre branché des disques dur je suis sur de booter sur le bon disque dur mais si jamais je change l'ordre, je suis bon pour un tour.

      Il n'y a pas d'autres moyens de se baser sur l'UUID depuis la carte microSD ? Même le LABEL ne fonctionne pas. J'avais essayé.

      • [^] # Re: pourquoi pas, et simplification

        Posté par  . Évalué à 1.

        J'ai pu modifier l'UUID avec Gparted mais comme j'ai fait un coup de clonezilla je me retrouve avec le même PARTUUID.

        A priori ce n'est pas ça qui pause problème.

        Il m'a été dit ceci :

        Ta config est différente de la mienne, je n'ai jamais essayé de bouter depuis USB avec 2 disques branchés.
        Ici: https://github.com/raspberrypi/firmware/issues/647 il est indiqué de rajouter un fichier (vide, on dirait) nommé "timeout" à côté de bootcode.bin dans la SD.

        • [^] # Re: pourquoi pas, et simplification

          Posté par  . Évalué à 3.

          ah ben t'etais pas precis dans le probleme,

          oui ton probleme de boot avec 2 disques vient surement du fait que le sda1 n'est plus ton disque qui contient le root,
          donc passer par les UUID c'est une bonne idée, mais il faut qu'il soit unique pour chaque disque (donc pas un clone avec clonezilla/partclone)

          ensuite il faut voir la documentation raspberry pi pour le mettre dans le cmdline.usb à la place de root=/dev/sda1

          sur le forum RPi on en parle
          https://www.raspberrypi.org/forums/viewtopic.php?t=104646

          il y aurait aussi un max_usb_current pour booster la tension allouer au port USB

          • [^] # Re: pourquoi pas, et simplification

            Posté par  . Évalué à 1.

            J'obtiens ceci lors de la communication avec 2ème disque dur externe et la pi :

                pi@raspberrypi:~ $ journalctl -r -p err
                -- Logs begin at Thu 2016-11-03 17:16:43 UTC, end at Mon 2018-01-08 17:46:28 UTC. --
                Jan 08 17:46:28 raspberrypi kernel: Buffer I/O error on dev sdb2, logical block 486281216, async page read
                Jan 08 17:46:28 raspberrypi kernel: blk_update_request: critical medium error, dev sdb, sector 3907028992
                Jan 08 17:46:28 raspberrypi kernel: Buffer I/O error on dev sdb1, logical block 2097136, async page read
                Jan 08 17:46:28 raspberrypi kernel: blk_update_request: critical medium error, dev sdb, sector 16779136
                Jan 08 17:46:16 raspberrypi kernel: Buffer I/O error on dev sdb2, logical block 486281216, async page read
                Jan 08 17:46:16 raspberrypi kernel: blk_update_request: critical medium error, dev sdb, sector 3907028992
                Jan 08 17:46:16 raspberrypi kernel: blk_update_request: critical medium error, dev sdb, sector 3907028992
                Jan 08 17:46:16 raspberrypi kernel: Buffer I/O error on dev sdb1, logical block 2097136, async page read
                Jan 08 17:46:16 raspberrypi kernel: blk_update_request: critical medium error, dev sdb, sector 16779136
                Jan 08 17:46:16 raspberrypi kernel: blk_update_request: critical medium error, dev sdb, sector 16779136
                Jan 08 17:37:51 raspberrypi kernel: JBD2: Error -5 detected when updating journal superblock for sdb2-8.
                Jan 08 17:37:51 raspberrypi kernel: Buffer I/O error on dev sdb2, logical block 242778112, lost sync page write
                Jan 08 17:37:51 raspberrypi kernel: Aborting journal on device sdb2-8.
                Jan 08 17:37:51 raspberrypi kernel: JBD2: Error -5 detected when updating journal superblock for sdb2-8.
                Jan 08 17:37:51 raspberrypi kernel: Buffer I/O error on dev sdb2, logical block 242778112, lost sync page write
                Jan 08 17:37:51 raspberrypi kernel: blk_update_request: I/O error, dev sdb, sector 1959004160
                Jan 08 17:37:51 raspberrypi kernel: blk_update_request: I/O error, dev sdb, sector 50337920
                Jan 08 17:37:51 raspberrypi kernel: blk_update_request: I/O error, dev sdb, sector 50337680
                Jan 08 17:37:50 raspberrypi kernel: blk_update_request: I/O error, dev sdb, sector 50337440
                Jan 08 17:37:50 raspberrypi kernel: blk_update_request: I/O error, dev sdb, sector 50337200
                Jan 08 17:37:50 raspberrypi kernel: blk_update_request: I/O error, dev sdb, sector 50336960
                Jan 08 17:37:50 raspberrypi kernel: blk_update_request: I/O error, dev sdb, sector 50336720
                Jan 08 17:37:50 raspberrypi kernel: blk_update_request: I/O error, dev sdb, sector 50336480
                Jan 08 17:37:49 raspberrypi kernel: blk_update_request: I/O error, dev sdb, sector 50336240
                Jan 08 17:37:49 raspberrypi kernel: blk_update_request: I/O error, dev sdb, sector 50336000
            • [^] # Re: pourquoi pas, et simplification

              Posté par  . Évalué à 1.

              Mes deux disques dur sont branchés sur chacun un port USB de ma raspberry pi de 2To chacun.

              J'ai effectué un rsync entre mes deux disques dur.

              Je me retrouve avec cette erreur :

              rsync: mkstemp "/mnt/my_data_clone/Archives_D/" failed:Read-only file system (30)

              puis après me voici avec un disque dur démonté et avec ces erreurs lors d'un fsck :

              j@jpcportable:~$ sudo fsck /dev/sdb
              fsck de util-linux 2.29.2
              e2fsck 1.43.4 (31-Jan-2017)
              ext2fs_open2: Numéro magique invalide dans le super-bloc fsck.ext2 : Superbloc invalide, tentons d'utiliser les blocs de sauvetage... fsck.ext2: Numéro magique invalide dans le super-bloc lors de la tentative d'ouverture de /dev/sdb
              
              Le superbloc n'a pu être lu ou ne contient pas un système de fichiers ext2/ext3/ext4 correct. 
              Si le périphérique est valide et qu'il contient réellement un système de fichiers ext2/ext3/ext4 (et non pas de type swap, ufs ou autre), alors le superbloc est corrompu, et vous pourriez tenter d'exécuter e2fsck avec un autre superbloc :
                  e2fsck -b 8193 <périphérique>
               ou
                  e2fsck -b 32768 <périphérique>
              
              Trouvé une table de partitions gpt dans /dev/sdb

              => Conclusion :
              1-trouver un autre schéma de boot
              2-mettre les deux disques dans mon PC fixe et réveiller le PC fixe à chaque sauvegarde.
              3-soit mettre le hub USB en plus mais les disques durs sont alimentés -> Possibilité d'obtenir les même erreurs
              4-booter sur la carte SD et monter les 2 HDD dans le /mnt sachant que la carte microSD sera utilisé ! Possibilité d'obtenir les même erreurs

              • [^] # Re: pourquoi pas, et simplification

                Posté par  . Évalué à 1.

                => 2ème conclusion : avec des HDD et non des SSD, c'est encore plus mal barré pour faire des sauvegardes je pense à cause des latances !

                => comment reformater lentement mes deux disques dur qui ont subi le coup du rsync ?

                • [^] # Re: pourquoi pas, et simplification

                  Posté par  . Évalué à 1.

                  Voici typiquement les erreurs après les rsync :

                  sharing@raspberrypi:/home/pi$ rsync -pavz --partial --progress --delete /mnt/my_data/Archives_D/ /mnt/my_data_clone/Archives_D/ > /tmp/log_rsync.txt
                  rsync: send_files failed to open "/mnt/my_data/Archives_D/.~lock.journal_2.txt#": Permission denied (13)
                  rsync: write failed on "/mnt/my_data_clone/Archives_D/Autres/Cd rom au fil de l'histoire/F1500.Dxr": Read-only file system (30)
                  rsync: failed to set times on "/mnt/my_data_clone/Archives_D/Autres/Cd rom au fil de l'histoire/.F1500.Dxr.V9sfuz": Read-only file system (30)
                  rsync: rename "/mnt/my_data_clone/Archives_D/Autres/Cd rom au fil de l'histoire/.F1500.Dxr.V9sfuz" -> "Autres/Cd rom au fil de l'histoire/F1500.Dxr": Read-only file system (30)
                  rsync error: error in file IO (code 11) at receiver.c(393) [receiver=3.1.2]
                  
                  sharing@raspberrypi:/mnt$ rsync -pavz --partial --progress --delete /mnt/my_data/Archives_D/Electronique /mnt/my_data_clone/Archives_D/Electronique > /tmp/log_rsync_electronique.txt
                  rsync: recv_generator: mkdir "/mnt/my_data_clone/Archives_D/Electronique/Electronique" failed: Read-only file system (30)
                  *** Skipping any contents from this failed directory ***
                  rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1196) [sender=3.1.2]
                  • [^] # Re: pourquoi pas, et simplification

                    Posté par  . Évalué à 1.

                    Je reviens vers vous pour vous spécifier que mon problème est résolu.

                    Avec un Hub USB le boot sur HDD1 et rsync sur HDD2 de clonage fonctionne, lentement mais fonctionne sans erreur dans journalctl.

                    Était-ce un problème d'alimentation (ce serait étrange car mes HDD ont une alimentation externe) ?

                    Était-ce un problème d'interface USB de la raspberry-pi ? En tout les cas je me demande quel chemin prend le flux géré par rsync, seulement le Hub USB ou un chemin classique HDD -> pi -> HDD ?

                    • [^] # Re: pourquoi pas, et simplification

                      Posté par  . Évalué à 1.

                      Était-ce un problème d'alimentation (ce serait étrange car mes HDD ont une alimentation externe) ?

                      Était-ce un problème d'interface USB de la raspberry-pi ? En tout les cas je me demande quel chemin prend le flux géré par rsync, seulement le Hub USB ou un chemin classique HDD -> pi -> HDD ?

                      tu as un petit shema de ton montage ?

                      de memoire le RPi prend son alimentation par le port USB,
                      meme si les 2 disques sont alimentés par ailleurs, le fait de faire bosser le RPi demande du courant,
                      c'est là que le HUB USB alimenté prend son sens,

                      tu branches le HUB USB sur le secteur,
                      tu branches le RPi sur le HUB USB (ou sur une alimentation externe)
                      tu branches les disques dur sur le HUB USB (ou sur leur alimentation externe)

                      et ca devrait aller mieux

                      • [^] # Re: pourquoi pas, et simplification

                        Posté par  . Évalué à 1.

                        Voici le montage d'avant et d'après.

                        Avant ça ne fonctionnait pas malgré l'alimentation des disques dur. Alors peut être que l'alimentation des disques dur n'alimentait pas le bus USB allant vers la Pi. Ca c'est possible.

                        Conf_pi

                        • [^] # Re: pourquoi pas, et simplification

                          Posté par  . Évalué à 2.

                          Alors peut être que l'alimentation des disques dur n'alimentait pas le bus USB allant vers la Pi

                          c'est une certitude, l'USB avant le nouveau USB-C n'alimente que dans un sens (Host -> peripherique)

                          en mettant le HUB tu rajoutes une alimentation sur le port USB vers les disques et donc potentiellement les adaptateurs USB->SATA
                          ca ne change rien sur l'alimentation du RPi

                          • [^] # Re: pourquoi pas, et simplification

                            Posté par  . Évalué à 1.

                            Est-ce que du coup ça justifie l'erreur que j'ai eu avant que ça ne marche sans le Hub USB ! ?

                            • [^] # Re: pourquoi pas, et simplification

                              Posté par  . Évalué à 2.

                              ca ne justifie pas les erreurs,
                              vu que l'alimentation du RPi n'a pas changé, juste l'alim des disques durs (les alims externes sont suffisantes ?)

                              ton erreur etait

                              Buffer I/O error on dev sdb2, logical block 242778112, lost sync page write
                              Jan 08 17:37:51 raspberrypi kernel: blk_update_request: I/O error, dev sdb, sector …

                              ca ressemble à un disque qui se deconnecte (ou un adaptateur USB qui flanche)
                              chose que tu as corrigé en mettant plus de courant sur le hub USB pour alimenter les adaptateurs

                              • [^] # Re: pourquoi pas, et simplification

                                Posté par  . Évalué à 1.

                                Oui c'est ça, bon ben du coup j'ai commandé un Hub USB en plus pour ma seconde pi.

                                (C'est quand même énorme des HDD de 2To géré par une pi )

                                Merci pour votre aide.

                                Bonne journée.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.