안녕하세요.
오늘은 리눅스 OS에서 디스크 사용량을 확인하는 다양한 방법에 대해 알아보도록 하겠습니다.
디스크 용량을 관리해야하는 이유
디스크 공간은 보통은 제한적인 상태에서 사용될 수 밖에 없고 시간이 지남에 따라 데이터를 축적하게 되며 저장 공간을 효과적으로 관리하지 않게 되면 성능 저하와 잠재적인 시스템 장애이 발생될 수 있기 때문입니다.
기본 제공 명령어 사용하기
df 명령어 (Disk Free)
df 명령어는 마운트된 파일 시스템의 디스크 공간 사용률에 대한 목록을 제공합니다.
파일 시스템 1K-블록 사용 가용 사용% 마운트위치 tmpfs 2456360 4400 2451960 1% /run /dev/sda1 203034800 170097976 32920440 84% / tmpfs 12281792 0 12281792 0% /dev/shm tmpfs 5120 0 5120 0% /run/lock /dev/sda15 99800 6418 93383 7% /boot/efi
df -h 명령어
df -h를 실행하면 총 사용한 용량, 사용 중인 용량, 사용 가능한 용량을 포함한 정보를 사람이 읽을 수 있는 형식으로 표시할 수 있습니다.
파일 시스템 크기 사용 가용 사용% 마운트위치 tmpfs 2.4G 4.3M 2.4G 1% /run /dev/sda1 194G 163G 32G 84% / tmpfs 12G 0 12G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda15 98M 6.3M 92M 7% /boot/efi
du 명령어 (Disk Usage)
du 명령어는 기본적으로 디렉토리를 재귀적으로 탐색하여 각 파일과 디렉토리의 크기를 표시합니다. 특정 디렉토리에 대한 디스크 사용량을 요약하려면 du -sh /경로/디렉토리를 사용할 수 있습니다.
92G /docker
디렉토리별 디스크 공간 확인하기 - du 명령어 사용
디스크 공간 사용량을 디렉토리별로 시각화하려면 du 명령어를 sort 및 head와 같은 다른 유틸리티와 결합하여 사용하여 가장 큰 디렉토리를 표시할 수 있습니다.
268K /tmp 26M /home 16K /srv 5.0G /usr 32K /opt 4.3M /run 82G /var 0 /proc 4.0K /mnt 7.4M /etc ...
sort를 함께 사용해서 보기 쉽게 정렬하도록 하겠습니다.
-hr은 -h, -r 옵션을 함께 사용하는 것을 의미합니다
-h, --human-numeric-sort
인지 가능한 숫자 비교(예: 2K 1G)
-r, --reverse
비교의 결과를 뒤바꿉니다 (예: 오름차순, 내림차순)
193G / 92G /docker 82G /var 8.0G /utils 5.0G /usr 1.8G /snap 200M /boot 150M /root 26M /home 7.4M /etc ...
큰 용량부터 작은용량까지 정렬이 잘 된 것을 볼 수 있습니다.
다른 도구를 설치해서 확인하기
ncdu (NCurses Disk Usage)
위에서 작성했던 명령어를 입력하는 것보다 조금 더 자세하게 확인할 수 있는 명령어입니다. 기본적으로 디렉토리별 디스크 사용량을 나타내며 방향키를 사용해 내부 디렉토리로 접근이 가능하여 더 상세한 확인이 가능합니다.
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help --------------------------------------------------------------------------------------------- 91.8 GiB [##########] /docker 81.3 GiB [######## ] /var 7.9 GiB [ ] /utils 4.9 GiB [ ] /usr 4.0 GiB [ ] swapfile 1.8 GiB [ ] /snap 199.3 MiB [ ] /boot 149.9 MiB [ ] /root 25.7 MiB [ ] /home
iotop (실시간 디스크 사용 확인)
리눅스 사용자라면 top 명령어는 기본적으로 알고 계실 것으로 생각이 듭니다. 이름에서부터 아실 수 있듯 iotop은 디스크 사용을 실시간으로 확인할 수 있는 명령어입니다.
Total DISK READ: 0.00 B/s | Total DISK WRITE: 1566.27 K/s Current DISK READ: 0.00 B/s | Current DISK WRITE: 2009.25 K/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 439 ?sys root 0.00 B/s 9.49 K/s ?unavailable? [jbd2/sda1-8] 714548 ?sys root 0.00 B/s 9.49 K/s ?unavailable? dockerd -H fd ... 1468616 ?sys lxd 0.00 B/s 1468.18 K/s ?unavailable? mysqld ... 1468622 ?sys lxd 0.00 B/s 18.99 K/s ?unavailable? mysqld ... 1469233 ?sys lxd 0.00 B/s 28.48 K/s ?unavailable? mysqld ... 1868613 ?sys root 0.00 B/s 3.16 K/s ?unavailable? containerd-shim-runc ... ...
마치며
제가 현재 사용중인 Oracle 클라우드의 용량이 어느 순간 가득차서 장애가 발생하였고 문제를 조치하는 과정해서 메모해두었던 내용을 조금 더 설명을 붙혀 글을 작성해 보았습니다. 조금이나마 다른분들께 도움이 되었으면 좋겠습니다.
글 읽어주셔서 감사합니다.
오타 혹은 잘못된 내용이 있다면 부담 없이 댓글로 알려주세요 :)
문장을 다듬는데 ChatGPT의 도움을 받았습니다.
'Linux' 카테고리의 다른 글
[Linux] apt update 오류 수정하기 (0) | 2024.05.07 |
---|