루트 사용자가 사용할 수있는 파일 시스템의 여유 공간 표시


12

기본적으로 Linux는 일반 사용자가 드라이브를 완전히 채우지 않고 시스템 충돌을 방지하고 조각화를 줄이기 위해 최소한 ext4에서 루트 사용자를 위해 파일 시스템의 일부를 예약합니다. 그러나 df일반 사용자에게 명백한 여유 공간 만 표시합니다 (루트로 실행될 때도). 루트에 액세스 할 수있는 "실제"여유 공간을 어떻게 표시합니까?

답변:


6

도구가 내장되어 있는지 확실하지 않지만 예약 된 기본값을 5 %로 두었다고 가정하면 다음과 같이 알려줍니다.

df / | grep dev | cut -f 3,6 -d\  | awk '{print ($1*.05)+$2}'

df루트 grep는 dev가있는 줄의 경우 (머리글을 제거하기 위해) cut크기와 사용 가능한 필드이며 awk스크립트를 사용하여 사용 가능한 디스크 크기의 5 %를 계산하십시오.

실제 예약을 tune2fs -l <device>가져와 스크립트에서 위의 내용과 결합 할 수 있습니다.


2
따라서 다음 명령은 권한이있는 사용자를 위해 예약 된 파티션 공간의 양을 알려줍니다 tune2fs -l /dev/DEVICE | egrep "Block count|Reserved block count". 예를 들어 "멀티미디어 버퍼"파티션의 경우 : Block count: 2621440Reserved block count: 128449: 사용 가능한 블록의 4.9 % (조각화를 방지하기 위해 보수적 인 설정).
tuk0z

cut명령 을 사용할 필요가 없습니다 awk. 직접 필드를 선택할 수 있습니다. 실제로 cut명령이 예상대로 작동하지 않았습니다. 어쨌든, 나는 더 정확한 답변을 제공해야 할 또 다른 답변을 주었다.
jarno

1
tune2fs -m <percentage> <device-name>루트 용도로만 예약 된 디스크 공간을 변경하려면 실행하십시오 .
luka5z

1
위에서 영감을 받아 루트 볼륨의 예약 공간을 MB 단위로 계산했습니다.sudo tune2fs -l $(df | grep -E '/$' | cut -d\ -f 1) | egrep "Reserved block count|Block size" | paste -sd\ | awk '{print ($4 * $7 / ( 1024 * 1024 ) ), "MB"}'
mp3foley

이것은 휴대용 답변이 아닙니다. 필요한 답변을 아래에서 확인하십시오 (스포일러 : tune2fs /dev/sda1또는 더 좋음stat -f -c '%a blocks free and %f blocks free for root (%S bytes per block)' /
trs

17

tune2fs 명령 ( / sbin / tune2fs에 있음 )을 사용하면 예약 된 공간을 쉽게 결정할 수 있습니다 .

tune2fs -l /dev/sda1

참고로 시스템 정보를 제공하겠습니다.이 질문에 중요하지 않은 외부 행을 제거하겠습니다.

헤더 ...와 볼륨 이름은 모든 드라이브에 레이블 을 지정하여 필요한 경우 쉽게 식별 할 수 있습니다.

tune2fs 1.42.4 (12-Jun-2012)
Filesystem volume name:   xenon
Last mounted on:          /
...

시스템이 실행되는 동안 "정리"라고 말하고 싶습니다. 정직한!

Filesystem state:         clean

데이터 저장 용량 정보가 시작되는 곳입니다.

여기에 총 121,179,648 블록이 있습니다 ... 블록 크기는 4K (4096)이며 큰 숫자 (462-ish GB)로 곱합니다. (블록 크기는 아래에 나와 있습니다)

Block count:              121179648

그리고 예약 된 블록 ... 위의 숫자와 아래의 숫자를 살펴보면 .. 1 %가 예약되어 있다는 것을 비교적 빨리 알 수있을 것입니다. 이 경우 (4.62-ish GB)

Reserved block count:     1211796

현재 사용 가능한 여유 공간이 얼마나됩니까? 바로 여기에!

Free blocks:              104090586
...

그리고 모든 중요한 블록 크기. 곱하기에 유용합니다.

Block size:               4096
...

이 줄은 블록이 예약 된 사람을 말합니다 ...이 경우 사용자 0, 루트

Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
...

여기에는 더 많은 정보가 있지만 사용 가능한 양과 루트를 위해 더 많은 양을 예약했는지 신속하게 확인할 수 있습니다. 간단한 수학.

도움이 되었기를 바랍니다. 맨 페이지는 친구입니다.


2

"/ 경로"와 관련된 파티션의 여유 공간을 바이트 단위로 표시합니다.

printf '%s' $(($(stat -f --format='%f*%S' /path)))

실행하기 위해 수퍼 유저 일 필요는 없습니다.

BTW 차이점이 무엇인지 잘 모르겠습니다.

% s 블록 크기 (더 빠른 전송을 위해)

% S 기본 블록 크기 (블록 수)

의 사용법 stat.


쿨-루트를 위해 예약 된 공간을 설명합니까?
Paul

@Paul 예, 포함
jarno

출력은 효과적으로 합계이므로 bc바이트 수를 얻기 위해 출력을 파이프 하거나 --format='%f*%S/1024/1024/1024' | bc선택한 분할 수에 따라 킬로바이트 / 메가 바이트 / 기가 바이트를 얻을 수 있습니다.
Paul

@Paul 글쎄, 나는 그것을 제품이라고 부를 것이다. 이진 접두어는 각각 kibibytes, mebibytes 및 gibibytes이라고합니다. 주변 산술 확장 $(( ... )) 은 계산을 수행하지만 몫의 정수 부분 만 나눕니다 (나눗셈을 추가하는 경우). 아니면 쉘이 산술 확장을 지원하지 않는다는 의미입니까?
jarno

@Paul 그러나 bc대신 을 사용 하면 필요한 경우 임의의 정밀도로 몫을 얻을 수 있습니다.
jarno
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.