Jump to content

Archived

This topic is now archived and is closed to further replies.

Arofarn

Disque Dur en RAM et serveur FTP rapide

Recommended Posts

Salut,

Voilà mon projet pour un serveur FTP:

- le serveur FTP en question est vsftpd configuré pour accepter des users virtuels (pas de compte anonyme) suivant le tutorial de SupInfo (voir un autre de mes topics à ce propos)

- les utilisateur sont "chrootés" dans le répertoire du FTP

- le serveur servira à la distribution des derniers patchs/mise à jour pour les tournois (3 ou quatre jeux) d'une LAN pour éviter de saturer une bande passante faible et de retarder l'organisation

=> la quantité de données à stockée est relativement limité (quelques centaines de Mo)

La machine:

- Athlon XP 1800+ @2GHz réel

- Abit NF7-S (nforce2)

- 2x512 Mo DDR333 en dual channel => total 1Go

- DD Maxtor 120Go ATA133

- carte réseau Gigabit relié au réseau lui aussi en Gigabit (au moins la branche principal)

- Fedora Core 3 (GNU/Linux noyau 2.6.10)

Le problème est qu'à mon avis le disque dur va avoir du mal à fournir suffisament de donnée en période de pointe, à cause des multiples accès simultanée.

Je voudrais donc créer une sorte d'unité de stockage virtuelle dans la RAM ou je stockerais les données les plus demandées. Comme ça plus de problème vis à vis du disque dur.

Est-ce que c'est possible? Si oui comment?

Link to post
Share on other sites

C'est possible en ayant le support ramdisk dans le noyau

(c'est dans device drivers =>block devices )

Par contre je n'ai aucune idée de la taille maximal que tu peut lui donner et

"quelques centaines de Mo" ca va bien bouffer ta ram de dispo pour ton serveur)

