Journal (dé)montage automatique de partitions sur périphérique amovible

Posté par  .
Étiquettes : aucune
0
11
mai
2006
Cher journal,

Ca faisait bien longtemps que je n'avais pas blogué écrit. J'ai une petite idée simple (du moins sur le textarea) à te soumettre.

Aujourd'hui, grâce à la magie du tout-puissant udev, nos systèmes Linux sont capables de monter tout seuls comme des grands les partitions situées sur les périphériques amovibles (clé usb, cartes mémoires...). C'est pratique, sympa et cela contribue à mettre l'OS au pingouin à la portée du grand débutant pour qui le concept de montage est digne des meilleurs films de science-fiction.

Oui, mais... Il y a toujours un mais. Ce matin, pressé (oui, il m'arrive de décider), je me suis mis sans vraiment le vouloir à la place du débutant en question. J'insère ma carte mémoire dans le lecteur, qui est parfaitement reconnue, et j'y copie des fichiers... Et dans ma précipitation je retire sauvagement la carte du lecteur en priant pour que les fameux fichiers dont j'ai besoin y soient.

Erreur, le principe d'écriture différée du noyau a eu raison de moi : rien n'a été écrit sur la carte.

C'est pas gravissime en ce qui me concerne, cela ne fait que me retarder un peu. Mais le fameux débutant cité plus haut pourrait être pris de court par cette situation. On peut en effet se demander pourquoi avoir automatisé une partie du processus et avoir laissé la dernière au soin exclusif de l'utilisateur ?

Je me suis donc demandé si on pouvait désactiver l'écriture différée pour certains périphériques comme les clés usb et les cartes mémoire, afin de se passer de la fastidieuse et hélas incontournable étape de démontage... Ce qui permettrait à terme d'égaler windows sur l'ergonomie de la gestion des périphériques amovibles.


Vos idées, questions, remarques, critiques, et commentaires (y compris sur ma boulangère) sont les bienvenus !
  • # Pour moi c'est pareil sous windows

    Posté par  . Évalué à 9.

    Ce qui permettrait à terme d'égaler windows sur l'ergonomie de la gestion des périphériques amovibles.


    Moi si je fais la même chose sous windows, j'ai le même problème quant à l'écriture différée, c'est pourquoi il y a une petite icone dans le systray qui apparait pour les periphériques amovibles
    • [^] # Re: Pour moi c'est pareil sous windows

      Posté par  . Évalué à 5.

      Effectivement, mais la fameuse icône est surtout censée faire peur. En pratique, sous windows, une fois la copie de fichier effectuée, quand la LED du lecteur ne clignote plus, tu peux retirer le périphérique sans (trop de) crainte. Ca a marché dans mon cas un nombre incalculable de fois.

      Je souhaite reproduire ce comportement sous GNU/Linux, si possible. Et je pense que ca peut intéresser d'autres personnes également.
      • [^] # Re: Pour moi c'est pareil sous windows

        Posté par  . Évalué à 3.

        Dans ce cas je pense qu'il faut utiliser l'option -o sync de mount, par contre je ne sais pas exactement ou la placer (fstab, udev, .. ?)
        • [^] # Re: Pour moi c'est pareil sous windows

          Posté par  (site web personnel) . Évalué à 8.

          Non, c'est mal. Utiliser sync sur des clefs USB c'est un bon moyen de la flinguer.
          Les clefs USB sont en général formatées en FAT32, et ce système de fichiers a la bonne idée d'écrire sa table des fichiers (oui, sa FAT quoi) toujours au même endroit sur la clef. Donc ça c'est pas génial pour les mémoire Flash, dont le nombre d'écritures détermine la durée de vie.
          Mais si en plus tu met sync, il va y avoir écriture de la taille du fichier en cours de copie dans la FAT *tout au long* de la copie du fichier. Ce qui fait une grosse grosse quantité d'écriture dans la FAT (et accessoirement c'est beaucoup plus long).

          Donc pas d'option sync pour les clefs USB.
          • [^] # Re: Pour moi c'est pareil sous windows

            Posté par  (site web personnel) . Évalué à 7.

            sauf que normalement les clef USB, comme les compactFlash font du "wear leveling" au niveau hard et gère de ne pas toujours écrire au même endroit (même pour la FAT) http://en.wikipedia.org/wiki/Wear_levelling

            Si tu utilise une mémoire flash sans wear levelling (par exemple les flash de carte CPU embarquée) il te faut utiliser un système de fichier le gérant comme par exemple JFFS2 ( http://sourceware.org/jffs2/ ).

            Par contre l'option sync de mount est connue pour réduire la vie de mémoire flash d'un facteur de 10 ! A éviter donc.
            • [^] # Re: Pour moi c'est pareil sous windows

              Posté par  (site web personnel) . Évalué à 2.

              Par contre l'option sync de mount est connue pour réduire la vie de mémoire flash d'un facteur de 10 ! A éviter donc.

              Sans explication et sans lien, ton affirmation est par définition du FUD.

              Hypothèse : c'est peut-être l'écriture des timestamps de dernier accès qui, combinée avec l'obligation d'écrire sans délai les changements, fatigue excessivement les lecteurs flash. Un petit coup d'option "noatime" devrait résoudre ça.
          • [^] # Re: Pour moi c'est pareil sous windows

            Posté par  (site web personnel) . Évalué à 3.

            Les clefs USB sont en général formatées en FAT32, et ce système de fichiers a la bonne idée d'écrire sa table des fichiers (oui, sa FAT quoi) toujours au même endroit sur la clef.

            Sauf que le même endroit sur la clé n'est jamais le même endroit sur la clé : tu penses bien que ce problème est connu et pour l'essentiel résolu depuis des années.

            Par ailleurs et pour ta culture, les systèmes de fichiers ext (2 ou 3) ont également des tables d'allocation (superblocks & co), on n'y met pas les mêmes choses et dans le même format, mais elles sont elles aussi présentes à des endroits précis et constants du disque.
      • [^] # Re: Pour moi c'est pareil sous windows

        Posté par  (Mastodon) . Évalué à 7.

        vous avez tous les 2 raison et tous les 2 faux, tout simplement parce que windows ça veut rien dire.

        -Sous Windows 2000 et inférieurs, l'écriture est différée et il faut prendre le soin de démonter le periphérique avant de le retirer.

        -Sous Windows XP, la l'écriture n'est pas différée sur les périphériques amovibles.

        C'est à peu près la seule différence intéressante et utile entre 2000 et XP. :)
        • [^] # Re: Pour moi c'est pareil sous windows

          Posté par  (site web personnel) . Évalué à 5.

          >-Sous Windows XP, la l'écriture n'est pas différée sur les périphériques amovibles.

          Ce qui est faux aussi car je ne compte pas le nombres d'utilisateurs qui sont venu me voir en me disant que leur fichier n'avait pas été copié sur leur clef usb... Et ils sont tous sous XP...
        • [^] # Re: Pour moi c'est pareil sous windows

          Posté par  (site web personnel) . Évalué à 1.

          si l'écriture n'est pas différé ca doit bouffer les mémoire flash.. a mon avis le delai d'écriture a été réduit mais il y a forcement un délai.
    • [^] # Re: Pour moi c'est pareil sous windows

      Posté par  . Évalué à 10.

      effectivement ce n'est pas conseillé de le faire non plus sous windows (tout le monde ne le sait pas).

      Le gros avantage de linux est qu'il suffit de faire un clic droit sur l'icone du périphérique monté (et qui est apparu automagicalement sur le bureau), et le démontrer proprement (pour ne pas effrayer l'utilisateur, c'est même marqué "retirer le périphérique en toute sécurité"), on sait toujours où on en est.

      Sous windows, avec un lecteur de cartes multiples (SD et compagnie) comme ils équipent les ordinateurs, un modem usb etc, si quelqu'un veut retirer sa clé usb, en cliquant sur l'icone générale, il y a un tas d'autres lecteurs aux noms tous plus parlants les uns que les autres (F: I: J: K: L: ), si bien que les gens ne savent pas facilement et intuitivement quoi retirer. Et en double cliquant sur l'icone, tout est indiqué (sauf le modem quand même) en périphérique "usb-mass-storage"
      D'ailleurs si on retire une carte d'un tel lecteur, elle n'est pas démontée proprement sous windows.

      Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

  • # SuSE

    Posté par  . Évalué à 3.

    Sur la SuSE, c'est comme ça que ça marche : on peut enlever le périphérique en live et de toute façon il faut être root pour pouvoir le démonter avant. Seulement je n'ai essayé qu'avec des clés USB et je suppose que c'est la même chose pour les cartes mémoire (peux pas essayé, en ai pas).

    Le gros problème, c'est que l'écriture sur la clé est *beaucoup* trop lente : je mettais environ trois heures pour copier 200Mo sur une clé (je suis pas allé au bout mais c'est ce que m'affichait Konqueror).

    Finalement, je ne sais pas s'il y a un lien entre le fait de pouvoir enlever à tout moment et la lenteur de l'écriture.

    Ça marchait comme ça avec l'OpenSuSE 10.0. Je crois que ça va changer avec la 10.1 et qu'il vont revenir à un système plus conventionnel (démonter avant d'enlever).

    Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur

  • # monter avec le flag sync ?

    Posté par  . Évalué à 1.

    comme ca, l'écriture différée devrait être désactivée, si je me rappelle bien. Et c'est sans doute possible d'adapter les règles udev pour qu'il monte en utilisant ce flag s'il voit de l'usb dans les paramètres d'un périphérique branché à chaud.
  • # automount

    Posté par  (site web personnel) . Évalué à 8.

    personellement, voilà comment je procède :
    - dans udev, j'ai une règle qui créée un symlink /dev/usbms vers le device qui va bien lorsque je branche un périphérique usb de sotckage
    - j'ai automount qui gère /media et notamment /media/usbms : lorsque j'accède à /media/usbms, il monte /dev/usbms

    l'idée est que automount démonte tout seul au bout d'un timeout, que j'ai fixé à 1s chez moi. donc quand tu sors du répertoire, il démonte au bout de 1s (et donc sync, etc.)
    j'ai également spécifié à automount de laisser les points de montages 'ghost' (ie non montés) comme ca, j'ai l'autocompletion du shell dessus, ou encore ma copine peut cliquer dessus dans son xfce.
    ce truc fonctionne aussi pour les cds, etc.

    l'inconvénient, c'est que si tu branches plusieurs usb mass storage, c'est le dernier branché qui pointe sur /dev/usbms, donc c'est celui que tu verras en te déplacant dans /media/usbms, mais bon le cas ne m'est encore pas arrivé.
    • [^] # Re: automount

      Posté par  . Évalué à 3.


      l'inconvénient, c'est que si tu branches plusieurs usb mass storage, c'est le dernier branché qui pointe sur /dev/usbms, donc c'est celui que tu verras en te déplacant dans /media/usbms


      Tu peux demander a udev de donner un lien différent pour chaque périphérique usb en les reconnaissant par leur numéro de série, la marque du fabriquant, ....
      • [^] # Re: automount

        Posté par  (site web personnel) . Évalué à 1.

        oui, mais pour automount il faut un point de montage. alors je sais bien que automount est capable de générer des points de montages avec des jokers, etc., mais ca devient franchement plus complexe.
        de plus, on ne peut plus les afficher avec l'option 'ghost' dans ce cas, et donc pas d'autocomplétion.
        enfin, je voulais aussi que l'entrée soit présente dans /etc/fstab, ce qui permet de le monter/démonter manuellement facilement, avec ou sans automount - et qu'on ne vienne pas me parler des usines conne sync-fstab ou je ne sais quoi qu'on trouve dans mandriva ou fedora :).

        bref, vu que ce que j'ai fait reste relativement simple, est générique (pas distrib dépendant quoi) et couvre 99,99% de mes besoins, j'ai pas été plus loin :)
        • [^] # Re: automount

          Posté par  (site web personnel) . Évalué à 3.

          >bref, vu que ce que j'ai fait reste relativement simple, est générique (pas distrib dépendant quoi) et couvre 99,99% de mes besoins, j'ai pas été plus loin :)

          Dommage, ça aurait probablement intéressé plein de monde... et même des distros, qui sait!
  • # Et dans l'autre sens ?

    Posté par  . Évalué à 10.

    Plutot que de synchroniser automatiquement, est-ce qu'il ne serait pas plus interessant d'avoir un message lorsque l'on retire la cle usb du genre :
    "Attention ! Vous n'avez pas demonter votre peripherique avant de le retirer. Vos donnees n'ont pas ete synchronisees."
    Du coup, on evite la question "Pourquoi ca n'a pas marche ?" (ou plutot on y reponds) et en meme temps, on "eduque" le debutant.
    Tout benef, non ?
    • [^] # Re: Et dans l'autre sens ?

      Posté par  . Évalué à 2.

      Ce serait en effet le minimum, sans être une solution (à supposer qu'il y en ait une). C'est également ce que fait windows, d'ailleurs.
      • [^] # Re: Et dans l'autre sens ?

        Posté par  (site web personnel) . Évalué à 2.

        Mac OS X a ce type de comportement et affiche une boite de dialogue avec un beau triangle rouge qui fait peur pour signaler que le sync n'a pas été fait.
  • # Pour debian...

    Posté par  . Évalué à 3.

    Voici la marche a suivre :

    Fixer les fichier de périphérique (y compris pour plusieurs clés) :
    Card Readers and USB keys using udev ( http://www.debian-administration.org/articles/126 )

    Démontage automatique au bout de x secondes d'inactivité :
    Automounting card readers and USB keys using autofs ( http://www.debian-administration.org/articles/127 )

Suivre le flux des commentaires

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