ext4 파티션의 느린 rm 성능

ext4 파티션의 느린 rm 성능

적당한 수의 파일을 제거하는 데는 매우 오랜 시간이 걸립니다. 예를 들어:

$ pv linux-3.0.16.tar.bz2 | tar xj
73.2MB 0:00:16 [4.55MB/s]
$ pv linux-3.0.16.tar.bz2 | tar xj
73.2MB 0:03:16 [ 382kB/s]

파티션은 ext4로 포맷되었으며, relatime으로 마운트되었습니다. error=remount-ro. 파일을 제거하는 동안 프로세서 사용률이 급증하지 않습니다. 무슨 일이 일어나고 있는지 아는 사람이 있습니까?

업데이트: 위 명령을 실행하거나 rm -rf루트로 실행하면 예상대로 수행됩니다... 업데이트: 알아냈어요. 상자의 시스템 관리자는 상자에 전체적으로 엄청나게 많은 감사 규칙을 설치했습니다. 이를 제거하면 문제가 해결됩니다.

답변1

파일을 바꾸거나 삭제하면 다음과 같이 간단하게 수행됩니다.

  1. 파일의 inode를 찾으십시오.
  2. 개별 파일의 권한, 사용자, 그룹을 확인하세요.
  3. 파일이 디렉터리인 경우 해당 디렉터리의 파일도 제거합니다(각 파일에 대해 1 - 4 반복).
  4. 파일과 해당 inode의 링크를 해제합니다.

새로운 inode를 추가하고 디스크에 파일을 쓰는 것보다 훨씬 어렵기 때문에 분명히 성능이 많이 저하될 것입니다. 이는 inode 테이블 목록이라는 부작용입니다. 대신 inode 트리라면 대신 전체 분기를 삭제할 수 있습니다. untar를 수행할 때 이것이 변경되지는 않지만 untar는 inode가 저장되는 방식에 관계없이 파일별로 수행되므로...

루트로 실행하면 2단계가 생략되며 이는 큰 차이가 있을 수도 있고 아닐 수도 있습니다.


ext3에 다시 마운트하고 실행 시간을 비교해 보셨나요?

익스텐트 사용으로 인해 ext4가 더 빨리 삭제되기 때문입니다. 속도가 더 느리면 이상할 것 같은데...

관련 정보