이 축제를 망치려는 의도는 아니지만, 게시글들을 읽어본 결과 Discourse 백업 프로세스가 문제를 일으키고 있다는 확실한 확인은 없습니다.
매일 실행되는 백업 프로세스가 이 문제를 일으킨다는 것을 100% 확인해 보지 않는다면 어떻게 되겠습니까? 호스트에서 매일 실행되는 crontab 파일이 여러 개 실행되고 있습니다.
@pnoeric 님은 컨테이너 밖에서 /var/discourse 파일 시스템에 대해 du 명령을 실행해 보셨나요?
@pnoeric 님의 메모에는 다음과 같이 적혀 있습니다:
root@x-app:/var/www/discourse# du -h -d 1
하지만 이 명령은 모든 백업과 업로드를 포함하는 Discourse 공유 디렉터리를 놓쳤습니다. 또한 호스트의 모든 Docker 파일(이미지)도 빠졌는데, 이미지가 장기간 정리되지 않으면 이 부분도 크게 증가할 수 있습니다.
이 확인을 실행해야 할 곳은 컨테이너 밖입니다(컨테이너 안이 아닙니다!):
예를 들어 (컨테이너 밖에서):
cd /var/discourse
/var/discourse# du -sh *
4.0K bin
4.0K cids
56K containers
12K discourse-doctor
24K discourse-setup
164K image
24K launcher
4.0K LICENSE
12K README.md
24K samples
8.0K scripts
62G shared
148K templates
이 호스트에서 공유 디렉터리가 62G인 것을 볼 수 있습니다.
또한 파일 시스템의 /var에서도 (컨테이너 밖에서)
cd /var
# du -sh *
511M cache
20K composetest
62G discourse
1.6G docker
8.0K legacy
52G lib
4.0K local
0 lock
4.0K locks
5.7G log
24K logs
64K mail
4.0K opt
4.0K registry
4.0K shared
1.9M spool
48K tmp
25G linux_app
2.2G www
이 축제를 망치려는 의도는 아니지만, Discourse에 수많은 "수정 방안"을 제안하기 전에 Discourse 백업 크론이 실제 문제의 원인임을 100% 확실하게 확인하는 것이 매우 중요합니다.
현재 Discourse 백업 프로세스에는 전혀 문제가 없었으며, 추가로 호스트의 파일 시스템을 관리하는 것은 본질적으로 Discourse의 업무가 아닙니다.
여기 있습니다:
du
Filesystem 1K-blocks Used Available Use% Mounted on
udev 32892500 0 32892500 0% /dev
tmpfs 6584232 2136 6582096 1% /run
/dev/md2 470927632 215969956 230966124 49% /
tmpfs 32921160 0 32921160 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 32921160 0 32921160 0% /sys/fs/cgroup
/dev/md0 482922 75082 382906 17% /boot
/dev/sda1 244988 4636 240353 2% /boot/efi
tmpfs 6584232 0 6584232 0% /run/user/1000
overlay 470927632 215969956 230966124 49% /var/lib/docker/overlay2/0f8be368b0154285423630ad50148ee2d5fdcb357c46125eafa7374ca34ef29a/merged
shm 524288 1620 522668 1% /var/lib/docker/containers/ca7b55fc5a0c123f7b2b1234ea210aa8286a34167cba9344b7929547bd323c9b/mounts/shm
overlay 470927632 215969956 230966124 49% /var/lib/docker/overlay2/7cd7e8b5b35b496eaed68753cc995e9303499a24721062055e2f06beb07e26c8/merged
shm 65536 0 65536 0% /var/lib/docker/containers/3cc0c90c3e3a5db6692e7b5d21727fbb1c13c8e07e48e4f6d954214fc03694a9/mounts/shm
overlay 470927632 215969956 230966124 49% /var/lib/docker/overlay2/31533fdf68033eed96dab4f9df89025ea3dab172ed48b6ce6431840a8df1c8ea/merged
shm 524288 0 524288 0% /var/lib/docker/containers/631fbabedda9a430dd8204ec66fb45c7514d948025124171b960ea424e28d5d4/mounts/shm
overlay 470927632 215969956 230966124 49% /var/lib/docker/overlay2/7a3ba2223ee93bc868b52b3707799d0fd7b4ca6dcc0df29f20c2c98a53903ff1/merged
shm 65536 0 65536 0% /var/lib/docker/containers/7a145366268c8ac5543a4555dc1bfc63c1e85a654e4c793e96fc2cc2e8514388/mounts/shm
overlay 470927632 215969956 230966124 49% /var/lib/docker/overlay2/add4bdd7bd88df7a0e05dff21896d3ef796f7cf2ff9759e0bb04b1953f16cd95/merged
shm 65536 0 65536 0% /var/lib/docker/containers/123743e122089b94660a6bdd2a9e55055ad91b6f75cce4ac760f36066bcf14d0/mounts/shm
overlay 470927632 215969956 230966124 49% /var/lib/docker/overlay2/b376ff32eaac0c58463e8b99b6db9ec0da3405c3f7a9f00b5430f10e07d372b0/merged
shm 524288 0 524288 0% /var/lib/docker/containers/63c52bc571b5f0d2544417da10efc37d3957e7a38f44bc8325145e795ee29559/mounts/shm
Docker 파일들을 살펴봅시다:
# cd /var/lib
# du -sh docker
30G docker
그리고 우리의 Docker 이미지는 정기적으로 정리되고 있습니다.
@bartv 님은 여기서부터 시작하는 것이 좋다고 올바르게 제안했습니다:
어떤 디렉터리가 용량을 차지하고 있는지 파악하는 것부터 시작하겠습니다. 제 표준 접근법은 /var/discourse로 들어간 후 du -h -d 1을 실행하는 것입니다. 가장 큰 디렉터리를 찾아 들어간 후 용의자를 찾을 때까지 이 과정을 반복합니다. 그렇게 하면 무슨 일이 일어나고 있는지 단서를 얻을 수 있을 것입니다.
그것은 좋은 시작이지만, Docker, 코어 파일 등 호스트 파일 시스템에서 파일 시스템을 가득 채울 수 있는 다른 많은 장소가 있을 수 있습니다.
하루에 한 번씩 백분율 스파이크가 발생하는 그래프만으로는 Discourse 백업 크론 프로세스가 근본 원인이라고 단정할 수 있는 근거가 충분하지 않습니다. 그럴 수도 있지만, 지금까지의 증거에 기반하면 아닐 수도 있습니다!