Trouble/Linux

파일 압축 해제했는데 용량이 과하게 늘어나는 문제 (2배 이상), 파일 시스템 포맷 문제 (exFAT ->ext4)

침닦는수건 2025. 4. 13. 02:37
반응형

압축된 파일을 다운로드받은 뒤, 압축 해제를 했는데 예상과 달리 파일 크기가 2~3배까지 늘어나는 문제를 겪었다. 
 
ava 256 데이터셋은 4TB 정도의 데이터셋인데 압축 해제를 하고 나니 거의 20TB가 필요해서 터져버렸다. 
 
압축 해제하면 당연히 파일 크기는 압축 전보다 커지는 것이 맞는데, 비정상적으로 커지는데는 다른 이유가 있더라. 
 
이유는 압축 해제하고 있는 디스크의 파일 시스템 포맷이 exFAT이기 때문이다. 
 
나도 자세히는 모르는데, 디스크마다 데이터를 어떤 규칙으로 저장할 지 결정하는 파일 시스템 포맷이라는게 존재하는데 이걸 어떻게 설정하느냐에 따라 사용 가능한 OS가 결정되고, 데이터마다 할당되는 메모리 크기가 저장된다. 
 
USB도 윈도우에서는 저장이 잘 안되고 우분투에서는 저장이 되는 문제를 겪을 때가 있는데 이게 이 파일 시스템 포맷 문제다.
 

원인 

exFAT은 기본적으로 데이터를 저장할 때 블록(기본 단위)를 32KB로 설정한다. 압축 해제 중인 파일을 32KB 단위로 쪼개서 메모리에 차곡차곡 쌓아 적는 방식이다. 이 때 파일이 32KB보다 작을 경우, 문제가 생긴다. 
 
예를 들어 파일이 20KB일 경우, 메모리에 20KB만 할당하길 기대하지만 exFAT 포맷일 경우, 기본 단위인 32KB를 할당한다. 따라서 12KB의 메모리가 낭비되는 모양이다. 
 
만약 압축 파일 내에 32KB보다 작은 크기의 파일이 무수히 많을 경우, 실제 파일 크기보다 엄청 큰 메모리가 낭비되고 결국 디스크 메모리 입장에서는 몇 배나 큰 공간이 차있게 된다. 
 

du -sh extracted_file_folder

 
du -sh란 명령어는 파일 디렉토리의 용량이 아니라 파일 디렉토리에 할당된 디스크 공간을 보여주는 커맨드인데, 이걸로 보았을 때 비정상적으로 큰 값이 나오게 된다. (아니면 엄청 느려서 안 뜨거나)
 

해결법

포맷 후 파일 시스템 갈아엎는 것 밖에 방법이 없다. exFAT은 윈도우나 MAC에서 주로 쓰는 포맷인데 우분투에서 굳이 쓸 이유도 없을 뿐더러 썼을 때 거의 디스크 용량을 반토막만 쓰겠다는 것과 같다. 그냥 밀어버리고 새로 까는 것이 맞다.
 

sudo fdisk -l #e.g. /dev/sda1

먼저 해당 디스크가 무슨 이름으로 인식되는지 확인한다. (여기서 만약 다른 디스크랑 이름 실수해서 엉뚱한 디스크 밀어버리면 큰 일이니 더블 체크의 더블 체크 해야 됨)
 

sudo umount /dev/sd?

포맷 전에 당연히 unmount해서 시스템에서 분리해야 된다. 이 때 target is busy 라는 error와 함께 unmount가 안될 수 있다.
 

sudo fuser -vm /dev/sd?
sudo fuser -km /dev/sd?

그러면 지금 시스템에서 해당 디스크를 누가 쓰고 있는지 process ID를 출력해서 확인해보고 (-vm), 만약 중요한 작업이 아니라면 process kill (-km) 해버리고 unmount하면 된다.
 
그럼에도!  "/dev/sd? is apparently in use by the system; will not make a filesystem here!" 라는 오류가 또 날 수도 있는데, 이건 시스템에서 이 디스크를 여전히 쓰고 있다고 인식하는 것이다. 위 과정을 한 번 더 반복해보고 만약 안된다면 재부팅 추천한다.
 

sudo mkfs.ext4 -b 1024 /dev/sd? # not recommended

이후에 블록 크기는 1KB로 지정해서 ext4로 다시 생성해주면 되겠다. 사실 이 커맨드보다는 GUI를 사용하는 것을 추천한다. 
 

disks를 켜보면 unmount되어 있는 디스크가 보일 것인데, GUI 상에서 - 버튼 + format을 하는 것이 안전하다. fdisk를 써서 하나 하나 작업할 수 있지만 뭐 하나 잘못 입력했다간 실수로 다른 디스크도 날릴 수 있기 때문에 GUI에서 하는 것을 추천

여기서 저 - 버튼을 누르면 partition 지워버리는 것이고, 톱니바퀴를 누른 뒤 Format Partition을 ext4로 생성하면 된다.

반응형