Debian Linux : Partitionnement et système de fichier en Web Hosting

Trop bizarre

Par l’interjection trop bizarre Damien attire mon attention sur un aspect souvent oublier de la performance d’une architecture d’hébergement en web hosting: le file system.

twitt.pobel.png

En effet l’installation d’une distribution Linux propose quelque schemas de partitionnement par défaut qui correspond à de grande typologie d’utilisation. L’outil d’installation propose impose également un système de fichier par défaut, en général celui de dernière génération.

Mais dans les architectures de web hosting tout les serveurs ne remplisse pas la même mission (MySQL, Frontal Web, Backoffice, Revers Proxy, etc.) et cette spécialisation est gage de performance. Alors pourquoi la fondation que représente le disque serait uniforme et non pas spécialisé ?

Partitionnement

Le néologisme partitionnement désigne la logique de découpage et d’organisation d’un disque physique en sous secteur spécialisé et / ou dédier. Quel sont les questions, postula et principe de sécurité à prendre en compte ?

  • N’utilise pas le Partitionnement par défaut, c’est un paliatif uniquement
  • Ne fait jamais une partition unique / pour l’intégralité du serveur
  • Une partition distincte préviens le blocage du serveur en cas de saturation de l’espace disque. C’est une sécurité à prendre systématiquement pour éviter le blocage serveur par saturation de l’espace.
  • Un Debian à minima prend 300Mo. Réserve l’espace aux partition de données comme /var ou /home.
  • Garde toujours un espace disque non formaté afin de pouvoir déplacer des partitions et retailler ton disque à la volé.

Exemple.de.partitionnement.png

Personnellement je prend les dispositions suivante

  • /var/log est toujours une partition distincte pour éviter la saturation du disque par oublie d’un mode debug ou une attaque DDOS
  • /tmp est toujours une partition distincte de petite taille, surtout sur les serveurs MySQL (table temporaire). Pour un monitoring de l’utilisation faite de cet espace.
  • Je ne configure très peu de swap et surtout par en proportion. Je considère que swapper c’est être perdant. Le swap est présent juste pour m’alerté quant un serveur l’utilise.
  • Je mélange pas les data avec le binaire, donc /var d’un coter et /usr /bin, /sbin de l’autre.

Système de fichier

Le système de fichier proposé par défaut est en général ext3 ou au moins un système de fichier journalisé. Mais d’autre système de fichier existe ! Quelques réflexions sur le système de fichier optimum.

  • Avez vous besoin d’un système de fichier journalisé qui puisse résisté un crach ou un hard reboot pour la partion ?
  • Avez vous besoin d’un système de fichier avec snapshot pour plus facilement manipulé vos données ?
  • Faite votre propre Benchmark en fonction de l’utilisation spécifique faite du disque par votre serveur, consulté les études de debian-administration.org ou de linuxgazette.net pour vous faire un idée.

ext2.exemple.fstab.png

Personnellement je prend les dispositions suivante

  • J’utilise ext2 dès que possible pour limité les I/O. Dans cette copie écran j’ai directement configuré /etc/fstab pour utilisé ext2 au montage sur une partiton déjà existante en ext3 ceci sans reformaté (parfaitement possible)
  • kathryl abuse d’XFS c’est aussi une solution performante, surtout sur les gros fichiers selon mon expérience.

Montage

L’optimisation du montage des partitions par la commande mount et le fichier de configuration /etc/fstab est source de performance. La encore quelque règle de base.

  • Lire et relire man fstab
  • Lire et relire man mount
  • Choisir les options de montage adéquates pour l’utilisation faite de la partition.

noatime.exemple.png

Personnellement je prend les dispositions suivante

  • Je remplace l’option de montage default par rw,suid,dev,exec,auto,nouser,async
  • J’ajoute noatime et nodiratime pour ne pas enregistrer le time stamp d’accès sur chaque inode. Je gagne un peu en I/O comme cela.
  • Rendre /tmp non exécutable est aussi une bonne idée. Question sécurité c’est tip top je pense.

Performance

Le disque est le sous système de l’ordinateur le plus lent. Chaque fois que vous utilisez le disque dur vous perdez des points dans la course à la rapidité. Apprenez à maitriser les performances matériel.

  • Sas, S-ATA, SSD c’est pas la même chose, connaissez votre matériel
  • Grappe de disque RAID ? RAID 0 et RAID 5 offre le meilleur performance et répartissant les opérations sur plusieurs mécanique en parallèle .

Personnellement je prend les dispositions suivante

  • Je place si possible le système et les données sur des disques distinct. Souvent c’est le système en local et les données sur le SAN / NAS
  • Si je me paye un SSD j’éviterais d’être abruti au point de négliger le choix du file system et des options de montage
  • Avec deux disques pour les données c’est Raid0 pour les performance. Mais pas question d’être négligeant sur les sauvegardes.
  • Avec plus de deux disques c’est Raid5 sans réfléchir.