commencer par modifié /etc/lilo.conf (ou grub mais moi j'utilise lilo)

image=/boot/vmlinuz-2.6.8ec6

label="ramdisk-2.6"

append="ramdisk_size=20000" <<force la taille a 20Mo

read-only

+puis

# créer un point de montage:

mkdir /mnt/ramdisk0

# créer un système de fichiers:

mke2fs /dev/ram0

# monter le ramdisk:

mount /dev/ram0 /mnt/ramdisk0

et apres tu copie dans /mnt/ramdisk0 tes fichiers

Link to post
Share on other sites
C'est possible en ayant le support ramdisk dans le noyau

(c'est dans device drivers =>block devices )

Par contre je n'ai aucune idée de la taille maximal que tu peut lui donner et

"quelques centaines de Mo" ca va bien bouffer ta ram de dispo pour ton serveur)

commencer par modifié /etc/lilo.conf (ou grub mais moi j'utilise lilo)

image=/boot/vmlinuz-2.6.8ec6

label="ramdisk-2.6"

append="ramdisk_size=20000" <<force la taille a 20Mo

read-only

+puis

# créer un point de montage:

mkdir /mnt/ramdisk0

# créer un système de fichiers:

mke2fs /dev/ram0

# monter le ramdisk:

mount /dev/ram0 /mnt/ramdisk0

et apres tu copie dans /mnt/ramdisk0 tes fichiers

C'est presque ça, sauf que au lieu de mettre l'image sur le disque dur avec mke2fs puis mount, il suffit de monter le type tmpfs...

(d'ailleurs, dans ton exemple, le append de lilo n'est même pas utilisé car tu n'utilise pas de ram!)

Link to post
Share on other sites
C'est presque ça, sauf que au lieu de mettre l'image sur le disque dur avec mke2fs puis mount, il suffit de monter le type tmpfs...

(d'ailleurs, dans ton exemple, le append de lilo n'est même pas utilisé car tu n'utilise pas de ram!)

Je n'en suis pas tout a fait sur car dans le noyau la taille du ram disque est regler a 8192Kb

et apres l'avoir formater et monter dans /mnt/ram0 , il fait bien 7 et quelques mo.(ya toujours un peu de perte )

En rajoutant a lilo

append="ramdisk_size=20000"

et en faisant tout pareil et bien /mnt/ram0 fait alors 19 mo .

Si j'y copie un fichier et que je redemarre , il n' y a plus rien.

Donc pour moi ca marche meme si ta solution est surement mieux.

Je viend de l'essayer et j'ai alors un dossier avec 250 mo de libre (la moitié de ma ram quoi)

Link to post
Share on other sites

Pour préciser, je compte faire une partition virtuelle en RAM d'environ 300 à 500Mo ce qui me laissera encore plus de 500Mo de RAM, largement suffisant

Le passage par la définition de la taille de RAM utilisée pour le stockage virtuel passe obligatoirement par la configuration de grub ?

Si oui, cela veut dire que je serais obligé de redémarrer pour activer/désactiver, le DD virtuel :-/ .

C'est un génant mais pas réellement problématique: le serveur FTP tournera à plein au début de la LAN. Ensuite je participerais au tournois UT2004 (gamer inside) à ce moment j'aurais besoin de toutes ma RAM et le serveur FTP sera plus limité pour ne pas plomber mon ping et mon framerate.

Donc si il y avais une solution sans redémarrage, cela m'arrangerait (je sais je suis chiant).

Dans tous les cas, si la configuration passe par grub, il me faudra ajouter une entrée au menu de démarrage (une avec DD virtuel en RAM et une autre normale sans).

Pour info un peu HS => mon OC est très stable depuis presque deux ans (ancienne machine WC @2.4GHz, en attente de budget pour ré-adaptation au nouveau boitier, donc OC @2GHz avec refroidssement classique).

J'ai des uptime de plusieurs semaines. Si cela ne va pas plus loin c'est à cause des LANs lol

Un brave 1800+ JIUHB de la belle époque... ;-). d'ailleur la carte mère est aussi à toutes épreuve. J'ai fait la dernière LAN avec le radiateur (Zalman passif) du northbridge du nForce2 tombé au fond du boitier => pas le moindre plantage malgrè l'OC sous UT2004 :transpi:

Link to post
Share on other sites

Ben oui, c'est sans redémarrer : l'option à changer, c'est pour choisir la taille du ramdisk !

En fait, y'a même moyen de tout faire sans redémarrer, je pense, en changeant la taille dans /sys/block/ramX/size

Edit : non en fait avec cette manière ça marche pas, par contre, il suffit de choisir lors du mount :

$ mount none -t tmpfs /mnt/ram -o size=100M

zaverel : autant pour moi :transpi:

Link to post
Share on other sites

Input/Output , le systeme met en cache dans la memoire les fichiers lu/ecrit frequemment

serieu vous deconnez la !! :D à croire que tu veux absolument que le transfert du/des fichier demmarre un millième de seconde apres la requete !!

Link to post
Share on other sites

Ben oui, les entrées/sorties passent par le cache, mais si un fichier est peu demandé par rapport aux autres, il sera plus long à avoir au début

de plus, ce cache n'est pas contrôlé dans le sens où il peut se vider à tout moment...

C'est sûr que c'est facile à utiliser, mais le but n'est pas forcément le même...

Link to post
Share on other sites

On peut gérer le I/O cache comme on veut, ou c plutot un systeme intégré dans le noyau qui travaille tout seul comme un grand ?

Et dans le cas ou on peut le controler, qu'est ce que ca apporte de plus ?

Link to post
Share on other sites
Input/Output , le systeme met en cache dans la memoire les fichiers lu/ecrit frequemment

serieu vous deconnez la !! :D à croire que tu veux absolument que le transfert du/des fichier demmarre un millième de seconde apres la requete !!

oui, c'est évident mais là je pourrais en quelques sortes controler le contenu du cache....

Et puis bon:

DD => Cache DD => Cache controleur => RAM => cache carte réseau => réseau

Ca va plus vite de faire:

RAM => cache carte réseau => réseau :-D

D'auatnt plus que de multiple fichier accéder en même temps auront vite fait de remplir le cache. Donc le cache n'arrêtera pas de se remplir et se vider, d'où d'importante pertre de performance, car beaucoup d'accès au disque pour remplir le cache. Avec ce principe, je remplis le cache une fois au début puis je le vide à la fin pour récupérer la RAM pour autre chose.

[troll]

demander de faire la même chose sous Windows :incline:

[/troll]

Link to post
Share on other sites
oui, c'est évident mais là je pourrais en quelques sortes controler le contenu du cache....

Et puis bon:

DD => Cache DD => Cache controleur => RAM => cache carte réseau => réseau

Ca va plus vite de faire:

RAM => cache carte réseau => réseau :-D

D'auatnt plus que de multiple fichier accéder en même temps auront vite fait de remplir le cache. Donc le cache n'arrêtera pas de se remplir et se vider, d'où d'importante pertre de performance, car beaucoup d'accès au disque pour remplir le cache. Avec ce principe, je remplis le cache une fois au début puis je le vide à la fin pour récupérer la RAM pour autre chose.

[troll]

demander de faire la même chose sous Windows :incline:

[/troll]

Je pense ca doit etre possible, mais faudrait passer par un logiciel tiers qui allouerait lui meme la mémoire, et apres ca créé un disque virtuel. Mais perso j'ai jamais vu ...

Et ce sera jamais aussi rapide que faire le mount :D

Link to post
Share on other sites
Je pense ca doit etre possible, mais faudrait passer par un logiciel tiers qui allouerait lui meme la mémoire, et apres ca créé un disque virtuel. Mais perso j'ai jamais vu ...

Et ce sera jamais aussi rapide que faire le mount :-D

Et jamais aussi bon marché ! :incline:

Link to post
Share on other sites
et pkoi pas la racine du FTP sur gmailFS ?.

==> [ ]

nb:merci pour l'url

oui profites-en il fait beau :francais:

Question subsidière, ce système alloue obligatoirement de la RAM physique (très rapide) ou arbitrairement de la RAM virtuelle (qui peut donc être de la RAM physique et/ou du swap) :fou:

La différence est de taille :incline:

Link to post
Share on other sites

pci@gandalf ~ $ grep tmp /etc/fstab
tmpfs                   /dev/shm        tmpfs           defaults                0 0
tmpfs                   /tmp            tmpfs           defaults                0 0

avec ça (et la config du noyau qui va bien), ton /tmp est monté en RAM, et prend au max la moitié de la RAM (l'allocation est dynamique)

sur une machine avec 512 Mo de RAM :

pci@gandalf ~ $ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/md/0             23070436  15842408   6056100  73% /
tmpfs                   258192         0    258192   0% /dev/shm
tmpfs                   258192        36    258156   1% /tmp

donc tu décide que ton serveur FTP a pour racine /tmp

et dans ton démarrage qq part tu fais un cp -r /ton/arbo /tmp

(par contre au premier reboot ... les modifs sont zappés)

Link to post
Share on other sites

×
×
  • Create New...