Schéma de partitionnement pour serveur Web

Bonjour à tous,

Je dois monter un serveur Web multi-sites (3 pour commencer) dans une VM Hyper-V avec 4 Go de RAM et 100 Go d’espace disque.
Pour cette installation, je souhaite disposer mes sites dans des /home séparés car ils seront administrés par différentes personnes. (Je pense que c’est une bonne solution)

Services nécessaires :

  • ntp, ssh, proftpd, exim4
  • apache2, php, phpmyadmin, mysql
  • fail2ban, rkhunter

L’assistant Debian 8.5 me propose :

SCSI3 (0,0,0) (sda) - 118,. GB Msft Virtual Disk
n°1 primaire 9.0 GB f ext4 /
n°5 logique 3.0 GB f ext4 /var
n°6 logique 8.6 GB f swap swap
n°7 logique 398.5 MB f ext4 /tmp
n°8 logique 97.1 GB f ext4 /home

Qu’en pensez-vous ? La swap peut être réduite ? et /var grossit ?
Je prends toutes astuces et bonnes idées !
Merci d’avance… :wink:

Autant de swap sur une VM, ça me laisse interrogatif. Si jamais tes utilisateurs bouffent toute la RAM, il me semble plus opportun d’augmenter la RAM allouée à la VM non ? Et puis un serveur web qui swap :confused:.

Tout ça est à prendre avec des pincettes, je ne suis pas qualifié en la matière, contrairement à d’autres ici ;-).

Je plussoie le propos de @seb-ksl

Pas la bonne solution …
C’est soit dans le répertoire /var … soit dans /srv …
Avec création utilisateur qui n’aura les droits “corrects” pour son propre site …
Tel que :
/srv/espace_sites_user1

Ensuite, tu peux linker /home/user1 avec /srv/espace_sites_user1 …

Côté partitionnement, il te manque :
/usr/
/usr/local - pas besoin de plus d’un 1Go
/var/lib/mysql - destination des bdd
/var/mail
/var/log
/var/tmp
/srv ou /var/www

Comme d’habitude, les tailles de partitions choisies par l’installateur sont nulles. /tmp trop petit, swap trop gros…

Je ne vois pas l’intérêt de séparer /usr de la racine sauf si on veut le monter en lecture seule.

Pour les tailles, l’utilisation de LVM apporterait de la souplesse en permettant d’agrandir facilement les volumes logiques en cas de besoin (si on a laissé de l’espace libre dans le groupe de volumes, ce que l’installateur ne fait pas automatiquement bien sûr).

Je dirais comme ça vite fait :

/boot en ext2 avec 250MB
LVM :
/ en ext4 9GB
SWAP 4GB
/var 80GB

C’est passe partout et rapide à mettre en place.
Les mails, données des sites, logs seront de toutes façon dans la partition ‘var’ donc autant mettre le maximum d’espace pour ça.
Le ‘tmp’ aura je pense se qu’il faut dans la racine.

La partition /home ne servira à rien pour un serveur web.

ah ! ça fait plaisir d’avoir des commentaires instructifs… :slight_smile:

ok donc

  • augmentation du /tmp à 2Gb
  • diminution de la swap à 4Gb

Je vais me renseigner sur LVM… mais sinon pour être sûr : pendant le wizard, il suffit de spécifier les différentes partitions et ensuite sélectionner “Configurer le gestionnaire de volumes logiques (LVM)” au lieu de “Terminer le partitionnement et appliquer les changements” ?

Pour les différentes partitions, ne maitrisant pas la chose je vais éviter de trop en faire…

  • je vais laisser /usr/ et /usr/local/ dans /
  • /var/lib/mysql à 200Mb semble correct ?
  • je vais laisser /var/mail/ dans / car pas beaucoup utilisé
  • /var/log/ à 200Mb semble correct ?
  • /tmp et /var/tmp/ ne correspondent pas à la même chose ?

La partition /home ne servira à rien pour un serveur web.

OK. Tu veux dire aucun intérêt de lui allouer trop d’espace disque ?J’avais eu un souci de paramètrage dans une ancienne installation Debian de configuration de proftpd entre user et dossiers accessibles… j’étais obligé d’utiliser /home pour l’hébergement des sites pour donner l’accès FTP aux différents webmaster (1 par site) ?

