이 여유 공간의 끊임없는 손실을 어떻게 막을 수 있습니까?


15

나는 갑자기 1.2GB의 여유 공간 만 남았다는 대화 상자를 받았을 때 우분투를 정상적으로 실행하고있었습니다. 한 시간 전에는 30GB의 여유 공간이있었습니다.

일부 내용을 삭제하고 여유 공간을 최대 25GB까지 가져 왔습니다. 그러나 계속 감소하고 있습니다. 오래된 로그 파일을 제거하고 로그 파일 등을 자르려고 시도했지만 계속 감소합니다!

디스크 분석기를 사용 하여이 모든 여유 공간 손실이 어디에서 왔으며 작동하지 않는지 찾기 위해 모든 것을 보여주었습니다. 나는 재부팅했고 결국 Ubuntu는 디스크 공간을 확보하여 여유 공간을 최대 40GB로 되돌 렸지만 여전히 하루에 약 10GB가 계속 감소합니다. 공간을 확보 할 수있는 새로운 방법을 계속 찾고 있지만, 디스크 공간을 줄이는 자동화 된 프로세스와 마찬가지로 중단 할 수 없습니다.

어떻게해야할지 모르겠습니다. 원인을 찾고 여유 공간이 줄어들지 않도록하려면 어떻게해야합니까?

