디스크 사용량 혼동 : 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

출력은 나에게 어떤 의미하지 않습니다 차이 사이에 Size와 Used있다 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.