Non, pas du tout. Pour utiliser LVM il va falloir refaire tout le partitionnement :

  • une partition pour /boot (pas indispensable mais plus sûr en cas de problème avec LVM)
  • une partition pour LVM (volume physique)
    Ensuite il faut configurer LVM :
  • créer un groupe de volumes utilisant la partition LVM
  • créer des volumes logiques pour root, swap, var, tmp… dans le groupe de volumes

Non. Le contenu de /tmp n’est pas garanti de survivre à un reboot contrairement au contenu de /var/tmp. C’est pourquoi /tmp peut être défini comme un tmpfs (système de fichiers temporaire en mémoire) mais pas /var/tmp.
Cf. le FHS sur Wikipédia.

Pour ma culture, ça swap souvent un serveur web ? C’est souhaitable ?

d’après mes recherches un serveur Web ne doit pas faire de swap…

1/ mauvais choix !
2/ c’est toi qui voit … mais si tu a dans l’intention de restituer un service de mails … mauvais choix
3/ Pourquoi 200Mo ? c’est bien petit … pourquoi pas 1Go, ce qui laisse entrevoir le rythme de croissance … de toute façon, vu l’usage de LVM, il sera toujours tant de lui donner plus d’espace … mais 200 Mo semble vraiment “étroit”.
4/ /tmp et /var/tmp ont deux but différents et sont différents … @PascalHambourg a restitué l’info correcte.

Non, pas obligé … mauvaise conception, je dirais …
Cf, mon commentaire précédent, ajouté de celui-ci : oublie le FTP, fais du SSH, ce qui permet du SFTP … de chrooter vers la racine web correspondante !

ok je me suis lancé… j’ai cassé mon schéma. :smiling_imp:

J’ai configuré /boot en partition primaire comme si dessous :

Les options sont-elles correctes : primaire, 50MB, ext4, defaults, amorçage présent ?

Ensuite, j’ai ajouté une partition primaire de type “volume physique pour LVM” prenant le reste d’espace disque.

Ce qui donne :

Dites moi si je me trompe ! :wink:

Ensuite je fais “Configurer le gestionnaire de volumes logiques (LVM)” ou “Terminer le partitionnement et appliquer les changements” ???

PengouinPdt :
1/ ok je vais faire une partition /usr/ :sweat_smile:
3/ tu parles des 200 Mb pour /var/lib/mysql/ ou /var/log/ ?
5/ bon bah je vais également me renseigner sur SFTP…

NB: j’adore ce forum… :stuck_out_tongue_winking_eye:

/boot en primaire :oui
EXT4 : pas besoin, ext2 suffit largement !
50Mb : trop petit … un seul noyau remplira presque la partition !
Met 256 Mo, voire 1Go, et tu seras tranquille … longtemps …

Des deux, c’est trop léger !

Tu parles du fait de laisser /usr et /user/local dans / ? Pourquoi est-ce un mauvais choix ?

  • Primaire : oui, l’usage de partitions logiques ne se justifie qu’au delà de 4 partitions.
  • 50 Mo : tout juste suffisant pour GRUB et un noyau donc trop petit, d’autant que cette partition ne pourra pas être agrandie facilement si elle manque de place, contrairement aux volumes logiques. Autant prévoir large, minimum 500 Mo. Ce n’est pas ça qui va prendre de la place sur le disque.
  • Ext4 : pourquoi pas. Comme /boot n’est pas censé bouger beaucoup, on peut aussi utiliser ext2 qui n’est pas journalisé et plus simple.
  • drapeau d’amorçage : aucune importance pour GRUB qui va êre installé dans le MBR, mais certains BIOS buggés l’exigent pour booter sur un disque donc autant le mettre.

Ok pour la partition LVM, ensuite “Configurer le gestionnaire de volumes logiques (LVM)” comme je l’ai écrit dans mon message précédent.

PS : contrairement aux partitions /dev/sdXN on peut choisir les noms des groupes de volumes et des volumes logiques, donc autant définir des noms bien explicites.

