LAN의 일부 컴퓨터에서 Rsyncs하는 로컬 서버가 있습니다. 이는 백업 솔루션의 일부입니다.
Rsync는 cronjob을 통해 하루에 두 번 실행됩니다. 때때로 사람들은 테라바이트 정도의 대용량 데이터를 추가합니다. 이 경우 두 번째 Rsync가 시작되기 전에 Rsync가 완료된다는 보장이 없습니다.
이 상황에서는 어떻게 되나요?
이것은 피해야 할 일입니까?
답변1
다른 cronjob이 완료되기 전에 하나의 cronjob이 시작되는 것이 걱정된다면 일반적으로 /tmp
이와 같은 임시 파일을 만들고 /tmp/lockFile_$$
첫 번째 cronjob의 마지막 단계에서 삭제한 다음 해당 파일이 루프 시작과 함께 두 번째 cronjob이 존재하도록 합니다. , 각 루프에서 5-10초 동안 대기하고 파일이 사라지면 루프를 중단합니다(몇 번 반복할 때마다 루트에 이메일을 보내 정지된 작업을 더 쉽게 확인할 수 있습니다).
첫 번째 병목 현상이 네트워크 대역폭인 경우 --compress
옵션과 함께 rsync를 사용해 볼 수 있습니다.--compress-level
차단 지점이 CPU인 경우 rsync 프로세스에 더 낮은 nice 값을 부여해 볼 수 있습니다.
iowait
때가 되면 Linux ionice
에서 cfq를 사용하거나 rsync 명령을 여러 동시 프로세스로 분할하여 순차적으로 수행하는 대신 한 프로세스가 I/O를 기다리는 동안 다른 프로세스가 전송을 수행하는 것을 고려할 수 있습니다. 대부분의 플랫폼에서는 I/O 기능을 조정할 수도 있습니다. Linux에서는 첫 번째 cronjob 중에 일시적으로 deadline
스케줄러로 전환하고(쓰기보다 읽기 우선순위를 지정하기 위해) read_ahead_kb
디스크에서 전체 대용량 파일을 가져오기 때문에 일시적으로 스케줄러를 늘리는 것을 고려할 수 있습니다 .