Forum Linux.général Copie de fichier sur n clé USB

Posté par  (site web personnel) .
Étiquettes : aucune
0
29
nov.
2006
Bonjour, je suis en train d'étudier la possibilité de copier le plus rapidement possible un ou plusieurs fichiers sur 20 à 40 clé USB simultanément.

Autrement dis je dispose d'une machine sur laquelle j'ai connecté disons 2 cartes USB PCI express disposant chacune de 5 ports USB.

Sur chacun de ces ports, je colle un HUB de 4 ports.
Je peux donc connecter 2x5x4 = 40 clé USB.

Nanti d'un script Udev qui me montera automatiquement celle-ci, je dois copier un fichier de 500 Mo sur ces 40 clé USB.

Le but est de faire en sorte que les 40 clés soient chargés en moins de 5 minutes.

Me viennent plusieurs questions :

Sachant que j'ai un débit théorique de 480 Mbits.s-1 par port USB, soit environ 30 Mo.s-1 en pratique, divisé par 4 (à cause du HUB), je dispose d'environ 6 Mo.s-1
Est-ce que le disque dur va suivre ? Même en Sata-Raid striping ?

Vais-je avoir des ralentissements, les bus vont-ils suivre ?
Merci
  • # theorie...

    Posté par  . Évalué à 1.

    si toutefois tu lances une fois le fichier source pour le copier sur N support,
    tu n'aura pas de probleme de debit.

    si tu lances les copies l'une apres l'autre alors tu va ouvrir 40fois le fichiers sources, et donc en effet peut-etre avoir des baisses de debits...
    • [^] # Re: theorie...

      Posté par  . Évalué à 1.

      enfin un calcul rapide sur ta demande impose

      500Mo à deposer en 5 minutes => 100Mo/minutes => 800Mbp/minutes => 13,3Mbps
      ce serait le debit de lecture ideal pour tenir tes objectifs

      apres il y a le debit en ecriture sur les clefs usb, qui devront suivre, sinon les objectifs ne seront pas atteints.
  • # ramdisk

    Posté par  . Évalué à 2.

    Perso, je ferais un RAMDISK ( http://www.linuxfocus.org/Francais/November1999/article124.h(...) )

    Ainsi plus de problème de débit de disk dur :-) peut-être juste acheter de la ram :)
    • [^] # Re: ramdisk

      Posté par  . Évalué à 3.

      Si la machine dispose de suffisement de RAM et ne fait pas trop de choses par ailleurs, le cache disque de Linux fera exactement la même chose sans qu'il soit nécessaire de manipuler quoi que ce soit.
      • [^] # Re: ramdisk

        Posté par  . Évalué à 2.

        L'avantage du ramdisk, c'est que quelques soit l'état de swap de la machine, tu es certain de qu'il va chercher directement en mémoire.

        deplus, ton cache peut être détruit, si l'OS estime qu'il n'est plus necessaire, et paf, au prochain accès, l'OS va rechercher 500 méga sur le disque dur.

        Deplus, si tu remonte le ramdisk en readyonly, l'OS peut aussi optimiser l'accès à des processus concurents.

        Enfin, un ramdisk, c'est simple à faire.
  • # udev

    Posté par  . Évalué à 2.

    et bien justement, fais un script udev qui lancera un copie de fichier à chaque connexion.

    Ensuite ça suivra sans problème si tu as de la ram de libre : pour cacher le contenu de la source, mais aussi avoir un de cache en écriture pour les clefs.
  • # Questions:

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

    1. Quel est le débit en écriture des clés ? Ce sera sans doute cela le plus bloquant.

    2. Ce n'est sans doute pas une solution de multiplier les hubs... Y a-t-il une raison par rapport à simplement faire 4 passes de 10 clés ? Tu ne vas pas accélérer la copie en augmentant le nombre de clés connectées simultanément, tu ne vas qu'engorger le bus.

    3. Une règle RUN dans ta règle udev lançant la copie peut améliorer le temps entre l'insertion de la clé et le moment où les fichiers sont copiés. Tu peux même gérer dans le script appelé le démontage de la clé et une notification de démontage, pour insérer la clé suivante.

    Admettons que tu n'utilises pas les hubs. Si les clés tiennent les débits usb que tu attends sur chaque port de la carte (30 Mo/s), il te faut 16.6s pour copier ton fichier. Bon, je ne sais pas si c'est possible, je ne connais pas les débits des clés actuelles... Bref. Le temps de connecter tes 10 clés, la copie est presque finie, et tu pourras les déconnecter pour mettre les 10 suivantes.

    Après, l'avantage de ta solution, c'est que tu es moins demandeur au niveau des performances en débit de tes clés, mais tu vas forcément plus engorger le bus usb...
    • [^] # Re: Questions:

      Posté par  . Évalué à 2.

      Après, l'avantage de ta solution, c'est que tu es moins demandeur au niveau des performances en débit de tes clés, mais tu vas forcément plus engorger le bus usb...

      Oui, mais il demande beaucoup plus de bande passante aux ports usb. Il ne faut pas aussi oublier que l'usb est essentiellement géré par logiciel. 40 clés = environ 40 fois plus de consommation cpu sans compter la gestion de la concurrence sur le port usb qui rajoute encore de la consommation cpu. Cela peut vite faire boule de neige est consommer à plein temps le cpu (En même temps, je ne connais pas exactement la gestion de l'usb sous linux et sur d'autre OS d'ailleurs).

      Personnellement, j'utiliserai 3 hub de 4 ou 8 ports.
      1 Je branche mes clé sur le premier hub et je le branche sur le pc
      2 avec udev, la copie se lance automatiquement
      3 Pendant ce temps, je branche des autres clés sur le deuxieme et je le branche
      4 idem à 2
      5 Je branche des clés sur le troisieme hub
      6 Lorsque que les clés du premier hub sont pleine, je remplace le hub 1 par le hub 2
      7 je débranche les clés sur le hub 1 et en branche de nouvelle
      8 etc....

      Sinon, je te conseille vivement d'utiliser rsync ou unison à la place de cp. Cela te permettera de ne pas tout recopie sur un clé si tu fais une mise à jour ou si la copie echoue.
  • # Approche débit / bande passante

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

    Il faut avoir une approche débit pour ne pas se poser trop de questions.
    En fait, ce que tu cherches, c'est copier 40 fois 500 Mo en 5 minutes,
    c'est à dire 20 Go en 5 minutes, soit 66 Mo/s en sortie vers le pool
    de clés USB.

    C'est totalement jouable avec du PCI express (2.5 Gbps sur du x1, compter
    moins de 2 Gbps utiles, ce qui correspond justement au débit max d'une
    carte 4 ports USB2), mais il va falloir expérimenter sur la répartition des
    clés par nombre de ports et de cartes. Pour les clés, ça te fait 1.6 Mo/s en
    écriture par clé, ce qui semble tout à fait raisonnable, même pour des clés
    de piètre qualité.

    Ensuite, les disques : c'est tout à fait envisageable de tenir 66 Mo/s sur du
    RAID0 avec deux disques récents. Même sur un seul disque, avec les
    données au début, ça peut se faire mais c'est juste juste. Par contre, on
    se rend facilement compte que c'est bel et bien le disque qui risque d'être
    le facteur limitant. Donc deux propositions :

    - avoir suffisamment de RAM dans la machine pour que le fichier tienne en
    cache ou en RAMDISK. Avantage: on néglige les limites en lecture, et on
    plafonne aux 6 Mo/s du hub USB, ce qui, en admettant que les clés les
    supportent, ramène le temps de copie à moins de 1mn30.

    - réduire le nombre de clés simultanées pour atteindre les limites du disque
    avec moins de logistique et connectique à gérer.

    La première proposition est la plus intéressante, car 500 Mo de RAM ne
    coûtent rien, et la solution devient scalable vu qu'elle est limitée par le
    nombre de clés par hub USB. Il te suffit alors d'ajouter des cartes USB
    pour aller plus vite, et mettre moins de clés par hub, ou augmenter le
    nombre de clés traitées simultanément.

    Très honnêtement, je craindrais plus pour la stabilité du système (très forte
    contention dans les drivers USB et SCSI, blocage de tous les accès à
    chaque branchement d'une clé, etc...) que pour la capacité des bus à
    véhiculer de telles quantités de données. D'où l'intérêt peut-être de
    réduire un peu le nombre de clés pour les faire écrire plus vite et les
    changer plus rapidement.

    Par exemple, si chaque clé est capable d'écrire à 12 Mo/s (à tester), alors
    tu peux n'en mettre que 20 et les remplir en 45 secondes, c'est à dire que
    tu remplaces une clé toutes les 2 secondes.

    Bon courage en tout cas :-)
    Willy

Suivre le flux des commentaires

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