J'ai un serveur CentOS 5.7 qui sauvegardera ses fichiers tous les soirs. Je crains que les visiteurs des différents sites hébergés par le serveur ne subissent une dégradation des performances pendant le transfert de la sauvegarde sur le réseau.
Est-il possible de limiter le débit maximal autorisé d'un processus vers une interface réseau ? Je souhaite limiter le transfert de fichiers basé sur SSH à seulement la moitié de ma bande passante disponible. Cela peut être du côté serveur ou client ; c'est-à-dire que je serais heureux de le faire soit sur le client qui initie la connexion, soit sur le serveur qui reçoit la connexion.
(Malheureusement, je ne peux pas ajouter d'interface dédiée aux sauvegardes. Je pourrais augmenter mon débit disponible, mais cela signifierait simplement que le transfert réseau se terminerait plus rapidement, tout en maximisant la capacité totale de la connexion tout en le faisant .)
Un peu de contexte
Peut-être qu'un peu de contexte s'impose. En prenant du recul, j'ai eu un problème de ne pas avoir assez d'espace local pour créer la sauvegarde elle-même. Entrez SSHFS ! La sauvegarde est enregistrée sur ce qui est apparemment un lecteur local afin qu'aucun bit de sauvegarde ne se trouve jamais sur le serveur Web lui-même.
Pourquoi est-ce important ? Car cela semblerait invalider l'utilisation du vénérable rsync --bwlimit
. rsync
n'effectue pas réellement le transfert et ne peut pas parce que je ne peux même pas économiser de l'espace pour enregistrer le fichier de sauvegarde.
Je peux vous entendre demander :"Alors, attendez, pourquoi avez-vous même besoin de créer un fichier de sauvegarde ? Pourquoi ne pas simplement rsync
les fichiers et dossiers sources ? » Parce qu'une chose ennuyeuse appelée "Plesk" est dans le mélange ! Il s'agit de mon hébergeur client qui utilise Plesk pour plus de commodité. En tant que tel, j'utilise Plesk pour lancer les sauvegardes car Plesk ajoute toutes sortes de magie supplémentaire à la sauvegarde qui rend sa consommation lors d'une procédure de restauration très sûre.
visage triste
Réponse acceptée :
Vous pouvez utiliser iptables
pour marquer un paquet (–pid-owner …), puis utilisez tc
pour façonner le trafic.
"-sid-owner" peut également être utilisé pour inclure les threads et les enfants de ce processus.
http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#OWNERMATCH
Correspondance –pid-owner
Noyau 2.3, 2.4, 2.5 et 2.6
Exemple iptables -A OUTPUT -m owner –pid-owner 78
Explication Cette correspondance est utilisée pour faire correspondre les paquets en fonction de l'ID de processus (PID) qui en était responsable. Cette correspondance est un peu plus difficile à utiliser, mais un exemple serait de permettre uniquement au PID 94 d'envoyer des paquets depuis le port HTTP (si le processus HTTP n'est pas fileté, bien sûr). Alternativement, nous pourrions écrire un petit script qui récupère le PID d'une sortie ps pour un démon spécifique, puis ajoute une règle pour celui-ci. Par exemple, vous pourriez avoir une règle comme indiqué dans l'exemple Pid-owner.txt