Linux에서 "장치에 남은 공간 없음" 오류를 해결하는 3가지 방법


명확한 원인이 없는 오류는 처리하기 가장 짜증나는 문제입니다. Linux는 일반적으로 오류 메시지를 구체적으로 표시하지만 이는 Linux가 실패하는 몇 안 되는 경우 중 하나입니다.

'장치에 남은 공간 없음 오류'가 표시되는 것은 특히 드라이브가 가득 차지 않은 경우 거의 설명이 되지 않습니다. 이 오류 메시지가 나타나는 이유는 무엇입니까? 디스크 공간이 충분함에도 불구하고 새 파일을 생성할 수 없는 이유는 무엇입니까? 그리고 가장 중요한 것은 어떻게 고치나요?

알아보겠습니다.

하드 드라이브에 실제로 충분한 공간이 있나요?

급히 해결책을 찾기 전에 먼저 문제가 있는지 확인하세요. 결국 시스템의 디스크 공간이 실제로 부족하더라도 당황할 필요가 없습니다. 불필요한 데이터를 제거하여 더 많은 공간을 확보할 수 있습니다.

디스크 공간에 대한 정보를 가져오는 두 가지 Linux 시스템 명령(du 및 df)이 있습니다. du 명령은 디스크 공간 사용량을 추정하고, df 명령은 디스크에 있는 여유 공간을 분석합니다. sudo 과 함께 사용하면 디스크에서 실제로 사용 가능한 공간이 얼마나 되는지 정확하게 보고할 수 있습니다.

  1. du 명령부터 시작해 보겠습니다. 그 출력은 다소 길고 처리하기 번거로울 수 있으므로 -s 및 -h 플래그를 사용합니다. -s는 결과를 요약하고, -h는 사람이 읽을 수 있도록 보장합니다. 따라서 sudo du -sh /명령을 입력하세요. 여기서 /은 기본 디렉터리를 가리킵니다.
    1. 모든 권한 거부 메시지에 대해 걱정하지 마세요. 이것이 시스템의 모든 하위 디렉터리를 검색하는 방법입니다. 드라이브의 크기에 따라 모든 것을 재귀적으로 진행하므로 잠시 동안 실행 상태로 두어야 할 수도 있습니다.
      1. du가 스캔을 마치면 크기와 함께 간단한 디렉터리 목록을 출력합니다. 예를 들어, 이것은 일반 디렉터리에 적용된 du 명령의 출력입니다.
      2. 이제 df를 사용하여 사용 가능한 여유 공간이 얼마나 되는지 확인하겠습니다. df 명령은 마운트된 파일 시스템과 해당 사용 통계만 표시하므로 사용하기가 훨씬 간단합니다. 다시 한 번 -h 플래그를 사용하여 출력을 사람이 읽을 수 있도록 만듭니다.

        sudo df -h .

        du 및 df 명령의 결과를 집계하는 것이 아이디어입니다. 불일치는 파일이나 폴더에서 사용되지 않음에도 불구하고 자유롭게 사용할 수 없는 디스크 공간을 나타냅니다.

        Linux에 "기기에 남은 공간 없음"이 표시되는 이유는 무엇입니까?

        디스크에 충분한 여유 공간이 있음에도 불구하고 '기기에 남은 공간이 없습니다' 오류 메시지가 표시되는 경우 하드웨어에 문제가 있는 것이 아닙니다. 오류의 정확한 원인을 파악하려면 약간의 문제 해결이 필요할 수 있습니다.

        • 최근 삭제된 파일: 이 오류가 표시되는 가장 일반적인 이유는 최근 삭제된 파일입니다. 프로세스가 파일을 사용하고 있는 동안 파일이 삭제되는 경우가 종종 있으며, 파일이 이미 없어진 경우에도 공간을 예약된 상태로 유지합니다.
        • Inode가 충분하지 않음: 또 다른 빈번한 원인은 아이노드 이 충분하지 않기 때문입니다. Inode는 Unix 파일 시스템의 인덱스 페이지로, 스토리지에 있는 모든 파일의 메타데이터를 보유합니다. 그러나 inode는 무제한이 아니며 저장 공간이 확보되기 전에 inode가 부족해지면 '기기에 남은 공간이 없습니다.' 오류가 발생할 수 있습니다.
        • 하드 드라이브 오류: 물론 하드 드라이브에 오류가 발생하여 명백한 여유 공간의 대부분이 불량 섹터로 채워졌을 가능성도 있습니다. 시스템이 이 위치에 파일을 쓰지 못하기 때문에 오류가 발생합니다.
        • 수정 1: 삭제된 파일을 사용하여 프로세스 다시 시작

          '기기에 남은 공간이 없습니다' 오류의 가장 가능성 있는 원인은 삭제된 파일을 계속 사용하는 프로세스입니다. 다행히도 이 오류를 수정하는 것은 쉽습니다. 예약된 저장용량을 확보하려면 프로세스를 다시 시작하세요 만 하면 됩니다.

          1. 문제가 있는 프로세스를 찾으려면 lsof 및 grep 명령을 사용해야 합니다. lsof 명령은 실행 중인 프로세스에서 사용 중인 열려 있는 모든 파일 목록을 제공하며, grep은 삭제된 파일로 선택 범위를 좁힐 수 있습니다. 따라서 sudo lsof / |를 입력하세요. grep 삭제됨여기서 /는 기본 디렉토리이고 | lsof의 출력을 grep에 연결하기 위한 파이프.
            1. 이제 sudo systemctl restart service_name명령을 사용하여 영향을 받는 프로세스를 다시 시작할 수 있습니다. 여기서 서비스 이름은 검색에 나타난 서비스의 이름입니다.
            2. .
              1. 이와 같은 프로세스가 여러 개 있거나 특정 서비스를 찾는 데 방해가 되고 싶지 않다면 sudo systemctl daemon-reload명령을 사용하여 모두 재설정하면 됩니다. 이는 파일 시스템의 모든 변경 사항을 고려하여 모든 종속성을 재생성합니다.
              2. 이후에는 프로세스가 점유하고 있던 저장 공간을 다시 사용할 수 있게 되어 오류 없이 파일을 쓸 수 있게 됩니다.

                수정 2: Inode 확인

                각 드라이브에는 많은 수의 inode가 있지만 그 수는 유한합니다. 그리고 시스템이 엄청난 수의 파일로 가득 차 있는 경우 드라이브의 저장 용량이 소진되기 전에 이 제한에 도달할 수 있습니다. 그렇기 때문에 작은 파일을 너무 많이 보유하는 것보다 큰 파일을 보유하는 것이 더 좋습니다.

                df 명령에 -i 플래그를 사용하면 inode의 가용성을 쉽게 확인할 수 있습니다. 다음과 같습니다:

                sudo df -i

                이것은 현재 사용 중인 양과 함께 파일 시스템에 있는 총 inode 수를 명확하게 알려줍니다. 시스템에 남은 여유 inode가 없는 경우 '기기에 남은 공간 없음' 오류가 발생합니다.

                inode는 드라이브를 처음 포맷할 때만 생성되므로 더 많은 inode를 생성할 수 있는 방법이 없습니다. 당신이 할 수 있는 일은 불필요한 파일을 삭제하여 향후 파일을 위한 inode를 확보하는 것뿐입니다.

                수정 3: 불량 블록 표시

                데이터 손상은 모든 하드 드라이브에서 피할 수 없는 운명입니다. 새 드라이브에서는 이 문제가 발생하지 않지만 오래된 하드 디스크는 점차 "불량"이 발생하기 시작합니다.

                이는 파일 시스템이 여전히 작동한다고 간주하더라도 하드 드라이브의 일부가 사용할 수 없게 된다는 것을 의미합니다. 이러한 불량 블록은 실제로는 파일을 쓸 수 없는데도 드라이브의 사용 가능한 공간을 거짓으로 부풀립니다. 운영 체제가 이러한 위치에 데이터를 저장하려고 시도했지만 실패하므로 '기기에 남은 공간이 없습니다' 오류가 발생합니다.

                불량 섹터는 하드 드라이브의 물리적 마모로 인해 발생하므로 이 문제를 실제로 해결할 방법이 없습니다. 할 수 있는 유일한 일은 불량 섹터를 표시하여 파일 시스템에서 더 이상 참조하지 않도록 하는 것입니다..

                이 작업을 수행하려면 라이브 CD 에서 부팅해야 합니다. 실행 중인 드라이브 내에서는 파일 시스템 검사를 수행할 수 없기 때문입니다. 그런 다음 다음 명령을 사용하세요:

                sudo fsck -vcck /dev/sda

                이렇게 하면 /dev/sda가 복구하려는 드라이브 경로로 대체됩니다. 그러면 드라이브의 모든 불량 블록이 자동으로 감지되어 사용할 수 없는 것으로 표시됩니다. 하지만 추가 저장 용량은 제공되지 않으므로 불필요한 파일을 정리하여 드라이브 공간을 확보할 준비를 하세요.

                '기기에 남은 공간이 없습니다' 오류를 해결하는 가장 좋은 방법은 무엇입니까?

                Ubuntu 또는 기타 Linux 배포판에서 '기기에 남은 공간 없음' 오류가 표시되는 일반적인 이유는 삭제된 파일이 실행 중인 프로세스에서 계속 사용되고 있기 때문입니다. 이는 파일이 차지했던 저장 공간을 예약하여 다른 작업이 해당 공간에 데이터를 쓰는 것을 방지합니다.

                이 문제를 해결하는 것이 가장 쉬운 방법이기도 합니다. 문제의 프로세스를 다시 시작하기만 하면 되기 때문입니다. 그러나 오류의 다른 원인은 해결하기가 쉽지 않습니다.

                드라이브에 잘못된 데이터 블록이 있거나 inode가 부족하더라도 이러한 문제를 직접 해결할 수 있는 방법은 없습니다. 새 데이터를 쓸 공간을 확보하려면 기존 파일을 삭제해야 합니다.

                .

                관련 게시물:


                30.08.2022