/var
프로덕션 서버의 파티션이 가득 찬 경우 해결 방법은 무엇입니까?
내 해결책은 다음과 같습니다.
- LVM 파티션인 경우 온라인으로 확장할 수 있습니다.
- 로그를 압축할 수 있습니다.
- 오래된 데이터를 삭제할 수 있습니다.
이 문제를 해결하고 극복할 수 있는 더 많은 가능한 방법을 제안해 주십시오.
이 문제에 대한 경험을 공유해 주시면 도움이 될 것입니다.
답변1
이러한 상황(무언가가 채워지는 상황)에 대한 나의 접근 방식은 먼저 범인을 찾는 것입니다.
사용법부터 시작해서 du -sh *|grep G
계속 진행했습니다 du -sh *|grep M
. 그것을 발견했을 때 나는 왜 무언가가 채워지기 시작했는지 조사하기 시작했습니다.
- 그렇게 높은 로그 수준이 필요합니까?
- 로그인 경우 - 홈브루 또는 사용자 정의 프로그램에도 logrotate(/etc/logrotate.d/)를 사용하십시오.
- 이것이 진짜 디스크 호그라면, 나는 그것을 자신의 LV로 분리해 볼 것입니다
따라서 현재 당사 서버의 표준 Linux 디스크 레이아웃은 다음과 같습니다.
- /var LV에는 2GB가 있습니다.
- /var/log LV 8GB
- /var/tmp LV 용량은 4GB입니다.
이는 현재 거의 모든 사용 사례에 충분합니다.
답변2
LVM이 아닌 파티션에서 비슷한 문제가 발생한 적이 있는데, 이 문제는 디렉토리 중 하나를 더 넓은 파티션으로 이동하고 다시 심볼릭 링크하여 해결했습니다. 예를 들어, 귀하의 경우 다음을 시도해 볼 수 있습니다.
mv /var/cache /more/spacious/partition/cache
ln -s /more/spacious/partition/cache /var/cache
저는 시스템 디렉터리가 아닌 디렉터리를 사용하여 이 작업을 수행하고 있으며 지금까지 어떤 나쁜 부작용도 관찰하지 못했습니다. 그러나 시스템 디렉터리의 경우 상황이 다를 수 있습니다. 확인/반박하려면 더 많은 지식을 갖춘 사람이 필요합니다.
편집하다
더 안전하려면 이렇게 할 수 있습니다
cp -a /var/cache /new/place/cache rm -rf /var/cache ln -s /new/place/cache /var/cache
mv
이렇게 하면 통화에 문제가 발생하는 경우(시스템 충돌, 정전 등) 캐시가 손실되지 않습니다.복사할 때 이 디렉토리에 아무 것도 기록되지 않도록 하려면 LiveCD를 통해 수행하는 것이 가장 좋습니다.
답변3
CIS 기준에서는 루트 파티션이 가득 차서 시스템이 정지되는 최악의 결과를 완화하기 위해 /home, /tmp 및 /var를 별도의 파티션에 배치해야 합니다.
처음부터 이를 채우는 데 도움이 되는 다른 솔루션이 있습니다. 물론 모니터링은 그 중 하나입니다.
echo -e '#!/bin/bash\nCURRENT=$(df / | grep / | awk '\''{ print $5}'\'' | sed '\''s/%//g'\'') ; THRESHOLD=95; if [ "$CURRENT" -gt "$THRESHOLD" ] ; then mail -s "Disk Space Alert Used: $CURRENT" $EMAIL <<< $(hostname -i; uname -a); fi' >> /etc/cron.hourly/check-space && chmod +x /etc/cron.hourly/check-space
채워지지 않도록 시스템 로그를 설정할 수도 있습니다.
echo 'SystemMaxUse=200M' >> /etc/systemd/journald.conf && systemctl restart rsyslog
고정 크기 varfile을 생성하여 /etc/fstab의 /var에 마운트할 수 있습니다. (
fallocate -l 600M /varfile && mkfs.ext4 /varfile
echo -e "/home/varfile /home/user1 ext4 defaults,nofail 0 2" >> /etc/fstab
덤프 없음, 먼저 파일 확인 우선 순위는 루트입니다.)
다음 명령을 사용하여 크기를 조정합니다.fallocate -l 200M /tmpfile && mount /tmpfile /tmp && resize2fs /dev/loop1
/home, /tmp 디렉터리를 이용하여 안전하게 파일 설치를 했으나, 첨부된 라이브 디스크를 사용하거나 루트를 마운트하지 않고 현재 내용을 설치 파일에 복사하는 방법을 찾지 못해 /var 테스트를 하지 않았습니다. 파일 시스템이 우수합니다. 로그가 사용 가능한 공간에 걸쳐 흐르도록 하고 필요한 모니터링을 얻는 것이 나에게는 더 나은 것처럼 보이지만 최소 서버보다 더 큰 VM의 경우 이를 다시 고려할 수 있습니다.
또한 개별 conf 파일의 maxsize를 사용하여 특정 로그 크기를 제한할 수 있습니다. 그러나 /var/lib의 apt 목록 및 clamav 정의와 /var/cache/apt/archives에 설치된 캐시 패키지와 같은 항목은 로그와 함께 증가합니다. 후자는 apt clean
정기적으로 사용되는 무인 업데이트 설정을 통해 제어할 수 있습니다.