12 réflexions sur “ Debian Linux : Partitionnement et système de fichier en Web Hosting ”

  1. 300 Go pour /home – tu mets quoi dedans ? Ton applicatif ?

    Pour le moment, j’essaye d’éviter de dénaturer /home/ et préfère faire des partitiions /var/<qqc>

  2. Oui Nicolas, parfois je place l’application dans /home via un lien symbolique (sur /var/lib/mysql ou /var/www/PROJET). en général dans ce cas /home n’est pas utilisé par des utilisateur.

    Si j’ai des utilisateurs avec accès ssh, sftp, ftp sur le serveur de créé des partitions distinte dans /var/www pour chaque site / projet web.

  3. Hello,

    Pour xfs, à partir de quelle taille peut-on considérer qu’un fichier est « gros » ou non ?

    Vraiment bien ce blog ;-))

  4. Bonjour prentonmantoonsenva

    Tu vois un DivX, environs 600Mo, voila voila. Mais bon je suis pas l’expert XFS. Demande à Kathryl.

  5. Bonsoir,
    Vous parlez du RAID 5 « sans réfléchir » dès que vous avez plus de 2 disques.

    Quid du RAID10 ? Avec une bonne carte raid hardware, les perfs sont excellentes non ?

  6. Bonjour JB, le Raid10 c’est très bien mais faut 4 disques pour commencer. Le Raid 5 tu commence à 3 disques. Tu ne peux ajouter qu’un chiffre paire de disque je crois au Raid10 alors que tu peux ajouter disque par disque a une grappe Raid5. Au vue de la taille des boitiers de serveur le Raid5 est optimum d’un point de vue Nb de disque / volume utile / sécurité / performance

    Mais si je disposais d’une baie de disque, avec une chier de disque, le Raid0 serait une option que j’étudierais. Mais bon la c’est du luxe 🙂

  7. Raid 5 très bien mais attention à quelques trucs :

    – les temps de restoration, avec des performances souvent dégradées pendant ce temps là (on m’a même conseillé de faire ça totalement dans le bios du contrôleur et non pas en ayant booté l’os c’est pour dire).

    – le fait qu’en cas de gros pépin (le raid « saute » pour cause de contrôleur qui déconne, déjà vécu) on perd tout. En raid 1 ou 10 on a tendance à s’en sortir et à récupérer les données en reconnectant le disque tout seul sur n’importe quel contrôleur/serveur.

    Donc pour moi (d’expérience en tout cas) le raid 5 est un compromis du point de vue sécurité (mieux que rien) mais je trouve ça plus fragile que du raid 1 ou 10.

    Nota : la baie de disques de mes serveurs web est en raid 5, je ne suis donc pas « anti »

  8. Replaçons la chose dans son contexte ratatouille, je parle ici de web hosting. Si j’avais une architecture financière type SAP avec de l’Oracle et tout et tout je m’attacherais peut être aux aspects que tu cite.

    • Pour la restoration on sort le frontal web de prod si d’autre peuvent assumer la tache. Tout comme on bascule sur le serveur MysqL esclave.
    • En générale les data d’une application web sont dans la base. Base répliqué et sauvegarder. Un frontal web cela ce réinstalle plus vite que cela ce restaure. Tu re dépose ton application depuis ton svn par exemple, tu régénère tes caches et zou.

    Je voudrais mettre en garde contre l’abus de sécuritaire qu’impose parfois indirectement les DSI. Le champs lexical de la sécurité en informatique n’est pas du domaine du jargon technique, il est en grand partie parfaitement compris par les non expert. J’ai eu tendance afin d’obtenir l’assentiment, faire adhérer les décideurs à mon travail ou simplement pour démontré mon utilité d’abuser de protection, sécurité, redondance, backup etc.. au détriment de la performance. Sachez dire non a la sur sécurité inutile, handicapante et contre performante.

  9. Oh, encore un post excellent ! Merci !

    Quelques questions :
    « Avez vous besoin d’un système de fichier avec snapshot pour plus facilement manipulé vos données ? » : tu conseilles quoi comme système avec snapshot ? ZFS sous Linux, c’est OK ? Ou il y a mieux/plus performant/…

    Et pour le raid, il vaut mieux du hardware ou du software ? Ce qui me fait flipper avec le raid hardware, c’est que le contrôleur ne fonctionne plus et qu’il faille en retrouver un pareil (donc avoir du stock).

    « Mais si je disposais d’une baie de disque, avec une chier de disque, le Raid0 serait une option que j’étudierais. Mais bon la c’est du luxe 🙂 » : Montes-toi un backblaze : http://blog.backblaze.com/2009/09/0… 😉

  10. Au fait, ton lien vers debian-administration.org n’est pas bon… il emmène vers l’admin de ton blog 🙂

  11. Karles, c’est toi qui dit « Mais dans les architectures de web hosting tout les serveurs ne remplisse pas la même mission (MySQL, Frontal Web, Backoffice, Revers Proxy, etc.) « 
    D’où ma remarque, qui en effet se veut assez large et non pas juste appliquée à des frontaux web.

    Je suis totalement d’accord sur le fait de ne pas sursécuriser, mais il ne faut jamais perdre de vue l’ensemble d’une prestation : qualité du service fourni, performance, process complet en cas de problème…

    Si j’ai une merde grave sur ma baie de disques qui contient mes appli web (pas les disques des frontaux, mais les disques avec tous les fichiers partagés entre les frontaux, un genre de NAS quoi) et qu’il me faut 12 heures offline pour les restaurer, même si la sécurité de mes données est garantie, celle de mon boulot l’est beaucoup moins 🙂

Laisser un commentaire