Lustre에서 작은 파일이 많은 디렉터리 삭제

Lustre에서 작은 파일이 많은 디렉터리 삭제

삭제하고 싶은 매우 작은 파일이 많이 포함된 디렉터리가 있는데 단순히 디렉터리를 삭제하는 rm -rf /path/to/the/dir데 며칠이 걸렸습니다.

이것이 느리다는 것이 이상하게 들리지만 디렉토리는 일반 파일 시스템의 디렉토리가 아닙니다. 클러스터의 Lustre 파일 시스템에 있는 디렉터리입니다.

rmLustre가 설치된 클러스터 노드 A에서 이 명령을 실행하고 있지만 Luster의 백엔드에는 노드 B와 노드 C에 하나씩 총 2개의 ZFS 파일 시스템이 있으므로 모든 네트워크 트래픽이 속도 저하의 원인이 될 수 있습니다 rm.

내 것보다 디렉토리를 삭제하는 더 빠른 방법을 아는 사람이 있나요?

답변1

다음과 같은 일부 GNU 명령Tar 및 rm은 Lustre에서 대용량 파일을 작업할 때 비효율적입니다.. 예를 들어, 수백만 개의 파일이 있는 경우 rm -rf *는 며칠이 걸릴 수 있으며 다른 사용자의 Lustre에 상당한 영향을 미칠 수 있습니다.
그 이유는 와일드카드 확장에 소요되는 시간 때문이다.

더 나은 접근 방식은 삭제하거나 압축하고 한 번에 하나 또는 작은 부분을 처리할 파일 목록을 생성하는 것입니다.

좋은 방법파일을 삭제하기 전에 확인하세요.다음과 같이:

$ lfs find <dir> -t f > rmlist.txt  
$ vi rmlist.txt  
$ sed -e 's:^:/bin/rm :' rmlist.txt > rmlist.sh  
$ sh rmlist.sh    

# the directory structure will remain, but unless there are many directories, we can simply delete it:  
$ rm -rf <dir>  

Lustre IO에 대한 유용한 참고 자료:
1.https://www.nics.tennessee.edu/computing-resources/file-systems/io-lustre-tips
2.https://www.rc.colorado.edu/support/examples-and-tutorials/parallel-io-on-janus-lustre.html

감사해요!

답변2

먼링크를 사용하세요:

find -P $dir -type f -o -type l -print0 | xargs -0 munlink

...그리고 빈 디렉터리를 제거합니다.

find -P $dir -depth -type d -empty -delete

더 많은 매개변수로 찾기 결과를 업데이트했습니다. 인용하다:https://support.pawsey.org.au/documentation/display/US/Deleting+Large+Numbers+of+Files+on+Lustre+Filesystems

답변3

지금까지 충분한 평판을 얻지 못했기 때문에 @Atisom의 솔루션에 대해 언급할 수 없으므로 여기에 새로운 답변이 있습니다.

Atisom 솔루션에 표시된 명령은 일치하거나 작동 find하지 않습니다 .find-type f-type l -print0

작동하게 하려면 대괄호를 추가하세요.

find -P $dir \( -type f -o -type l \) -print0 | xargs -0 munlink

관련 정보