Operation System/Unix & Linux
리눅스 100만개(개당170바이트) 파일 삭제 (rm or find) 성능 비교
junsuyoun
2023. 8. 7. 14:47
728x90
반응형
- 리눅스에서 생각 보다 작은 디렉토리를 지우려고 하는데 속도가 상당히 느린 경우가 있습니다.
- 그러한 경우 rm -rf <디렉토리> 수행 시 상당한 시간이 발생하는데요.
- 리눅스에서는 파일 관리를 위해 i-node 개념을 사용합니다.
- 파일 개당 i-node를 가지고 있으며 파일이 삭제되는 경우 해당 i-node를 해제해주어야 합니다.
- 이러한 이유로 속도 저하에 대해서 rm -rf와 find -delete 속도를 비교해보겠습니다.
environ
#!/bin/bash
# 파일 크기 (바이트 단위)
file_size=170
# 파일 개수
file_count=1000000
# 작업할 디렉토리 경로
find_remove_dir="./find_remove"
rm_remove_dir="./rm_remove"
# 디렉토리 생성
mkdir -p "$find_remove_dir"
mkdir -p "$rm_remove_dir"
# 파일 생성 함수
create_files() {
local dir="$1"
local count=$2
for ((i=1; i<=count; i++)); do
dd if=/dev/urandom of="$dir/file$i" bs=$file_size count=1 status=none
done
}
# find_remove 디렉토리에 파일 생성
echo "Creating files in find_remove directory..."
create_files "$find_remove_dir" $file_count
echo "Files created in find_remove directory."
# rm_remove 디렉토리에 파일 생성
echo "Creating files in rm_remove directory..."
create_files "$rm_remove_dir" $file_count
echo "Files created in rm_remove directory."
- 170바이트 크기 파일을 100만개 생성하는 스크립트입니다.
- 테스트는 rm과 find 두 가지로 각각 삭제했을 때 속도를 체크를 목표로 합니다.
[root@tibero file_test]$ ls -rlthi
total 58M
14418568 -rw-r--r-- 1 root root 825 Aug 4 09:08 GenFile.sh
14418564 drwxr-xr-x 2 root root 29M Aug 4 09:34 find_remove
14418565 drwxr-xr-x 2 root root 29M Aug 4 10:00 rm_remove
[root@tibero file_test]$ du -skh *
4.0K GenFile.sh
3.9G find_remove
3.9G rm_remove
time rm -rf $remove_path
[root@tibero file_test]$ time rm -rf rm_remove/
real 0m13.680s
user 0m1.009s
sys 0m11.970s
time find $remove_path -type d -delete
[root@tibero file_test]$ time find find_remove -type d -delete
real 0m13.214s
user 0m1.255s
sys 0m10.847s
- 큰 성능 차이를 나타내지 않았습니다.
- 다음 포스팅에서는 개수를 좀 더 늘려보고 테스트 해봐야겠네요.
728x90
반응형