85 votes

Où IPFS stocke-t-il toutes les données ?

J'ai essayé de mettre en œuvre et de comprendre le fonctionnement d'IPFS et il y a quelques points qui ne sont pas clairs.

Des choses que j'ai essayées :
J'ai implémenté IPFS sur mon système et j'y ai stocké des fichiers. Même si je supprime les fichiers de mon système et que je ferme le démon ipfs, je suis toujours en mesure d'accéder aux fichiers à partir d'une autre machine via IPFS.
J'ai remarqué qu'il y a un .ipfs dans mon répertoire personnel qui contient la partie des blocs de données que j'ajoute à IPFS.

Questions :
1. Les blocs sont-ils également stockés localement sur mon système ?
2. Où d'autre les données sont-elles stockées ? Sur les autres peers auxquels je suis connecté ? Parce que je suis toujours capable d'accéder au fichier si je ferme mon démon ipfs.
3. Si cela est vrai, et que les données sont stockées à plusieurs endroits, la possibilité de perdre mes données est toujours présente, si tous les pairs se déconnectent du réseau ?
4. Chaque pair sur le réseau stocke-t-il le fichier entier ou seulement une partie du fichier ?
5. Si une copie des données est distribuée sur le réseau p2p, cela signifie que les données sont dupliquées plusieurs fois ? Comment cela est-il efficace en termes de stockage ?
6. Nous stockons aussi les données téléchargées par d'autres pairs ?
7. Configuration minimale requise pour exécuter IPFS ? Nous avons juste besoin d'un stockage abondant, pas nécessairement d'un système puissant ?

Merci d'avance !

84voto

G. M. Points 934

Quand vous téléchargez quelque chose, le fichier est en morceaux par ipfs et stocké dans votre dossier cache (.ipfs).

Si vous vérifiez l'existence du fichier sur un autre pair du réseau (disons la passerelle principale, ipfs.io), ce pair vous demande le fichier et caches elle aussi.

Si plus tard vous éteignez votre démon et que vous pouvez toujours voir le fichier sur la passerelle, c'est probablement parce que la passerelle ou un autre pair sur le web l'a toujours mis en cache.

Lorsqu'un pair veut télécharger un fichier mais qu'il est à court de mémoire (il ne peut plus mettre en cache), il met à la poubelle les fichiers les plus anciens pour libérer de l'espace.

Si vous souhaitez vous plonger dans la technologie, consultez d'abord ces principes fondamentaux :

  • comment fonctionne git
  • tables de hachage décentralisées (DHT)
  • kademlia
  • arbres de merkle

Ce dernier devrait vous donner une idée du fonctionnement du mécanisme, plus ou moins.

Maintenant, répondons point par point

  1. Les blocs sont-ils également stockés localement sur mon système ?

Oui

  1. Où d'autre les données sont-elles stockées ? Sur d'autres pairs auxquels je suis connecté ? Parce que je suis toujours capable d'accéder au fichier si je ferme mon démon ipfs.

Tous les pairs qui demandent votre fichier le mettent en cache.

  1. Si cela est vrai, et que les données sont stockées à plusieurs endroits, la possibilité de perdre mes données est toujours présente, si tous les pairs se déconnectent du réseau ?

Vous perdez le fichier lorsqu'il n'est plus possible de reconstituer votre fichier à partir de tous les pairs qui en avaient une partie en cache (y compris vous-même).

  1. Est-ce que chaque pair sur le réseau stocke le fichier entier ou seulement une partie du fichier ?

On peut en obtenir juste une partie, imaginez que vous regardez un film et que vous vous arrêtez plus, ou moins, à la moitié... ça y est, vous avez mis en cache juste la moitié.

  1. Si une copie des données est distribuée sur le réseau p2p, cela signifie que les données sont dupliquées plusieurs fois ? Comment cela est-il efficace en termes de stockage ?

Lorsque vous regardez une vidéo sur YouTube, votre navigateur la met en cache (ce qui signifie une réplication !)... ipfs est plus efficace en termes de trafic, disons que vous éteignez le navigateur et que 2 minutes plus tard vous voulez la regarder à nouveau. Ipfs le récupère dans votre cache, YouTube vous oblige à le télécharger à nouveau. Il y a aussi un sujet intéressant sur le stockage delta (lié à git) et de l'endroit où vous l'obtenez (cela pourrait être dans votre réseau local... ce qui signifie une vitesse fulgurante) mais je veux m'en tenir aux questions.

  1. Nous stockons aussi les données téléchargées par d'autres pairs ?

Si vous obtenez des données, vous les mettez en cache pour...

  1. Configuration minimale requise pour exécuter IPFS ? Nous avons juste besoin d'un stockage abondant, pas nécessairement d'un système puissant ?

Le démon principal est écrit en go. Go est efficace mais pas autant que de l'écrire en C++, C, Rust... De plus, la technologie est assez jeune et elle s'améliorera avec le temps. Plus vous avez d'espace, plus vous pouvez mettre en cache, la puissance du CPU n'est pas si importante.

Si vous êtes intéressé par les moyens de stocker des données de manière p2p, voici quelques liens vers des projets intéressants.

1 votes

Excellentes explications, merci ! Ai-je bien compris que, en tant que pair, je ne sers que les blocs que j'ai préalablement demandés activement ? Par exemple, si je n'ai jamais accédé qu'à une seule page web via ma passerelle locale, mon démon ne servira que les blocs liés aux fichiers de ce site web et rien d'autre ? J'ai un démon en cours d'exécution depuis plusieurs heures maintenant et ipfs stats bw me dit que > 1 Go a déjà été envoyé. S'agit-il de données réelles (c'est-à-dire les blocs de sites Web mentionnés ci-dessus) ou inclut-il également des métadonnées, des messages de synchronisation, etc.

1 votes

Il comprend tout. De dht à bitswap sur chaque protocole que vous avez activé. Vérifiez ici pour plus d'informations docs.ipfs.io/reference/cli/#ipfs-stats-bw

1 votes

À la liste des réseaux de stockage p2p, j'ajouterais GNUnet y Freenet .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X