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 /etc 와 du -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 개수를 볼 수 있다.
'🦇 Linux' 카테고리의 다른 글
리눅스 - rpm, yum (0) | 2021.08.29 |
---|---|
[내가 보려고 쓴] 리눅스 프로세스 개념 (0) | 2021.08.29 |
리눅스 - bashrc, bash_profile (0) | 2021.08.25 |
리눅스 - 셸, 환경변수, bash 셸 (0) | 2021.08.24 |
리마 2급 공부 노트 - 8.23 (파일 시스템) (0) | 2021.08.23 |