Conseils pour gérer des fichiers sur plusieurs serveurs

WRInaute discret
Bonjour à tous

Je développe un site pour stocker des fichiers. C'est à petite echelle, mais je voudrais prévoir plus grand.
Bon, c'est plus pour apprendre comment faire qu'autre chose en faite :)

Pour l'instant, je stock les fichiers dans un répertoire par utilisateur.
Mais le jours ou je ne vais plus avoir de place sur le disque dur, je vais devoir changer de méthode.

Quel sont vos conseils avis sur la façon la plus simple de procéder ?


Après y avoir penser, je pencher pour un truc comme ceci :
- un serveur avec la base de donnée et le site web principal
- serveur A et B qui stock des fichiers

Lorsqu'un fichier est demandé, je fais une requête pour savoir sur quel serveur ce trouve le fichier.

Lors de l'upload par contre, je ne suis pas sur de comment faire encore.
Déplacer des fichiers de serveur à serveur me semble assès lourd comme méthode.
Peut être un iframe qui inclus le script d'upload sur le serveur A ou B selon l'état des disque dur ?

Je n'ai pas beaucoup d'expérience la dessus alors je suis ouvert à toute proposition.


Merci,
Gunning Sky
 
WRInaute discret
Bonsoir

Genre de l'utilisateur 1 à 100 sur le serveur 1 ?
Là il est trop tard pour penser correctement, mais j'ai du mal à voir concrètement se que tu veux dire.

Au final je vais surement ouvrir un nv serveur dès qu'un serveur est plein, mais l'idée me plais pas trop parce que certain serveur auront beaucoup de trafic, alors que d'autre seront mort/peut de trafic.

Si tu veux bien approfondir ton idée, merci :)

Sky
 
WRInaute passionné
La solution la plus simple c'est de prendre un RPS de chez OVH car tu peux augmenter la taille du disque sans toucher au serveur (de 20 Go à 1 To) et avec 1 To tu peux en stocker des fichiers :wink:

Maintenant si tu veux vraiment plusieurs serveurs, pour l'upload tu utilise les fonctions FTP de PHP (les paramétres du serveur FTP étant stockés dans ta BDD)

Enfin, créer un dossier par utilisateur n'est pas forcément une bonne idée d'optimisation. Du moment que chaque fichier dispose d'information stockées dans la BDD, il peuvent se trouver n'importe ou cela n'a pas d'importance. Tu peux trés bien définir aléatoirement ou stocker le fichier (serveur et répertoire) et même pondérer le coté aléatoire en fonction de l'espace occupé sur un serveur ou sa charge.

Mais je reste persuadé qu'un RPS est la meilleure solution et si tu pense aller au dela des 1 To, tu multiplis le nombre de RPS. Par exemple, pour 3 To tu en prends 3 en version base 20Go, et tu peux augmenter la taille disue de chacun en mesure que tes besoins augmentent :wink:
 
WRInaute discret
Salut Fandecine

C'est une solution pas mal ça.

Si j'ai mis les fichiers de chaque utilisateur dans un répertoire spécifique, c'est parce que je prend en compte le cache générer par les miniatures des images. Sans répertoire spécifique, ça devient un peux plus dur. Mais faisable, certe.

Je vais calculer le budget pour un RPS, c'est une bonne idée, merci.

Je vais aussi regarder du côté de gandi qui semble proposer l'espace disque moins chère.

Sky
 
WRInaute discret
imagine une autre solution :
- un serveur principal pour la base de données (répliquée sur les autres serveur en lecture seule)
- X serveurs de stockage sur lesquels les internautes tombent au hasard (DNS round rubbin ou répartiteur de charge) et possédant chacun le site avec un réplica de la base en lecture seule, les écritures se faisant sur le serveur principal

chaque serveur accessible par les internautes peut stocker les fichiers de ceux-ci en local et les dupliquer sur un ou plusieurs autres pour backup (via FTP par exemple)
chaque serveur peut donner l'adresse d'un fichier et permettre à son propriétaire (ou destinataire) de le récupérer
en mettant une seule base de données pour les écritures, ou une sorte de proxy effectuant les écritures sur toutes les bases à la fois, tu t'arranges pour que si une machine tombe en rade il reste toujours une autre qui puisse répondre pour les envois et réceptions de fichiers

maintenant, c'est une organisation à voir au niveau du développement de base (le coeur de l'appli pour les accès à la base) et surtout qui a un coût non négligeable dès le début car pour bien faire les choses tu dois démarrer avec deux machines minimum
 
WRInaute passionné
Bah je ne comprends pas alors : je te propose de choisir un disque plus volumineux et pour toi c'est "inutile et hors de propos". Par contre lorsque Fandecine te propose un espace disque qu'il est possible d'augmenter c'est "une bonne idée". Au final ça revient au même hein :wink:

Au sujet du RPS, attention aux performances : https://www.webrankinfo.com/forum/t/rps-ovh.106778/
Vois aussi les offres de serveurs virtuels VDS/serveurs privés. Au moins tu ne devrais pas avoir de souci de temps d'accès au disque.
 
WRInaute discret
Axiso : c'est pas hors de propos, mais juste qu'un dique plus grand ... ça veux dire changer de serveur ou de disque... et ça j'ai pas envie du tout :) Mais au fond, t'as une part de raison, je l'admet :)

Au niveau des RPS, je suis d'accord, c'est pas facile de faire un choix.
Après avoir tester les RPS de OVH, et le système de virtualisation de Gandi, je préfère de loin le truc de gandi qui est plus rapide (d'après mes petits tests, suis pas un pro de ça ^^)


Pprem : Oui, c'est une solution qui doit bien fonctionner, mais pour la taille du projet actuel, c'est dur à mettre en place.
Je vais quand même essayer de mettre en place un système de se genre en test pour voir ce que ça donne.

De toute façon, le système idéal existe qu'a un moment donnée.
Merci pour vos avis/conseils en tout cas !

Sky
 
Discussions similaires
Haut