Oui surtout si les applicatifs sont bien cochons (apache et mysql sont de bons gros consommateur de mémoire et il vaux toujours mieux pouvoir compter sur un peu de swap que de voir des process se killer, il est possible de configurer l’utilisation de la swap à partir de 20% de mémoire libre.
De souvenir il me semble que de base se doit être paramétré à 30%.

Et comme évoqué au dessus, si par malheur ça manque de mémoire adieu les process mysql, apache etc …

Dans le meilleur des mondes oui il n’y aurait pas besoin de SWAP, mais dans le meilleur des mondes le kernel panic et les out of memory n’existeraient pas :wink:

Pour le restant je pense que mon exemple était assez explicite et restera simple à l’utilisation pour la maintenance, mais fais comme bon te semble :wink:

1 J'aime

J’ai avancé un petit peu…

soit :

/boot          1 GB    (ext2 sur /dev/sda1) 
VolumeGroup (LVM sur /dev/sda2) 
lv_root       10 GB    / 
lv_swap        4 GB    swap
lv_usr        10 GB    /usr 
lv_var        10 GB    /var 
lv_mysql       1 GB    /var/lib/mysql 
lv_log         1 GB    /var/log 
lv_tmp         2 GB    /tmp 
lv_home       10 GB    /home 
lv_srv        67 GB    /srv

it’s good ???

ensuite… toutes les partitions en ext4 excepté /boot et swap ?

No good :confused:
Tou d’abord, on a déjà expliqué que pour un système de base, une racine avec 10GB est suffisante pour accueillir /, /usr et pour un serveur /home.
D’autre part, avec 10GB prévu pour /var on devrait être large, et donc pourquoi un /var/log séparé, et surtout si vous prévoyez un lv_mysql je suppose que c’est pour s’en servir, et donc 1GB me paraît vraiment mesquin.

Je n’ai pas fait l’addition, mais j’ai l’impression que vous avez dimensionné lv_srv au petit bonheur la chance, je vais y mettre tout le reste. C’est exactement ce qu’il ne faut pas faire.

Je recommande de réfléchir et donc de prévoir l’inattendu, c’est-à-dire de laisser un espace libre à la fin de votre VolumeGroup(*) pour pouvoir soit étendre un volume logique qui à l’usage se révélerait être à l’étroit, soit pour créer un nouveau lv, ou pour créer des instantanés (snapshots) pour une sauvegarde par exemple.

Ce n’est pas parce-que créer et gérer des volumes logiques est plus facile que gérer un système rigide de partitions de tailles fixes, qu’il faut se lâcher et créer a priori un grand nombre de lvs. Chaque lv est un périphérique bloc (un espace disque brut) qu’il faut formatter, et il est toujours plus facile d’agrandir un système de fichiers que de le rétrécir.

Si vous utilisez pour certains LVs un système de fichiers xfs du paquet xfsprogs, la commande qui permet d’agrandir le système de fichiers xfs_growfs s’applique sur le point de montage ce qui veut dire que l’opération s’effectue sur un FS monté.

Note
(*) vu les noms que vous avez utilisé, on ne va pas dire que l’imagination est au pouvoir. Si un jour, vous essayez l’installateur de CentOS, vous constaterez que si vous appelez votre machine snob il vous proposera de créer un groupe de volume pour tout le disque (modulo zones d’amorçage éventuelle) nommé snob_vg

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة

F. Petitjean
Ingénieur civil du Génie Maritime.

« Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. » (R. Devos)

bonjour,
merci pour vos conseils mais il ne faut pas oublier que je suis débutant et que j’apprend grâce à ce forum (que j’aprécie beaucoup par ailleurs). D’après tous les commentaires, je constate qu’il n’y a pas qu’une seule façon de faire. J’essaye donc de comprendre et de prendre le meilleur pour l’adapter à mes besoins en faisant au mieux sans aller dans l’excès. Je pense réfléchir suffisament pour mon niveau.

Concrêtement, vous préconiez de diminuer / ou de ne pas séparer /usr et /home ?

1GB pour MySQL est mesquin ??? Actuellement la totalité des 3 bases font 18Mo…

Concernant le nom que j’ai utilisé VolumeGroup : je ne cherche pas à avoir de l’imagination sur un truc que je ne maîtrise pas… Un jour peut être… Pour l’instant, je n’ai qu’une seule VG.

Pour le type de système de fichiers de mes partitions :
ext4 : pour /, /usr, /var, /var/lib/mysql, /srv ?
ext2 : pour /tmp et /var/log ?
xfs : pour quel partition ? xfs semble avoir de bonnes performances avec de nombreux petits fichiers.

NB : y a une erreur dans mon screenshot précédent avec ma partition de boot en ext2 indiqué avec / au lieu de /boot

Grâce à vous j’avance et je vous en remerci ! :grinning:

17 messages pour aider un débutant à mettre ne place un système Debian pour faire du Web c’est exagéré …

J’ai déjà fourni un schéma (sans doute pas parfait mais passe partout).
Je ne comprends toujours pas pourquoi un débutant voudrais absolument découper autrement son partitionnement.

Lorsque ‘tchup’ aura pris du galon au commande de son serveur il sera nettement plus a même de savoir quel partitionnement lui sera utile et pourra alors retailler facilement la partition /var et ainsi sortir les ‘répertoires’ de son choix.

Sortir /usr pour le mettre ne lecture seule ne devrais pas être un exemple à donner à un débutant sans explication.
Tout comme sortir /var/tmp et ainsi de suite.
Restons simple et pragmatique, des schémas de partitionnement il y en a des plâtrées mais faire un truc simple permet de plus facilement s’y retrouver :wink:

Actuellement sur un VPS fraîchement préparé pour du docker mon /boot est intégré dans LVM, il est taillé à 500Mo et j’utilise pour deux kernels seulement 36Mo.
Sachant qu’en moyenne je ne conserve que 3 noyau maximum j’ai tout de même un doute sur la nécessité de 500Mo, mais comme tu le précise c’est pas 250Mo qui ferons la différence.

Personnellement je fais sans et j’aurai tendance à préférer btfs afin de bénéficier des snapshots, mais vue que tu serait parti sur du LVM qui lui même peux gérer du snapshot alors s’est sans doute inutile.
L’ext4 procure tout de même sur du processus multithread de bien meilleur performance que l’xfs.

Attention si tu compte utilisé les snapshots de LVM documente toi (et conserver de la place sur ton ‘goupe de volume’ afin de permettre la création de ‘volume logique’ de sauvegarde (ou utilise un second disque).

1 J'aime

Bonjour,

l’installation de mon serveur web est terminée. Voici mon partitionnement :

/boot 1 GB (ext2 sur /dev/sda1)
VolumeGroup (LVM sur /dev/sda2)
lv_root 10 GB / ext4
lv_swap 4 GB swap swap
lv_var 10 GB /var ext4
lv_mysql 1 GB /var/lib/mysql ext4
lv_log 1 GB /var/log ext2
lv_tmp 2 GB /tmp ext2
lv_home 10 GB /home ext4
lv_srv 70 GB /srv ext4

avec quelques GB de libres dans mon VolumeGroup
après installation des paquets apache, mysql & co… :

root@debian:~# df -h

Sys. de fichiers                 Taille Utilisé Dispo Uti% Monté sur
/dev/dm-0                          9,1G    663M  8,0G   8% /
udev                                10M       0   10M   0% /dev
tmpfs                              792M    8,4M  784M   2% /run
tmpfs                              2,0G       0  2,0G   0% /dev/shm
tmpfs                              5,0M       0  5,0M   0% /run/lock
tmpfs                              2,0G       0  2,0G   0% /sys/fs/cgroup
/dev/sda1                          961M     33M  880M   4% /boot
/dev/mapper/VolumeGroup-lv_tmp     1,9G    2,8M  1,8G   1% /tmp
/dev/mapper/VolumeGroup-lv_home    9,1G     21M  8,6G   1% /home
/dev/mapper/VolumeGroup-lv_var     9,1G    228M  8,4G   3% /var
/dev/mapper/VolumeGroup-lv_mysql   922M     31M  828M   4% /var/lib/mysql
/dev/mapper/VolumeGroup-lv_log     938M     19M  871M   3% /var/log
/dev/mapper/VolumeGroup-lv_srv      65G     52M   61G   1% /srv

Voilà… maintenant y a plus cas maintenir ce système et voir dans le temps si mes choix ont été bons !
en tous cas merci à vous tous pour votre aide et votre temps :wink:

Bonjour.

Je viens de voir votre demande de support et j’aimerai avoir votre retour sur le partitionnement que vous avez choisi.

En effet, je suis débutant et j’aimerais installer une Debian pour me faire un serveur web (apache, plusieurs site, mysql…).

J’ai même créé un post pour demander de l’aide : Partitionnement pour nouvelle installation (débutant)

Est il difficile de partitionner avec LVM ? Je suis débutant et personne n’indique exactement ce qu’il faut mettre.

Avez vous trouvé utile de séparer le mysql ainsi que les logs ?

Merci pour votre retour.