내부 파일이 아닌 디렉토리 자체가 거대한 디렉토리

내부 파일이 아닌 디렉토리 자체가 거대한 디렉토리

지난 15시간 동안 Centos 서버에서 디렉토리를 삭제하려고 시도했는데 rm -Rf /root/FFDC큰 어려움을 겪고 있습니다. 시스템이 정지되기 때문에 디렉토리 목록을 작성할 수 없지만(파일이 너무 많습니까?) 디렉토리 크기가 일반적인 4096바이트가 아니라 488MB라는 것을 알 수 있습니다!

[root@IS-11034 ~]# ls -al
total 11760008
drwxr-x--- 31 root root        4096 Aug 10 18:28 .
drwxr-xr-x 25 root root        4096 Aug 10 16:50 ..
drwxr-xr-x  2 root root   488701952 Aug 11 12:20 FFDC

inode를 확인했는데 모든 것이 괜찮아 보입니다. 상단을 확인했는데 rm15시간 후에도 여전히 CPU를 0.7%로 사용하고 있습니다. 파일 시스템 유형은 ext3입니다.

이제 백업과 포맷 외에 어디로 가야할지 모르겠습니다.

답변1

심지어 ls -1f /root/FFDC느린가요? -1f를 사용하면 출력이 정렬되지 않고 파일 세부 정보가 생략됩니다.

위의 ls가 빠르게 실행된다면 아마도 다음과 같은 것이 find /root/FFDC | xargs rm -vf더 빠를 것입니까? 노멀은 MIGHT가 건너뛸 수 rm -rf있는 모든 종류의 재귀를 수행할 수 있습니다 . find아니면 그렇지 않습니다.

파일 시스템이 다음과 같이 마운트되어 있습니까?동조옵션? 그렇다면 쓰기/삭제 성능은 이전보다 훨씬 느립니다.비동기. 의심스러운 경우 시도해 볼 수 있습니다 mount -o remount,async /(또는 mount -o remount,async /root별도의 파일 시스템인 경우).

답변2

파일 시스템을 마운트 해제한 다음 e2fsck를 실행하여 파일 시스템에 오류가 있는지 확인해 보셨나요? 백업, 포맷, 복원 전에 이것을 시도해 보겠습니다.

답변3

파일 시스템에서 fsck를 실행하면 문제가 해결됩니다. 일반적으로 디렉토리에 많은 파일이 포함되어 있었지만 이제는 더 이상 포함되지 않을 때 발생합니다. 디렉토리 크기가 엄청나게 주어지며 성능이 저하됩니다.

답변4

fsck(8)디렉토리를 재구성할지 잘 모르겠습니다 . -D플래그를 사용해 볼 수도 있습니다(에 설명된 대로 e2fsck(8)). 그렇지 않고 실제로 해당 디렉터리에 수백만 개의 파일이 없다면 아마도 다음과 같은 내용이 적당한 크기의 디렉터리를 제공할 것입니다.

cd /root mv FFDC FFCD-old mkdir FFCD # FFDC에 대한 권한 조정 mv FFDC-old/* FFDC # FFDC-old rmdir FFCD-old의 모든 .xxx 파일/디렉터리 확인/이동

적어도 여러 bash 버전은 .a[^.]*잘못된 것과 같은 glob을 얻고 포함하고 .어쨌든 ..그렇지 않으면 마지막 단계에서 다음 단계를 시도할 수 있습니다.mv FFDC-old/.* FFDC

ext3/ext4와 같은 파일 시스템은 기본적으로 파일 이름 + inode 번호에 대한 공간이 있는 이동할 수 없는 노드의 연결된 목록으로 디렉터리를 처리합니다. 파일이 연결 해제되면 이름에 대한 공간이 해제됩니다(해당되는 경우 사용 가능한 이웃 항목과 통합되어야 합니다). 그래서 파일이 거의 없는 거대한 디렉토리입니다.~할 수 있다만들어지지만 쉽지 않습니다. 아마도 동일한 몇 개의 파일에 대해 수백만 개의 하드 링크를 생성할 수 있을까요? 신중하게 조작된 이름으로 수백만 개의 링크를 생성/삭제하시나요? 이를 생성하기 위해 무슨 일이 일어났든 조사할 가치가 있습니다. 장난인가요, 일종의 파일 시스템 오작동인가요...?

관련 정보