Forum général.général On a développé un nouveau système de fichiers en peer-to-peer

Posté par . Licence CC by-sa
8
28
jan.
2016

Je sais qu'il y a pas mal de sysadmins et développeurs ici présent donc je souhaitais partager ça ici dans l'espoir de récolter un peu de feedback.

On vient de lancer notre petit bébé qui est un système de fichiers décentralisé en peer-to-peer après quelques mois de développement. Il permet notamment de créer des infrastructures de stockage en quelques minutes.

Si vous voulez regarder ça de plus près (et le tester) c'est par ici - https://infinit.sh. N'hésitez pas si vous avez des questions / feedback !

  • # Manque d'info a vue de nez

    Posté par . Évalué à 2.

    Est ce que le bloc sont redondés ?
    Quels performances peut on attendre ?
    Avantage inconvénients par rapport à d'autre tech similaire ? (tahoe lafs, mogilefs, ..)

    • [^] # Re: Manque d'info a vue de nez

      Posté par . Évalué à 4.

      • Oui il y a de la redondance, le facteur de réplication des données est configurable. Tu peux voir plus d'infos sur la techno ici : https://infinit.sh/documentation/technology

      • Niveau performance, ca va dépendre du type de ton réseau (combien de noeuds, stockage cloud/local…) mais comme les opérations sont asynchrones, l'expérience ressemble vraiment à un système de fichiers natifs.

      • Tahoe-LAFS: plus ou moins le même concept que nous. On essaie de faire en sorte que ce soit plus facile d'accès pour les développeurs (dans l'utilisation, les interfaces etc) à la manière d'un docker par exemple. On est également plus orienté vers les entreprises.

      • MogileFS: je ne sais pas si c'est encore maintenu, il y a peu de documentation, liens morts etc. Je ne me lancerai pas dans son installation mais sinon c'est décentralisé de la même manière que nous.

      • [^] # Re: Manque d'info a vue de nez

        Posté par (page perso) . Évalué à 2.

        Deux petites questions :

        • différence avec glusterfs ?

        • gestion des quotas utilisateurs / group ?

        • [^] # Re: Manque d'info a vue de nez

          Posté par . Évalué à 2.

          • GlusterFS utilise un système de master/slave pour la réplication des données plutôt qu'un système complètement décentralisé comme le notre. Leurs ressources de stockage sont également uniquement locales. Du coup ils partent du principe qu'ils font confiance aux noeuds. Avec Infinit, comme on peut construire des infrastructures hybrides, par exemple avec un stockage local et un stockage cloud (S3, Google Cloud Storage…), on considère que chaque noeud peut tomber (un cloud que tu ne contrôles pas) ou être malicieux, donc notre réplication de données est tolérante aux fautes byzantines. Du coup, puisque tout est décentralisé (data et metadata) et qu’aucune hypothèse n’est faite sur les noeuds, il n’y a aucun single point of failure ou bottleneck.

          • Qu'entends-tu par quota? Quota d'écriture?

          • [^] # Re: Manque d'info a vue de nez

            Posté par (page perso) . Évalué à 2.

            Qu'entends-tu par quota? Quota d'écriture?

            Limiter l'espace disque par personne / projet (groupe) afin de ne pas exploser en volumétrie.

          • [^] # Re: Manque d'info a vue de nez

            Posté par . Évalué à 2.

            fautes byzantines.

            C'est quoi?

            • [^] # Re: Manque d'info a vue de nez

              Posté par . Évalué à 2. Dernière modification le 01/02/16 à 13:28.

              Un ensemble de composants informatiques fonctionnant de concert doivent gérer d'éventuelles défaillances parmi eux. Ces défaillances consisteront alors en la présentation d'informations erronées ou incohérentes. On s'intéresse ici à des problèmes de défaillances, aussi bien matérielles que logicielles, d'origine accidentelle ou malveillante, intervenant pendant l'établissement des informations ou pendant leurs transports d'un composant à l'autre. La gestion de ces composants défectueux est aussi appelée tolérance aux pannes.

              https://en.wikipedia.org/wiki/Byzantine_fault_tolerance

              Pour nous, prévoir que certains noeuds de stockage peuvent tomber ou être malicieux (pour la réplication par exemple) et les gérer pour que tout fonctionne quand même.

  • # Question

    Posté par . Évalué à 2.

    Je n'ai pas vu de demande de don ou inscription sur le site, c'est gratuit ?

    Vu que c'est en peer to peer, chaque utilisateur du logiciel heberge une partie des données des autres utilisateurs ?

    Dans l'exemple :
    infinit-volume --create --as bob --network my-network --name my-volume --push
    bob est un identifiant unique ? si j'utilise "bob" personne d'autre ne pourra l'utiliser ?

    Si je copie ma clé RSA sur un autre PC pour accéder au dossier "distant", il est intégralement téléchargé sur le PC ou bien c'est seulement à l'accès au fichier que le fichier sera téléchargé "à la volée"?

    • [^] # Re: Question

      Posté par . Évalué à 1.

      C'est gratuit pour des infrastructures < 30 personnes. On vise surtout les grosses entreprises pour la monétisation avec également des solutions spécifiques (https://infinit.sh/solutions).

      Cela dépend de la configuration de ton infrastructure. Tu peux imaginer une infra où 10 personnes stockent localement l’ensemble des fichiers donc dans ce cas là oui. Tu peux aussi imaginer une configuration où les 10 personnes ne sont que des clients et ce sont 3 serveurs qui stockent les fichiers entre eux et dans ce cas là non.

      L'identifiant est unique si tu utilises notre Hub oui, sachant que tu peux aussi rester complètement décentralisé (ne pas utiliser notre Hub) et dans ce cas l'identifiant sera unique seulement à l'intérieur de tes réseaux.

      Les fichiers sont téléchargés à la volée lors de l'accès oui, d'où l'intérêt par rapport à des solutions comme Dropbox/Bittorrent Sync où tu as besoin de tout cloner sur ton PC et donc avoir suffisamment d'espace disque.

  • # Groupe de stockage par site

    Posté par (page perso) . Évalué à 1.

    Bonjour,

    Très bonne initiative pour le SDN (Storage Define Network) ainsi que pour les PCA pour la partie NAS, existe-il la même approche pour la partie BLOC pour les VM? Où peut-on utiliser ce FS pour les VM?

    Par contre, est-il possible de définir des groupes de stockage par niveau de performance ou par site?

    • [^] # Re: Groupe de stockage par site

      Posté par . Évalué à 1.

      Oui Infinit peut être utilisé par des VMs. D’ailleurs certaines entreprise de hosting l’utilise exactement de cette manière; pour partager un espace de stockage entre des VMs ou migrer des VMs plus rapidement (sans avoir à copier les données). Pour ce qui est de l’interface, nous fournissons du fichier et objet mais pas de bloc car cela nous limiterait en terme de flexibilité sur le contrôle d’accès par exemple.

      Tu peux, via les command-line tools, définir plusieurs infrastructure de stockage très facilement. Par exemple, une qui agrege des resources de stockage local (disques et serveurs locaux etc.) ce qui te donnera une très bonne perf. De la meme manière tu pourrais définir une infrastructure basé sur un ou plusieurs clouds, auquel cas le temps d'accès sera moins bon que des ressources locales, mais tu auras d'autre avantages: moins de chance que ces resources deviennent inaccessible etc.

  • # Forces du bouzin

    Posté par . Évalué à 2.

    Pré-scriptum: je compatis, c'est chiant la com. Et bon courage.

    J'ai suivi le lien donné. J'ai vu… une superbe page web, blindée de graphiques sans réelle valeur (désolé, opinion perso), super pour les daycideurs pressés mais… ben, comme tu l'as dis, ici, c'est plutôt un site de power-users en tout genre: admin, dev, utilisateurs, pro ou pas…
    Penses à developpez.com, ça pourrait te servir comme vecteur de com', et il est plus facile d'y avoir un haut karma qu'ici :)
    Sinon, il faudrait une page listant des raisons techniques d'adopter votre enfant. Moi, un graphique non-technique ça me cause pas (enfin, si, ça me dit: "attention le FUD arrive"… pas cool, hein?) je préfère une liste de phrases avec des termes techniques que je peux aller vérifier s'il arrivait que je ne les comprenne pas.

    Bref, ton lien ne m'à pas donné envie de creuser.
    Moi, je cherche des raisons techniques d'utiliser de nouvelles technos et concepts, et il me faut pour ça une description brève qui inclue au moins les avantages espérés (par le fournisseur, donc toi) de la techno en question. Bref, j'ai quelques questions qui me viennes à l'esprit par rapport à ce thread (plus informatif pour le coup que la page d'accueil de ton site).

    D'abord, il semble logique que ce système soit pour le partage des données. À quel niveau? LAN? WAN? Internet?
    Si c'est du partage de fichier, en quoi est-ce censé intéresser les développeurs? Après tout, nous on accède juste aux fichiers avec un bon vieux fopen, même si j'ai envie de pleurer quand des confrères me disent que ça sert à rien de savoir comment le système tourne (le pire, c'est que techniquement ils ont raison).

    Si c'est pour de l'admin, je ne peux pas trop poser de questions pertinentes, ce n'est pas mon domaine malheureusement (il faudrait que j'arrive à bosser dedans, mais si je dois me retaper le chemin de l'école… dur) mais:

    • ça se base sur quels protocoles? IPv4? IPv6? autre chose?
    • vous indiquez le(s) type(s) de chiffrement(s) utilisé(s). Cool. Mais, ce sont des libs maison, ou des libs éprouvées? Et si c'est le cas, lesquelles? On à eu il n'y à pas longtemps un fork d'OpenSSL pour certaines raisons… Oups, ça, c'est plus une question de dev, désolé :)
    • quel est le coût en terme de perfs? CPU & RAM, j'imagine que c'est quasi-négligeable, mais pour la BP?
    • comment ça réagit à des attaques MiM?
    • le FS en question est-il en clair ou non?
    • y'a-t-il un impact de perf quand la majorité du réseau est déconnectée/injoignable?
    • un rapport avec freenet?

    Pour finir, le jour ou tu auras une telle analyse, tu seras bienvenu à faire un journal ici, je pense que ce sera bien reçu et, en plus, un journal te permettra d'avoir une véritable visibilité (sur ce site, du moins, parce que les forums ne me semblent pas être l'endroit le plus exposé).

    • [^] # Re: Forces du bouzin

      Posté par . Évalué à 2.

      Pour ce qui est du wording du site web etc, il y a en effet une volonté de rendre le produit accessible mais sachant qu'on veut aussi séduire les sysadmins, il y a également pas mal d'infos dans la FAQ et dans technology (https://infinit.sh/documentation/technology) pour les power users. Aussi, on est en train d'open sourcer les briques de toute notre techno côté client.

      Pour le partage de données, on fournit un système de fichiers POSIX (dans la meme veine que NFS, ZFS, ext4 etc.). Tu peux donc tout a faire faire un fopen() sur un fichier qui est stocke via ce système de fichier. La difference avec les autres est que le fichier n’est concrètement pas nécessairement stocke localement, mais distribué entre plusieurs machines qui composent l’infrastructure de stockage: serveur, disque local, cloud etc.

      • On se base sur UDP ou TCP suivant lequel fonctione le mieux dans ton environnement: blocage par les routeurs etc. En particulier un utilise uTP; le meme algo que Bittorrent
      • On utilise OpenSSL. Nous n’avons pas redévelopper d’algorithmes maison. On utilise en particulier RSA, principalement en CBC, avec des tailles de clef variables.
      • Le cout est négligeable en effet. En mode normal, Infinit utilise 0.1% de ton CPU mais ca peut monter a 5-10% si tu effectues énormément d’operations. Pour la bande passante, et bien tout depend de ta capacité réseau. Notre système essaie de l’optimiser pour l’utiliser un maximum.
      • Tous les protocoles sont prévus pour tolérer les attaques MiM, en chiffrant le traffic avec une clef spécifique par noeud du réseau par exemple.
      • Tous les fichiers sont découpes en blocs. Chaque bloc est chiffre avec une clef unique puis le bloc est répliqué dans le réseau un nombre de fois dependant du facteur de replication défini par l’administrateur. Donc rien n’est en clair.
      • Dans un cas extreme où la très grande majorité des noeuds qui stockent sont injoignables, tous les clients vont effectuer leurs requêtes aux meme serveurs, qui vont potentiellement être surcharges fonction du nombre de clients. De la meme manière, dans un cas extreme, certains fichiers pourraient ne plus être accessibles si tous les serveurs qui stockent une réplique sont down. C’est à l’admin de concevoir son infrastructure pour pouvoir tolérer les fautes et continuer à avoir une bonne qualité de service. Infinit fournit la plateforme pour le faire mais chaque environnement (personnel, professionnel etc.) est different.
      • Le seul rapport c’est que nous utilisons des protocoles peer-to-peer comme Freenet. En revanche, nous fournissons un système de fichiers avec du contrôle d’accès etc. alors que Freenet se concentre sur du partage de fichiers, comme Bitorrent.

      Merci pour developpez.com, je n'y avais pas pensé :)

Suivre le flux des commentaires

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