디스크 사용량 혼동 : SSD의 Linux 홈 파티션에서 10G 누락


15

리눅스 민트는 622MB의 디스크 여유 공간이 있지만 몇 기가 바이트가 남아 있다고 말합니다.

파티션을 보면 사용하지 않은 약 10 기가 바이트가 있다고 들었습니다. 문제를 봤는데 해결책을 찾지 못했지만로 디스크 사용량을 확인해야한다는 힌트를 찾았습니다 df -h.

sudo df -h /home
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p8  189G  178G  622M 100% /home

출력은 나에게 어떤 의미하지 않습니다 차이 사이에 SizeUsed있다 11기가바이트을하지만, 단지 쇼 622M사용할 수있다.

SSD는 오래되지 않았으므로 그러한 불일치를 기대하지 않습니다.

어떻게해야합니까?


3
@ Kusalananda가 언급했듯이 10GB를 얻지 못하는 이유 (내 대답에서 올바르게 해결하기를 바랍니다)뿐만 아니라 / home에서 대부분의 공간을 사용하는 이유에 대해서도 의문을 제기해야합니다. 그 이유가 무엇인지 (예 : 많은 미디어 파일 등을 저장하는 것) 알면, 그렇지 않으면 10GB 이상의 공간 절약 효과를 제공하는 잠재적 인 정리로 걱정할 필요가 있습니다. 그래서 무엇입니까?
AB

“파티션을 보면 약 10 기가 바이트가 사용되지 않았다고 들었습니다.”— 어디에서 말했습니까?
ctrl-alt-delor 2016 년

2
@ ctrl-alt-delor from df출력-크기 : 189G, 사용 : 178G
billyjmc

@ ctrl-alt delor, billyjmc가 올바르게 추론 한 것처럼 gparted에서 10GB, df의 출력에서 ​​11G를 얻었습니다.
tobiornottobi 2016 년

답변:


22

파일 시스템이 ext4 인 경우 예약 된 블록이 있으며, 대부분 처리 및 조각화를 방지하고 루트 사용자 만 사용할 수 있습니다. 이 설정의 경우 tune2fs를 사용하여 실시간으로 변경할 수 있습니다 (파일 시스템이 마운트 될 때 모든 설정을 이와 같이 처리 할 수있는 것은 아님).

-m 예약 블록 백분율

권한있는 프로세스에 의해서만 할당 될 수있는 파일 시스템의 백분율을 설정하십시오. 권한있는 프로세스에서 사용하기 위해 일부 파일 시스템 블록을 예약하면 파일 시스템 조각화를 방지하고 권한이없는 프로세스가 파일 시스템에 쓰지 못하게 된 후 syslogd (8)와 같은 시스템 데몬이 계속 제대로 작동 할 수 있습니다. 일반적으로 예약 된 블록의 기본 백분율은 5 %입니다.

따라서 예약을 1 % (~ 2GB)로 낮추고 더 이상 예약 된 공간이 ~ 8GB에 액세스하지 않으려면 다음을 수행하십시오.

sudo tune2fs -m 1 /dev/nvme0n1p8

참고 :이 -m옵션은 실제로 10 진수를 매개 변수로 사용합니다. 당신은 사용할 수 있습니다 -m 0.1만 ~ 200메가바이트 (액세스 그 이전에 사용할 수없는 10기가바이트의 대부분)에 대해 예약 할 수 있습니다. -r대신 옵션을 사용하여 블록별로 직접 예약 할 수도 있습니다 . 0 개의 예약 된 블록을 갖지 않는 것이 좋습니다.


3
사용자가 8GB를 "복귀"하고 있지 않습니다. 지출액이 8GB 증가하고 있습니다. 모든 디스크 공간을 사용하고있는 내용을 추적 한 다음 적절한 경우 해당 디스크를 정리하거나 다른 곳으로 이동하거나 파티션을 늘리는 것이 좋습니다.
Kusalananda

1
@Kusalananda 나는 어휘를 바꿀 것이다. 사용법에 관해서는 OP의 피드백이 필요합니다. 이 질문은 사용량이 알려지지 않았으며 10GB 만 누락되었다는 것을 암시하지 않았습니다.
AB

