프로세스에서 사용하는 대역폭을 어떻게 제한 할 수 있습니까? 수 있습니다.) 일부 배경 아마도 어떤 배경이 순서대로있을 것입니다.

매일 밤 파일을 백업 할 CentOS 5.7 서버가 있습니다. 백업이 네트워크를 통해 전송되는 동안 서버가 호스팅하는 다양한 사이트를 방문하는 사람은 성능이 저하 될 것으로 우려됩니다.

프로세스의 최대 허용 처리량을 네트워크 인터페이스로 제한 할 수 있습니까? SSH 기반 파일 전송을 사용 가능한 대역폭의 절반으로 제한하고 싶습니다. 서버 또는 클라이언트쪽에있을 수 있습니다. 즉, 연결을 시작하는 클라이언트 또는 연결을 수신하는 서버 에서이 작업을 수행하게되어 기쁩니다.

(불행히도 백업 전용 인터페이스를 추가 할 수 없습니다. 사용 가능한 처리량을 늘릴 수는 있지만 네트워크 전송이 더 빨리 완료되지만 연결하는 동안 연결의 총 용량을 최대로 늘릴 수 있습니다.)


일부 배경

아마도 어떤 배경이 순서대로있을 것입니다. 물러서서 백업 자체를 생성하기에 충분한 로컬 공간이 부족하다는 문제가있었습니다. SSHFS를 입력하십시오! 백업은 웹 서버 자체에 백업 비트가 전혀 없도록 로컬 드라이브에 저장됩니다.

왜 중요한가요? 그것은 유서 깊은 사용을 무효화하는 것처럼 보이기 때문입니다 rsync --bwlimit. rsync실제로 전송을하고도되지 수 있습니다 심지어 백업 파일을 저장할 공간을 절약 할 수 없기 때문에 그것을.

“잠깐, 왜 백업 파일을 만들어야합니까? rsync소스 파일과 폴더 만이 아닌 이유는 무엇 입니까?” “Plesk”라는 성가신 것이 혼합되어 있기 때문에! 이것은 편의상 Plesk를 사용하는 클라이언트 쪽 웹 호스트입니다. 따라서 Plesk는 백업에 모든 종류의 추가 마법을 추가하여 복원 절차 중에 백업을 사용하는 것이 매우 안전하기 때문에 Plesk를 사용하여 백업을 시작합니다.

슬픈 얼굴



답변

iptables패킷을 표시하는 데 사용 (–pid-owner …) 한 다음 tc, 트래픽을 형성하는 데 사용할 수 있습니다. 또한 “–sid-owner”를 사용하여 해당 프로세스의 스레드와 자식을 포함 할 수 있습니다.

http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#OWNERMATCH

매치 소유자 –pid
커널 2.3, 2.4, 2.5 및 2.6
-A 출력 -m 소유자가 –pid 소유자에게 78 iptables는
설명 이 일치하는 프로세스 ID 그들에 대한 책임 (PID)를 기반으로 패킷을 일치시키는 데 사용된다. 이 일치는 사용하기가 다소 어렵지만 한 가지 예는 PID 94가 HTTP 포트에서 패킷을 보내도록 허용하는 것입니다 (HTTP 프로세스가 스레드되지 않은 경우). 또는 특정 데몬에 대한 ps 출력에서 ​​PID를 가져온 다음 규칙을 추가하는 작은 스크립트를 작성할 수 있습니다. 예를 들어 Pid-owner.txt 예에 표시된 규칙을 사용할 수 있습니다.


답변

방금 발견 한 한 가지 옵션은 물방울 을 사용하는 것 입니다.

물방울은 휴대용 경량 사용자 공간 대역폭 셰이퍼입니다. 협업 모드 (트릭과 함께) 또는 독립 모드로 실행될 수 있습니다.

물방울은 유닉스 로더 사전 로딩을 이용하여 작동합니다. 기본적으로 소켓을 통해 데이터를 보내고받는 데 필요한 새로운 버전의 기능을 응용 프로그램에 제공합니다. 그런 다음 소켓을 통한 데이터의 전송 및 수신 지연에 따라 트래픽을 제한합니다. 물방울은 전적으로 사용자 공간에서 실행되며 루트 권한이 필요하지 않습니다.


답변

파이프 (또는 stdout)에 쓸 수 있으면 pv(pipe viewer) 명령을 설치할 수 있습니다 . 원래 파이프를 통해 전송 된 데이터의 진행률을 표시하기 위해 작성되었습니다.

tar cvf - /files/to/backup | pv -L 512k > /your/file/on/sshfs

   -L RATE, --rate-limit RATE
          Limit the transfer to a maximum of RATE  bytes  per  second.   A
          suffix of "k", "m", "g", or "t" can be added to denote kilobytes
          (*1024), megabytes, and so on.

답변

같은 이유로 –bwlimit = KBPS 옵션과 함께 rsync를 사용합니다.

당사의 1Gbit 이더넷은 기존 SCSI320 DAS RAID를 쉽게 습득 할 수 있으며 기본적으로 DOS는 NFS 저장소에 의존하는 일부 구형 프로덕션 박스입니다.


답변

데이터를 어떻게 전송합니까? (ssh를 통한 동기화? scp? sftp? 다른 것?)

rsync를 사용하면 대역폭을 제한 할 수 있습니다 (–bwlimit = KBPS 옵션 참조). rsync -e ssh –bwlimit ..

또는 멋진 속도 제한을 수행하기 위해 qdisc 또는 이와 동등한 것을 설정할 수 있지만 귀하의 경우 이것이 심각한 과잉 일 것입니다. 이에 대한 문서는 Linux Advanced Routing and Traffic Control HOWTO에 있습니다.