Ho un server CentOS 5.7 che eseguirà il backup dei suoi file ogni notte. Temo che i visitatori dei vari siti ospitati dal server subiscano prestazioni ridotte durante il trasferimento del backup attraverso la rete.
È possibile limitare il throughput massimo consentito di un processo a un'interfaccia di rete? Vorrei limitare il trasferimento di file basato su SSH solo a metà della mia larghezza di banda disponibile. Questo potrebbe essere sul lato server o client; cioè, sarei felice di farlo sul client che avvia la connessione o sul server che riceve la connessione.
(Purtroppo non posso aggiungere un'interfaccia da dedicare ai backup. Potrei aumentare il mio throughput disponibile, ma ciò significherebbe semplicemente che il trasferimento di rete verrebbe completato più velocemente, ma massimizzerebbe comunque la capacità totale della connessione mentre lo faccio .)
Un po' di background
Forse qualche sfondo è in ordine. Facendo un passo indietro, ho avuto un problema con la mancanza di spazio locale sufficiente per creare il backup stesso. Entra in SSHFS! Il backup viene salvato su quella che apparentemente è un'unità locale in modo che nessun bit di backup sia mai sul server web stesso.
Perché è importante? Perché ciò sembrerebbe invalidare l'uso del venerabile rsync --bwlimit
. rsync
non sta effettivamente effettuando il trasferimento né può perché non posso nemmeno risparmiare lo spazio per salvare il file di backup.
Posso sentirti chiedere:"Allora aspetta, perché hai anche bisogno di creare un file di backup? Perché non solo rsync
i file e le cartelle di origine?" Perché una cosa fastidiosa chiamata "Plesk" è nel mix! Questo è il mio host web rivolto al client che utilizza Plesk per comodità. Pertanto, utilizzo Plesk per avviare i backup perché Plesk aggiunge ogni sorta di magia extra al backup che rende molto sicuro il suo consumo durante una procedura di ripristino.
faccina triste
Risposta accettata:
Puoi usare iptables
per contrassegnare un pacchetto (–pid-owner …), quindi utilizzare tc
per modellare il traffico.
Anche "–sid-owner" può essere utilizzato per includere thread e figli di quel processo.
http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#OWNERMATCH
Partita –pid-proprietario
Kernel 2.3, 2.4, 2.5 e 2.6
Esempio iptables -A OUTPUT -m proprietario –pid-proprietario 78
Spiegazione Questa corrispondenza viene utilizzata per abbinare i pacchetti in base al Process ID (PID) che ne era responsabile. Questa corrispondenza è un po' più difficile da usare, ma un esempio potrebbe essere solo quello di consentire al PID 94 di inviare pacchetti dalla porta HTTP (se il processo HTTP non è in thread, ovviamente). In alternativa potremmo scrivere un piccolo script che acquisisca il PID da un output ps per un demone specifico e quindi aggiunga una regola per esso. Ad esempio, potresti avere una regola come mostrato nell'esempio Pid-owner.txt