1
매우 좋고 도움이되는 답변입니다. 감사합니다. 5 %는 누락 된 10 기가 바이트와 매우 일치하는 것으로 보입니다. 디스크 공간을 너무 많이 사용하는 것에 대해 걱정하지 않아도 파티션을 계속 늘릴 수 있습니다. :)
tobiornottobi 2016 년

4
당신의 대답은 확실히 맞지만이 경우 루트 예약 공간의 가치는 크지 않다는 점에 주목할 가치가 있습니다. 이것은 /home루트 공간을 확보하는 것이므로 파일 시스템의 다른 부분만큼 중요하지 않습니다 (예 : 시스템 로그를 계속 쓸 수 있도록). 또한 이것은 SSD이므로 조각화를 방지하는 것이 금속 디스크 회전에 우선 순위를 갖지 않을 수 있습니다.
marcelm 2016 년

@marcelm 그것은 나에게 의미가 있습니다. 그러나 SSD의 / home 파티션에서 여전히 유용합니까, 아니면 공간 낭비일까요? 루트 예약 공간을 1 %로 낮추시겠습니까?
tobiornottobi

8

삭제 된 파일은 "누락 된 공간"에 기여할 수도 있습니다.

lsof | grep deleted | grep /home

나를 위해이 출력을 반환

chrome    11181           criggie   15u      REG              254,0   
4194304  50651663 /home/criggie/.config/google-chrome/BrowserMetrics/BrowserMetrics-5D0236AF-2BAD.pma (deleted)

이는 PID 11181로 실행되는 Chrome이 해당 BrowserMetrics 파일을 연 다음 삭제했지만 파일 핸들이 열려 있음을 나타냅니다. 이는 파일이 디렉토리 목록에 보이지 않지만 여전히 디스크 공간을 차지하고 있음을 의미합니다.

프로그램이 왜 이것을 하는가? 실행중인 바이너리가 종료되면 OS는 열린 파일 핸들을 해제하고 오래된 파일을 남기지 않고 디스크의 파일을 제거합니다.

내가 볼 수없는 것은 파일의 디스크 사용량이 얼마나 큰지입니다.


2
잘 작성된 대부분의 프로그램은이 작업을 수행하지 않아야합니다. 그것은 버그이며,보고되어야합니다.이 모호한 버그의 대부분은 최적화 단계에 도달 할 때까지 실제로 나타나지 않으며 테스트 중 전혀 발견되지 않을 수도 있습니다. 그들이 이것을하는 특별한 이유가있을 수 있음을 명심하십시오. 여기서 손잡이를 오랫동안 열어 놓은 것에 대해 내가 알지 못하는 근거가있을 수 있습니다.
Drunken Code Monkey

4
@DrunkenCodeMonkey Dude-Chrome ... 당신은 완전히 정확합니다.
Criggie

4
@DrunkenCodeMonkey, 잘 작성된 많은 훌륭한 프로그램들이 이것을합니다. * nix에서 임시 파일을 생성하기위한 open-delete-close 패턴은 거의 보편적입니다. 파일이 종료되는 방식에 관계없이 프로그램이 종료 될 때 파일이 삭제되도록 보장합니다 : 정상적인 종료, 충돌, 메모리 부족으로 인해 종료, 종료 정전 등에 의해
Mark

3
@DrunkenCodeMonkey 따라서 프로그램을 수행 하지 않으면 어떻게 될까요?
leftaroundabout

3
@DrunkenCodeMonkey : 패턴이 open-delete- work -close입니다. 프로그램이 여전히 임시 파일의 내용으로 무언가를하고 있다면 (예를 들어, 온 디스크 캐시로 사용하거나 원격 측정 데이터를 파일에 기록) 물론 파일을 열어 두어야합니다. (물론, 이것은 실제로 프로그램이 닫았지만 닫히지 않은 부실한 닫히지 않은 파일 핸들 일 수도 있습니다. 그러나 그러한 파일이 하나 뿐이고 리소스 누출에 대한 다른 명백한 징후가없는 경우, 파일이 목적에 따라 열려 있다고 가정합니다.)
Ilmari Karonen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.