출력은 다음과 같습니다 sudo du -sh /var/* ~/.xsession-errors.

13M /var/backups
204M    /var/cache
112M    /var/crash
4.0K    /var/games
503M    /var/lib
4.0K    /var/local
0       /var/lock
9.5G    /var/log
85M     /var/mail
4.0K    /var/metrics
24K     /var/opt
0       /var/run
1.7M    /var/spool
391M    /var/tmp
11G     /var/tvmobili
20K     /var/www
224K    /home/school/.xsession-errors

2
게시물을 편집하여 출력 내용을 추가 할 수 있습니까 sudo du -sh /var/* ~/.xsession-errors? (어리석은 것이 있으면 폭발 할 것으로 예상되는 두 곳). 그렇지 않으면 Eliah와 함께 있습니다. 디스크 문제를 나타냅니다. 이것을 진지하게 받아들이십시오.
Oli

답변:


26

제어 할 수없는 로그가 있습니다. 매일 미친 듯이 삭제하는 대신 빠르게 증가하는 파일을 찾아 내부를 조사하여 원인을 조사하십시오. 어쩌면 일부 프로그램이 루프 로깅 상태에서 회전하고 있습니다. 해당 프로그램을 비활성화하거나 로깅을 비활성화하거나 문제가되는 조건을 수정하십시오.

파일이 눈앞에서 커지고 있고 어떤 프로그램이 파일을 작성하고 있는지 모를 경우 쉽게 찾을 수 있습니다. 다음은 예입니다. 누가 /var/log/syslog열었습니까? 우리는 다음 fuser명령을 사용합니다 .

# fuser /var/log/syslog
/var/log/syslog:      602

하나의 프로세스 만 /var/log/syslog열려 있습니다. 프로세스 602입니다. 무엇입니까? psand로 귀찮게하지 말고 파일 시스템을 직접 grep살펴 보자 /proc.

# ls -l /proc/602/exe
lrwxrwxrwx 1 root root 0 Mar 29 17:45 /proc/602/exe -> /usr/sbin/rsyslogd

아하 rsyslogd. 우리 rsyslogd/var/log/syslog/열린 것이 놀랍지 않습니다 .

이 방법은 작동하지 않을 수 있습니다. 그 이유는 프로그램이 파일을 쓰기 위해 파일을 열어 둘 필요가 없기 때문입니다. 파일을 열고 추가 한 후 닫는 프로세스가 있다고 가정하십시오. 좀 더 어려운 조사가있을 것입니다. fuser우연히 "빨간 손"프로세스를 잡을 때까지 여러 번 실행할 수 있습니다 . 그 과정 자체가 빠르게 존재하고 사라질 수 있습니다. 또 다른 문제는 여러 프로세스가 파일을 열 수는 있지만 하나만 커지게한다는 것입니다. 이 경우 시스템 호출을 추적 할 수 있습니다.

# fuser /var/log/huge-annoying-file
/var/log/huge-annoying-file:   1234 23459

죄송합니다! 1234와 23459의 두 가지 프로세스가 열려 있습니다. 그들이하는 일을 봅시다 :

# strace -p 1234
Process 1234 attached - interrupt to quit
select(1, NULL, NULL, NULL, {9, 922666}

아무것도하지 않고 select전화로 차단 합니다. Ctrl-C를 사용하여 추적을 중단하십시오.

select(1, NULL, NULL, NULL, {9, 922666}^C <unfinished ...>

다음을 확인하십시오.

# strace -p 23459
write(5, "Useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
^C

죄송합니다. 계속 쓰고 있습니다. 나쁜 것이어야합니다. 프로세스가 작성하는 파일 디스크립터 5가 실제로 큰 파일인지 확인할 수 있습니다.

# ls -l /proc/23459/fd/5
lr-x------ 1 root root 64 Apr  3 23:39 /proc/23459/fd/5 -> /var/log/huge-annoying-file

파일 시스템이 손상되었다고 생각하지는 않지만 완전히 검사하기 위해 DVD를 부팅 할 필요는 없습니다.

먼저 파일 시스템의 최대 마운트 수 설정을 검토하십시오. df 명령을 사용하여 파티션을 식별하십시오. 우분투 시스템의 예는 다음과 같습니다.

# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1       18062108 5499320  11645284  33% /
udev              392152       4    392148   1% /dev
tmpfs             159768     768    159000   1% /run
none                5120       0      5120   0% /run/lock
none              399416     200    399216   1% /run/shm
/dev/sr0           43668   43668         0 100% /media/VBOXADDITIONS_4.1.4_74291

/파일 시스템이에 마운트되어 있음을 알 수 있습니다 /dev/sda1. /dev/sda1루트 파티션 (이 특정 시스템의 유일한 파티션)의 저장 장치도 마찬가지 입니다.

해당 파일 시스템의 일부 속성을 살펴 보겠습니다. 마운트되어 있어도 안전합니다. 이 명령은 많은 출력을 뿜어냅니다. 발췌문은 다음과 같습니다.

$ dumpe2fs /dev/sda1
dumpe2fs 1.42 (29-Nov-2011)
Filesystem volume name:   <none>
Last mounted on:          /
[ ... SNIP ... ]
Last mount time:          Fri Mar 29 17:45:18 2013
Last write time:          Tue Mar  5 09:08:03 2013
Mount count:              22
Maximum mount count:      22
[ ... SNIP ... ]

이봐, 마운트 수는 최대 마운트 수와 같습니다. 다음에 다시 부팅하면 파일 시스템 검사가 수행됩니다. 중요한 것은 마운트 횟수가 양수라는 것입니다. 0이 아닌 경우을 사용하여 22와 같은 양수 값으로 변경하십시오 tune2fs -c 22 /dev/whatever. 0은 파티션이 마운트 된 횟수에 관계없이 검사가 강제로 수행되지 않음을 의미합니다. 드물게 재부팅 된 시스템은이 값이 낮아야합니다. 1 년에 한 번 다운되는 서버는 재부팅 할 때마다 fsck를 사용할 수 있습니다. 날짜 기반 확인 간격도 설정할 수 있습니다.

이제 검사를 강제로 수행하기 위해 실제 개수를 최대 값 이상으로 재정의 한 다음 다시 부팅 할 수 있습니다. 그것은 자본으로 이루어집니다 C: tune2fs -C 1234 /dev/whatever. 이제 파티션은 검사없이 1234 번 마운트 된 것으로 보이며 최대 한 자릿수 또는 두 자릿수보다 큽니다.


매우 유익하지만 문제가 해결되었습니다. 방대한 로그 파일을 작성하는 방화벽이었습니다
askcompu

2
내가 의심 한대로보십시오. 신비한 디스크 손상이 공간을 위아래로 막지 않습니다. 그것은 고립 된 사건을 설명 할 수 있지만 일단 수리되면 수리해야합니다. 드라이브가 고장 나면 커널 로그 및 패닉에 약간의 오류가 발생할 수 있습니다.
Kaz

그래 내가 SMART 테스트는 오래된 드라이브하지만 여전히 작동하고 작업을 말한다,이 드라이브를 않네 생각
askcompu

모든 파일 시스템을 fsck하는 쉬운 방법은 'sudo touch / forcefsck; sudo / sbin / shutdown -r now '를 입력하십시오.
Blair Zajac

3

디스크 검사로 일부 공간이 확보되어이 문제 (또는 그 일부)가 파일 시스템 손상으로 인한 것일 수 있습니다. 이 경우 파일 시스템을 스캔하고 복구하여 더 많은 공간을 확보 할 수 있어야합니다. 그러나 손상이 영구적으로 발생하는 경우 (그렇거나 그렇지 않을 수 있음) 이는 일반적으로 하드 드라이브가 죽고 있음을 의미합니다. 백업 (문서 및 교체하기 어려운 다른 중요한 파일)이 완전히 최신 상태가 아닌 경우 지금 중요한 모든 것을 백업하십시오!

디스크 를 확인 하고 복구하기 위해 디스크를 마운트 할 수 없습니다 (적어도 읽기 / 쓰기가 아님). 따라서 라이브 환경 (라이브 CD / DVD 또는 USB)에서 복구 유틸리티를 실행해야합니다. 먼저 파일이 들어있는 파티션의 장치 이름을 찾아야합니다.

따라서 설치된 시스템 에서 다음을 실행하십시오.

mount | grep ' on / '

( /와 사이에 공백을 포함해야합니다 '.)

당신은 다음과 같은 것을 얻을 것입니다 :

/dev/sda8 on / type ext4 (rw,errors=remount-ro)

on내 컴퓨터의 예에서 앞의 텍스트 는 /dev/sda8루트 파티션의 전체 장치 이름입니다 ( /). 이것을 적어 두십시오 – 필요할 것입니다.

그런 다음 원래 Ubuntu를 설치하는 데 사용한 것과 같은 Ubuntu 데스크탑 CD / DVD 또는 USB 플래시 드라이브에서 컴퓨터를 부팅하십시오. (이것이 Windows 설치 프로그램과 함께 설치된 Wubi 시스템 인 경우 알려주십시오. 신고 한 내용이 있다고 생각하지는 않지만 그 경우에는 절차가 다릅니다.)

선택 설치하지 않고 우분투를보십시오 (안 우분투를 설치하십시오 ). 작동하는 데스크탑이 나타나면 Ctrl+ Alt+ T를 눌러 터미널 창을 엽니 다. 그런 다음이 명령을 실행하십시오.

sudo e2fsck -fkccp /dev/sda8

그러나 위에서 설명한 방법을 통해 얻은대로 파티션 /dev/sda8의 올바른 전체 장치 이름 으로 바꾸 십시오 /.

시간이 걸릴 수 있습니다. c는 오류 디스크의 표면뿐만 아니라 파일 시스템을 스캔 (그들이 사용되지 않도록 불량으로 불량 영역을 표시하는) 원인이 명령에 포함 된 옵션을 제공합니다. 원하는 cc경우 나갈 수 있지만 (그렇다면 나갈 수도 있음 k) 보관하는 것이 좋습니다.

문제 e2fsck를 해결하려고하면 데이터가 손실 될 수 있다고 생각 되면 특정 문제를 해결하라는 메시지가 표시 될 수 있습니다. (이는 p합병증을 유발하지 않고 해결할 수 있다고 확신하는 모든 문제를 해결하도록 만듭니다.)

어쨌든 백업이 최신 상태인지 확인한 후에 만 수행해야 하므로 원하는 것을 수정하도록 강하게 기울이는 것이 좋습니다 . 당신이 메시지를 표시하지 않고 잠재적으로 위험한 수정을 시도 할 경우, 교체 p와 함께 y.

그런 다음 Ubuntu 시스템으로 다시 부팅하여 여유 공간이 있는지 확인하십시오. 그렇지 않은 경우 또는 문제가 계속되면 질문을 주석 처리하고 자세한 내용을 제공하도록 질문을 편집하십시오.


백업 할 것이 없으면 어떻게합니까?
askcompu

1
@ user2045360 도둑질, 약탈, 빌리기 또는 구매하기. 또는 온라인으로 푸시하십시오 (Ubuntu One, Dropbox, Google Docs, S3 등).
Oli

@ user2045360 필요한 파일 수와 종류에 따라 다릅니다. 20 개의 사무실 문서 (또는 환자의 경우 100 개)로 구성되어 있으면 자신에게 이메일로 보낼 수 있습니다. Ubuntu One 또는 DropBox와 같은 클라우드 스토리지 서비스를 사용할 수도 있습니다 (주의 사항-동기화하도록 설정 한 파일이 컴퓨터에서 파일을 삭제 또는 변경하는 경우 클라우드에서도 동일한 변경 사항이 발생 함). 반면에 영화 제작자이고 300 기가 바이트의 푸티지를 가진 경우 유일한 옵션은 외장 하드 드라이브와 같은 일부 저장 미디어를 구매 (또는 Oli가 제안한대로 빌리는 것)하는 것입니다.
Eliah Kagan

돈이없고 빌릴 사람이 없습니다.이 명령으로 데이터가 손실 될 가능성은 얼마나됩니까?
askcompu

@ user2045360 명령을받은 데이터가 손실 될 가능성 e2fsck은 매우 낮습니다. 특히 y데이터를 잃을 수 있다고 경고하는 내용을 누르지 않을 경우 특히 그렇습니다 . 그러나 해당 명령을 실행한다고해서 데이터를 백업해야하는 것은 아닙니다. 여유 공간의 급격한 감소로 인해 하드 드라이브가 물리적 으로 완전히 고장날 수 있으므로 데이터를 백업해야합니다 . 이 경우 데이터가 손실되어 복구 할 수 없습니다. 백업하는 다른 방법으로는 네트워크를 통해 다른 컴퓨터 나 CD / DVD에 연결할 수 있습니다.
Eliah Kagan

0

이 문제는 많은 로그와 tvmobili 인코딩 파일을 작성하는 방화벽이었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.