df 명령과 check_snmp_storage.pl을 사용한 다양한 디스크 사용량

df 명령과 check_snmp_storage.pl을 사용한 다양한 디스크 사용량

저는 IT 모니터링 분야에서 일하는 하급 시스템 관리자입니다. 질문이 있어요check_snmp_storage.pl스크립트는 일부 파티션(/var)의 디스크 사용량이 동일한 서버에서 df 명령이 표시하는 것보다 몇 퍼센트 낮다는 것을 보여줍니다.

나는 다음과 같이 check_snmp_storage.pl을 호출합니다.

perl check_snmp_storage.pl -2 -C public <IP_ADDRESS> -m /var -w 80 -c 90 -G

출력은 다음과 같습니다.

Alarm at 15
SNMP v2c login
Filter : /var
OID : 1.3.6.1.2.1.25.2.3.1.3.8, Desc : Shared memory
OID : 1.3.6.1.2.1.25.2.3.1.3.56, Desc : /dev/shm
OID : 1.3.6.1.2.1.25.2.3.1.3.31, Desc : /var
   Name : /var, Index : 31
OID : 1.3.6.1.2.1.25.2.3.1.3.6, Desc : Memory buffers
OID : 1.3.6.1.2.1.25.2.3.1.3.10, Desc : Swap space
OID : 1.3.6.1.2.1.25.2.3.1.3.40, Desc : /sys/fs/cgroup
OID : 1.3.6.1.2.1.25.2.3.1.3.7, Desc : Cached memory
OID : 1.3.6.1.2.1.25.2.3.1.3.3, Desc : Virtual memory
OID : 1.3.6.1.2.1.25.2.3.1.3.36, Desc : /run
OID : 1.3.6.1.2.1.25.2.3.1.3.32, Desc : /
OID : 1.3.6.1.2.1.25.2.3.1.3.1, Desc : Physical memory
storages selected : 1
1.3.6.1.2.1.25.2.3.1.6.31  : 320923825
1.3.6.1.2.1.25.2.3.1.4.31  : 4096
1.3.6.1.2.1.25.2.3.1.5.31  : 428831117
Descr : /var
Size :  428831117
Used : 320923825
Alloc : 4096
Perf data : /var=1224GB;
/var: 75%used(1224GB/1636GB) (<80%) : OK

반면, 동일한 서버에서 호출된 df 명령은 다음과 같이 디스크 사용량을 표시합니다.

Filesystem      Size  Used Avail Use% Mounted on
/dev/md3        1.8T  1.4T  354G  79% /var

내 모니터링 클러스터의 경우 차이가 너무 커서 시스템 상태에 대한 좋은 정보 소스가 될 수 없습니다.

둘 사이의 실제 차이점이 무엇인지 찾으려고 노력했지만 설명을 찾을 수 없습니다. 나는 df가 디스크 사용량에 "뭔가를 추가"한다고 가정하지만, 이 두 값을 동일하게(또는 1% 차이처럼 매우 가깝게) 무엇을, 어떻게 만드는지 모르겠습니다.

답변1

제공되는 디스크 시스템 예약 및 snmp 정보를 확인하세요. 이 문서에서는 두 결과의 차이점을 설명합니다.

https://thwack.solarwinds.com/product-forums/f/general-it-topics/19043/linux-drive-monitors-not-accounting-for-reserved-space

보시다시피 net-snmp는 Used 및 Size만 반환하지만 사용할 수는 없습니다. 이를 통해 모니터링 소프트웨어는 모든 관련 데이터(특히 df의 사용 가능한 열에서 사용 가능한 값) 없이 계산을 수행할 수 있습니다.

여유 공간은 실제로 bfree와 bavail의 두 가지 다른 방식으로 가져옵니다.

df.c:

input_units = fsu.fsu_blocksize;
      output_units = output_block_size;
      total = fsu.fsu_blocks;
      available = fsu.fsu_bavail;
      negate_available = (fsu.fsu_bavail_top_bit_set
        & (available != UINTMAX_MAX));
      available_to_root = fsu.fsu_bfree;
[..]
      used = total - available_to_root;

df는 유명한 5% 디스크 시스템 예약으로 여유 디스크 공간을 반환하는 반면, snmp는 이 예약에 관계없이 여유 공간을 반환합니다.

관련 정보