나는 "open" 시스템 호출과 관련될 수도 있고 아닐 수도 있는 "mv" 명령의 매우 이상한 동작을 발견했습니다. 우리는 RedHat v5를 실행하고 있습니다. 두 개의 별도 저장 장치가 있습니다. 하나는 "/diskTo"에 마운트되고 다른 하나는 "/diskFrom"에 마운트됩니다(이 예에서는).
정상적인 작업에서는 수천 개가 아니더라도 수백 개의 파일을 /diskFrom에서 /diskTo로 이동(이동)합니다. 대부분의 파일은 잘 이동됩니다. 그러나 1000개의 파일 중 1~5개가 실패합니다. 실패는 권한 거부 오류입니다. 파일 대상을 확인하면 파일존재하다, 그러나 inode 내용은 쓰레기입니다. 예를 들어 타임스탬프는 가비지("1969"이지만 다름)이고 권한은 "0"입니다.
따라서 mv 명령에 strace를 실행하고 실패한 출력을 캡처해야 한다고 생각합니다. 이것이 내가 찾은 것입니다:
munmap(0x2b0328770000, 4096) = 0
geteuid() = 31169
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff90de9500) = -1 ENOTTY (Inappropriate ioctl for device)
stat("/diskTo/foo.dat", 0x7fff90de95d0) = -1 ENOENT (No such file or directory)
lstat("/diskFrom/bar.dat", {st_mode=S_IFREG|0444, st_size=234632119, ...}) = 0
lstat("/diskTo/foo.dat", 0x7fff90de9370) = -1 ENOENT (No such file or directory)
rename("/diskFrom/bar.dat", "/diskTo/foo.dat") = -1 EXDEV (Invalid cross-device link)
unlink("/diskTo/foo.dat") = -1 ENOENT (No such file or directory)
open("/diskFrom/bar.dat", O_RDONLY|O_NOFOLLOW) = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=234632119, ...}) = 0
open("/diskTo/foo.dat", O_WRONLY|O_CREAT|O_EXCL, 0400) = -1 EEXIST (File exists)
write(2, "mv: ", 4) = 4
write(2, "cannot create regular file `/diskTo"..., 76) = 76
write(2, ": File exists", 13) = 13
write(2, "\n", 1) = 1
보시다시피,풀리다호출되면 -1을 반환하며 이는 파일이 존재하지 않음을 나타냅니다. 그런 다음 "mv"가 시도합니다.열려 있는파일을 제출하고 EEXIST 오류가 발생합니다. 하지만 파일이 존재할 수 없습니다! 여기서는 보여주지 않겠지만 이 테스트 사례를 생성하는 스크립트는 고유 번호를 사용하여 디렉터리를 구축하므로 파일이 실제로 존재할 가능성은 거의 없습니다(불가능하지는 않더라도). 언급 할 필요없는,풀리다파일이 존재하지 않음을 증명합니다.
어떻게 해결하느냐의 문제일 수도 있습니다열려 있는inode 콘텐츠를 생성 중이신가요? 지금은 어디를 봐야할지 모르겠습니다. "mv"를 더 살펴보거나 "open" 시스템 호출을 살펴볼까요?
답변1
disk 에서 전체 파일을 실행하면 fsck(8)
약간의 inode가 떠다니는 것처럼 보입니다(또는 동적으로 생성되었을 수도 있습니다). 실행하여 badblocks(8)
디스크에 문제가 있는지 확인합니다. 지침은 로그(또는 기타 디스크 진단)를 확인하세요.
모든 소프트웨어가 최신입니까?
이것은 어떤 파일 시스템입니까? 방해가 될 수 있는 다른 활동이 있나요 diskTo
? 디스크가 거의 꽉 찼습니까(공간, inode)? 로그에 다른 보고서가 있나요?
또한 기계를 철저히 확인하십시오. 메모리 오류가능한비슷한 상황이 발생하면 과열로 이어질 수도 있습니다. 이것은 가능성이 낮은 원인이지만 분해하여 팬을 확인하는 것은 문제가 되지 않으므로 잘 작동하고 있으며 중간 규모 농장에 내부에 흙이 충분하지 않습니다. 기계가 UPS 또는 유사한 장치에 연결되어 있지 않으면 전압 변동으로 인해 무작위 오류가 발생할 수도 있습니다.