Linux에서 사용된 디스크 공간이 느리게 증가하는 원인을 확인하는 방법은 무엇입니까?

Linux에서 사용된 디스크 공간이 느리게 증가하는 원인을 확인하는 방법은 무엇입니까?

방금 Raspberry Pi 3B에 Raspian Buster Lite를 새로 설치하고 설치했습니다.프로메테우스와 함께노드 내보내기몇 가지 간단한 진단을 수행하십시오. 특히 사용 가능한 디스크 공간이 중요합니다.

문제는 사용 가능한 디스크 공간이 지속적으로 감소하는 것 같다는 것입니다. 다음을 반환하는 를 사용하여 사용 가능한 바이트 수를 확인할 수 있습니다 df -B1(사용된 "16GB" SD 카드에서 13.08GB).

pi@raspberrypi:/home $ df -B1

Filesystem       1B-blocks       Used   Available Use% Mounted on
/dev/root      15383740416 1647845376 13078351872  12% /
devtmpfs         480808960          0   480808960   0% /dev
tmpfs            485527552          0   485527552   0% /dev/shm
tmpfs            485527552    6459392   479068160   2% /run
tmpfs              5242880       4096     5238784   1% /run/lock
tmpfs            485527552          0   485527552   0% /sys/fs/cgroup
/dev/mmcblk0p1   264289280   54748672   209540608  21% /boot
tmpfs             97103872          0    97103872   0% /run/user/1000

정기적으로 확인하면 감소합니다. 몇 분 후에 확인하면 다음이 표시됩니다.

Filesystem       1B-blocks       Used   Available Use% Mounted on
/dev/root      15383740416 1648463872 13077733376  12% /
devtmpfs         480808960          0   480808960   0% /dev
tmpfs            485527552          0   485527552   0% /dev/shm
tmpfs            485527552    6459392   479068160   2% /run
tmpfs              5242880       4096     5238784   1% /run/lock
tmpfs            485527552          0   485527552   0% /sys/fs/cgroup
/dev/mmcblk0p1   264289280   54748672   209540608  21% /boot
tmpfs             97103872          0    97103872   0% /run/user/1000

다음 명령을 사용하여 Prometheus 데이터베이스에서 이 측정항목을 확인할 수 있습니다.그라파나:

여기에 이미지 설명을 입력하세요.

아마도 로그 같은 것일 가능성이 높지만 더 잘 이해하고 싶습니다. 이 그래프를 보면 시간당 약 2.9MB씩 공간이 줄어들고 있는 것 같은데, 제겐 너무 큰 것 같아요.

이상적으로는 마지막 순간에 크기가 변경된 파일만 볼 수 있는 방법을 찾고 있는 것 같습니다. 원산지를 추적하는 좋은 방법은 무엇입니까? 기다려 주셔서 감사합니다. 저는 Linux를 처음 사용합니다.


편집하다

누구든지 관심이 있다면 시간당 2.9MB의 거의 대부분이 Prometheus의 WAL(미리 쓰기 로그)에 기인할 수 있다는 사실을 발견했습니다. WAL이 데이터를 저장하는 방법에 대해 읽을 수 있습니다.여기. 다음 명령을 사용하여 WAL 디렉터리 생성을 관찰할 수 있었습니다.

watch -d "sudo du -s -B1 /home/pi/prometheus/data/*"

변경되는 파일을 강조하는 데 효과적입니다.

여기에 이미지 설명을 입력하세요.

Richie Frame이 암시한 것처럼 가끔씩(프로메테우스에서는 기본적으로 2시간마다 해야 한다고 믿지만 확인해야 합니다) 데이터는 WAL에서 압축되어 보다 영구적인 저장소에 저장됩니다. 이것이 더 효율적입니다. 필요한 디스크 공간 측면에서. Grafana에서 압축이 발생하고(Pi가 유휴 상태인 동안 밤새 발생함) 일부 디스크 공간이 확보되는 것을 볼 수 있습니다.

여기에 이미지 설명을 입력하세요.

예상했던 2시간이 아닌 4시간마다 디스크 공간이 크게 늘어나는 것 같은 이유는 모르겠지만, 그건 또 다른 날의 작업입니다. 모두의 도움에 감사드립니다!

답변1

내 제안은 다음 명령입니다.

watch -d "ls -lt /var/log/**/* | head"

watch기본적으로 다음 명령은 2초마다 실행됩니다. 이 -d플래그는 각 실행 후의 차이점을 강조합니다.

ls -lt마지막 수정 날짜(최신 날짜부터)를 기준으로 파일을 나열합니다. **/*모든 파일을 재귀적으로 찾는 glob입니다.

마지막으로 head처음 10줄만 출력하는 데 사용되었습니다.

답변2

비슷한 방법을 사용하여 시스템에서 가장 최근에 업데이트된 파일을 찾을 수 있습니다.

find / -type f -newermt '-5 minutes'`

이를 크기 표시와 결합할 수 있습니다.

find / -type f -newermt '-5 minutes' -exec stat -c '%10s %n' {} + `

답변3

루트로 수행 crontab -e 하고 다음과 같이 수행하십시오.

30 * * * * *   /root/checkmydiskspace.sh

그러면 30분마다 bash 스크립트가 실행되며 /root/checkmydiskspace.sh이를 작성해야 합니다. crontab을 찾아 더 자주 확인해야 하는지 결정하세요.

스크립트는 다음과 같으며 이를 찾는 데 도움이 되는 필수 정보를 출력합니다.어디시간이 지남에 따라 디스크 공간이 고갈될 수 있습니다.

#!/bin/bash

now=$(date '+%Y-%m-%d-%H:%M')

filename=wheremydiskspacegone_$now.log

du -sh /* > /root/$filename

반품,chmod 744 /root/checkmydiskspace.sh

무슨 일이 일어났는지 알아내기 위해 생성된 로그 파일을 살펴본 다음 가장 많은 공간이 사용된 하위 폴더 로 이동하십시오 du -sh /*.du -sh /usr/*du

물론, du -sh /*어떤 폴더에 가장 많은 내용이 담겨 있는지, 그것이 범인일지는 미리 알 수 있습니다. 그러나 X분마다 또는 무엇이든 모든 로그 파일을 통해 정확히 무슨 일이 어디서 일어났는지 추론하는 데 필요한 모든 것을 얻을 수 있습니다. 그런 다음 어떤 프로그램이나 프로세스가 상황을 일으키는지 확인해야 합니다.

관련 정보