🦇 Linux

[내가 보려고 쓴] 리눅스 - du, df

ji-hyun 2021. 8. 25. 18:07

du - 디스크 사용량, 홈디렉터리 사용량, 쿼터같은 것이 설정되어 있다면 얼마나 쓸 수 있는지 등

df - C드라이브, D드라이브 같은 하드디스크 용량 볼때 사용하는 용량

 

이 둘은 둘다 root 권한을 필요로 함

 

 

 

홈 디렉터디 사용 용량을 보기 위해 ls -Al ~ 명령을 사용하는 방법을 생각해낼 수 있는데 이는 사실 용량을 볼 수는 없다. (참고: -A 옵션은 .과 ..을 제외하고 출력함)

 

 

 

 

du ~ 명령을 해야 홈 디렉터리 사용 용량을 볼 수 있다. 편하게 보기 위해서 du -sh ~ 명령을 한다.

 

 

 

du [옵션] [파일]

파일이나 디렉터리들이 디스크에서 차지하고 있는 크기를 출력한다.

 

옵션

s - summerize (파일들의 전체 크기를 합한 값만 보여준다)

h - human readable (인간이 읽기 쉬운 용량의 단위 표시(KB, MB, GB)를 해준다)

b - 바이트 단위로 보여준다.

k - 킬로바이트(kilobyte) 단위로 보여준다. (기본값)

m - 메가바이트(megabyte) 단위로 보여준다.

a - 디렉터리에 존재하는 모든 파일에 대해 각각의 크기를 보여준다. 

 

 

 

 

용량 변화 확인해보기

① cp -r /etc .

현재 위치로 /etc 밑에 있는 파일들을 복사하면 용량이 늘어난다.

② du -sh ~

명령 실행결과, 24K -> 18M 로 늘어났다.

 

 

 

 

디스크 쿼터

리눅스 시스템은 기본적으로 사용자의 용량을 제한하지 않아서, 특정 사용자가 디스크에 남아 있는 용량을 모두 사용할 수 있다. 따라서 사용자가 많은 서버의 경우에 사용자의 디스크 사용량 제한이 필요한데, 이러한 제한을 디스크 쿼터라고 부른다.

리눅스에서 디스크 쿼터는 사용자 및 그룹의 디스크 사용량과 생성할 수 있는 파일의 개수(I-node의 수)를 제한할 수 있다.

 

 

 

 

fallocate 라는 명령은 길이를 지정하여 파일을 생성할 수 있는 명령어다.

100메가짜리 파일 k3 를 만들고 ll 명령을 입력해 현재 목록들을 출력해주었다.

 

읽기 쉽게 (human readable) ls -Alh 명령을 내리면

 

 

 

 

50기가짜리 파일 k60을 생성해본다.

 

 

장치에 남은 공간이 없다며 수행을 실패했다고 뜬다. 한 사용자가 과도한 크기의 사용하는 것을 막기 위해 디스크 쿼터를 해야한다는 것을 보여주기 위해 예시를 보였다. 이 게시물에서는 디스크 쿼터를 다루지는 않는다.

 

 

 

 

 

root 권한으로 du 명령을 하면 아까 일반 사용자에서 나타났던 허부 거부 라고 떴던 파일들이 안뜬다.

 

그리고 du -shL /etcdu -sh /etc 명령의 용량이 다르게 뜨는데 L 옵션은 심볼릭 링크를 포함하는 것을 의미한다. 심볼릭 링크란 파일이 아니라 연결되고 있는 것을 의미한다. L 옵션으로 연결되고 있는 용량까지 찾아서 나타낸다.

 

 

쉽게 말해 우리가 사용하는 윈도우 운영체제를 생각해보면 바로 가기 아이콘을 떠올릴 수 있는데 보통 용량을 계산할때 바로가기 아이콘 용량만 포함한다. 하지만 바로 가기 아이콘은 그것이 가리키고 있는 (예를 들어 영화 20G 같은) 것들이 있다고 할때 그것까지 포함하는 용량을 계산하면 더 커질 수 밖에 없다.

 

 

 

du 옵션 설명을 일부 캡쳐해서 살펴보자. (du --help)

 

 

-L 옵션을 주목해서 보면

주소를 통해 그 값에 접근하는 것을 역참조(dereference)라고 한다.

 

 

 

 

df

 

 

/dev/mapper/centos-root

파티션 정보이다. 리눅스를 처음 깔때 파티션을 어떻게 나눴느냐에 따라 용량이 다르게 나온다.

윈도우의 D드라이브와 같은 것이다. = 메인드라이브 

 

/dev/sda1

윈도우의 C드라이브와 같은 것이다.

 

 

일반 사용자에서 fallocate 명령으로 큰 파일을 만들면 /dev/mapper/centos-root 사용률이 커지는 것을 볼 수 있다.

여기가 꽉차면 더이상 디렉터리나 파일이 생성이 되지 않는다.

그러면 root 가 큰 파일을 찾아서 없애주는 역할을 한다.

 

 

 

df [옵션]

 

 

-a : 모든 파일시스템을 출력한다.

 -B : 지정용량을 블록단위로 정하여 용량을 출력한다.
 --total : 
총합 total 라인을 추가하여 출력한다.
 -h : 
보기 편한 용량크기로 출력한다. (1K, 20M, 1.0G)
 -H : 1024
가 아닌 1000단위로 용량계산하여 출력한다.
 -i : i-node
의 남은 공간사용공간사용량을 출력한다.
 -k : 
블럭단위를 1k로 하여 출력한다.
 -l : 
출력하는 목록을 로컬파일시스템으로 제한한다.
 -P : POSIX
에서 사용하는 형태로 출력한다.
 -t : 
지정한 파일타입(nfs, ext4 )만을 파일시스템 출력한다.
 -T : 
파일타입항목을 추가하여 출력한다.
 -x : t
옵션과 반대지정한 파일타입을 제외하고 파일시스템 출력한다.
 -v : ignored (반응 없음)
 --help : 
도움말을 출력한다.
 --version : 
버전 정보를 출력한다.

 

 

 

 

inode란 파일을 하나하나씩 관리하는 번호이다. 운영체제가 하는 중요한 역할 중 하나가 파일관리이다. 파일을 관리할 때는 번호를 부여해서 관리를 한다. index node의 줄임말이다. 

 

 

 

cp /etc/a* 명령을 하여 a로 시작하는 파일들을 현재 위치로 복사해온다.

그리고 ls -i 옵션을 주어 확인해보면

앞에 13050049 등의 번호를 볼 수 있는데 이것이 inode 인 것이다.

 

 

 

 

마찬가지로 df -i 옵션을 주어 확인해보면 inodes = inode 개수를 볼 수 있다.