EC2에 설치된 EBS에서 동일한 인스턴스에 설치된 다른 EFS로 약 1TB의 데이터를 이동하려고 합니다. 지난 2주 정도 동안 rsync를 사용하여 약 840GB의 데이터를 복사할 수 있었습니다. 이제 rsync를 실행하여 나머지 데이터를 복사하면 htop 출력에 D 상태로 계속 표시됩니다. Mail Piler를 사용하는 이메일 보관 서버입니다. 사용되는 rsync 명령은 다음과 같습니다.
nohup rsync -vaAP --progress /var/piler/store/* /var/efs/store | tee /root/txlog_20June.txt &
누군가 이것에 대해 밝히고 나를 도울 수 있습니까? 이를 수행하는 다른 방법이 있습니까? 아니면 이 작업을 수행하기 위해 rsync를 조정할 수 있습니까?
답변1
문제가 무엇인지 정확히 말하기는 어렵지만 시도해 볼 수 있는 몇 가지 아이디어는 다음과 같습니다.
D
상태가 절전 모드가 아니므 로 이는 I/O 작업으로 인해 발생할 가능성이 높습니다 rsync
. 어떤 이유로든 액세스할 수 없는 파일에 대한 I/O를 기다리고 있는 것 같습니다. EFS와 EBS는 모두 원격 파일 시스템입니다. NFS 공유에서도 비슷한 문제가 발생했습니다. 문제를 조사하려면 rsync
명령에서 시스템 호출 추적을 시작할 수 있습니다. 이것이 필요합니다 strace
(먼저 설치해야 할 수도 있습니다). 그런 다음 다음 명령을 시도해 보십시오.
strace -eopen -ostrace.log rsync ...
-eopen
open()
시스템 호출 만 추적됩니다.-ofile
출력을 이름이 지정된 파일에 기록합니다.file
이제 프로세스가 상태에서 중지될 때까지 기다립니다 D
. 프로세스가 차단되면 파일을 확인할 수 있습니다 strace.log
. 내용은 다음과 같을 수 있습니다.
$ tail -f strace.log
[...]
open("...", O_RDONLY|O_CLOEXEC) = 3
open("...", O_RDONLY)
open("/path/to/suspect_file", O_RDONLY)
로그의 마지막 항목(위 예)은 /path/to/suspect_file
중단되지 않은 절전 상태에 있는 파일입니다. rsync
이제 rsync에서 파일을 제외하거나 차단 이유를 확인하거나 수동으로 복사해 볼 수 있습니다.
참고: 많은 양의 파일을 복사하는 프로그램은 대부분의 시간을 쉬지 않고 잠자기 상태로 보냅니다. 이는 프로그램이 기본 파일 시스템을 기다리는 데 대부분의 시간을 소비한다는 것을 의미합니다(CPU 주기에 비해 매우 느림).