Linux에서 파일을 삭제할 때 실제로는 삭제되지 않고 inode 테이블에 있는 파일에 대한 링크만 삭제된다는 stackoveflow 기사를 읽었습니다. 그렇다면 삭제가 일정한 시간 작업이 아닌 이유는 무엇입니까?
나는 또한 실험을 시도했습니다. 1500개의 이미지가 포함된 폴더를 만들고 이러한 이미지의 tar 개체를 만들었습니다. 디렉터리와 tar 파일의 크기는 동일합니다. tar 객체와 1500 그림 디렉터리를 삭제하는 순서는 다음과 같습니다.
tar 파일을 삭제하십시오 time rm test.tar
.
real 0m0.024s
user 0m0.001s
sys 0m0.024s
디렉토리 삭제:time rm -r test
real 0m0.219s
user 0m0.024s
sys 0m0.191s
제가 이해한 바로는 이 시간 차이는
파일 1개 연결 해제와 파일 1,500개 연결 해제로 인한 것입니다. 하지만 tar 객체 삭제가 1500배 빨라야 하지 않나요?
답변1
이 때문에아니요간단한 "삭제된 단일 inode 표시" 작업:https://www.slashroot.in/how-does-file-deletion-work-linux
범위 사용으로 인해 적어도 ext4 파일 삭제는 ext2/ext3 파티션보다 훨씬 빠릅니다.
SSD의 경우 SSD의 수명을 연장하기 위해 파일에 속한 모든 블록을 물리적으로 삭제하도록 SSD에 지시하는 "Discard" 옵션을 사용하기 때문에 파일 삭제가 필요한 것보다 느려질 수 있습니다. 이것은 높이입니다아니요비활성화하는 것이 좋습니다.