리눅스 용량 문제
리눅스를 운용하다 보면 가끔 디스크 공간이 부족하여 DISK I/O (디스크 복사 및 출력)에서 에러가 발생할 때가 많습니다.
저도 EC2에서 적은 용량의 스토리지만 사용하여 Ubuntu를 운용하다가 디스크 공간이 부족하여 파일 복사가 되지 않거나 디렉터리 이동이 되지 않는 문제가 발생했던 적이 종종 있습니다.
이럴 때 가장 좋은 방법은 스토리지의 크기을 늘려주는 방법입니다.
EC2를 쓰고 있다면 EC2에 연결된 EBS의 크기를 클릭 몇 번으로 확장할 수가 있지만, 물리 HDD를 쓰고 있을 때는 용량 확장이 까다롭습니다. 또 클라우드를 쓸 때는 비용 절감 문제로 디스크 공간 확보가 어려울 수가 있습니다.
디스크 공간을 확장하기전에 어떤 파일이 용량을 가장 크게 차지하는지, 또는 불필요하게 큰 용량을 차지하는 로그 데이터들이나 더미 데이터들이 있는지 확인해보면 좀 더 현명하게 스토리지의 공간을 관리할 수 있습니다.
이럴 때 사용하는 몇 가지 유용한 리눅스 명령어들을 정리해 보았습니다.
find를 이용한 방법
첫 번째로 find를 이용한 방법이 있습니다.
find는 보통 파일을 찾을 때 쓰는 명령어인데요, find와 -size 옵션을 조합하면 특정 크기 이상의 파일을 찾는 데 사용할 수 있습니다.
find /home/ubuntu -size +100000 -print
예를 들어 -size 옵션으로 KB 단위를 입력하여, /home/ubuntu에 있는 100메가 이상의 파일을 찾는 명령어를 만들 수 있습니다.
실제로 동작시켜본 화면입니다.
du를 이용한 방법
두 번째로 du를 이용한 방법이 있습니다.
du는 disk usage의 약자로 현재 디렉터리 및 하위 디렉터리들에 대한 크기를 보여 줄수 있는 명령어입니다.
각각의 파일 단위의 크기를 표시해주는 것이 아닌 디렉토리들에 대한 크기를 한눈에 보고 싶을 때 보통 사용하게 됩니다.
위에서처럼 du를 쓰게 되면 폴더별로 각각의 폴더의 용량이 몇 KB를 차지하고 있는지 확인할 수 있습니다.
보통 du를 쓸 때는 du만을 사용하지 않고 여러 옵션들을 같이 사용하는데, 아래 몇 가지 옵션을 설명해보겠습니다.
- -h : h 옵션은 human-readable의 의미로 좀 더 사용자가 인지하기 좋은 단위로 보여줍니다.
du -h를 사용하게 되면 조금 사용자가 읽기 쉬운 단위로 K / M / G 단위로 보여주게 됩니다.
(위의 사진에는 K 단위만 있네요)
- -s : s 옵션은 summerize의 약자로 용량의 합계를 보여줍니다.
du -s를 사용하게 되면 현재 폴더와 하위 폴더의 크기를 모두 합친 크기를 반환합니다.
보통은 du -sh로 사용합니다. 이렇게 하면 현재 폴더와 하위 폴더의 크기를 모두 합친 크기를 다시 읽기 쉬운 단위로 변환하여 볼 수 있습니다.
결론
큰 용량을 차지하는 파일이나 폴더를 찾는 방법을 알아봤는데요,
위에서 설명한 find를 통해 큰 파일을 찾거나, du를 통해 큰 용량을 차지하는 디렉터리를 찾을 수 있습니다.
두 명령어를 잘 찾아보면 스토리지에서 불필요하게 큰 용량을 차지하는 파일을 찾아서 삭제하여 부족한 디스크 공간을 확보할 수 있을 것입니다 :)
'서버 개발 (AWS, Linux, DevOps) > 리눅스 (Ubuntu)' 카테고리의 다른 글
리눅스 : 시스템 로그(journal) 사이즈 줄여서 용량 확보하기 (0) | 2024.01.14 |
---|---|
리눅스 : Swap 메모리란? (2) | 2022.05.03 |
리눅스 : 용량 부족할때, 커널 삭제로 용량 확보하기 (0) | 2021.03.15 |
리눅스 : 메모리 확인 / 캐시 삭제 (0) | 2021.02.21 |