tar는 열 수 없다고 말합니다: 장치에 남은 공간이 없지만 df -h 및 df -i 모두 사용 가능한 공간이 매우 크다는 것을 보여줍니다.

tar는 열 수 없다고 말합니다: 장치에 남은 공간이 없지만 df -h 및 df -i 모두 사용 가능한 공간이 매우 크다는 것을 보여줍니다.

수백만 개의 작은 파일을 포함하여 약 100개의 .tar 파일이 있습니다. Linux의 디렉토리에 추출하고 싶습니다.

이러한 .tar 파일은 설치된 LVM EXT4 파일 시스템에 있습니다. 하지만 마운트된 FS에 압축을 풀든 루트 디렉터리에 압축을 풀든 tar는 장치에 공간이 없다고 말합니다.

그런데 df -h, df -i로 남은 공간을 확인해 보니 아직 많이 남아있습니다(내 루트 디렉터리에 700G, 마운트된 FS에 30T).

그렇다면 여기서 무엇이 문제가 될 수 있습니까?

결과 df -hdf -ih df -h의 결과 df -ih의 결과

답변1

~에 따르면이 블로그 항목, 저자는 large_dir파일 시스템 옵션이 활성화되지 않은 경우 최대 일반 ext4 디렉토리 크기는 약 1천만 개 파일이라고 추정합니다.

생각하다,완전히 가설은 아님, 어느 날 다음과 같은 (Linux) 커널 로그 메시지를 발견했습니다.

EXT4-fs 경고(장치 md1): ext4_dx_add_entry:2461: 디렉터리(ino:102236164) 인덱스가 가득 참, 최대 htree 수준에 도달함: 2 EXT4-fs 경고(장치 md1): ext4_dx_add_entry:2465: 이 파일 시스템에서는 큰 디렉터리가 활성화되지 않습니다. 기능

어떤 의미에서는 축하드립니다. 논리적으로 말하면 디렉터리에 너무 많은 파일이 축적되어 가득 차 있습니다. 불행하게도 파일을 생성하려는 추가 시도는 실패합니다. 실제로는 이미 실패했습니다. 오류 메시지가 표시되었기 때문입니다. 운이 좋다면 소프트웨어에서 오류 메시지를 기록하고 이를 확인할 수 있습니다. 또한 디렉터리가 너무 커지기 때문에 불쾌한 놀라움을 겪을 수도 있습니다.

(여기서 "대형"은 상대적입니다. "ls -lh" 보고서에 따르면 이것이 발생하는 디렉터리는 약 575MB에 불과합니다. 이는 디렉터리의 경우 매우 크지만 최신 파일의 경우 그렇게 크지 않습니다. 전체 파일 시스템에는 여유 공간이 많습니다).

dmesg다음을 사용하여 커널 로그를 살펴보는 것이 좋습니다.2fs 조정옵션이 있습니다 -O large_dir.

답변2

디스크 공간은 충분하지만 디스크에 있는 파일 수가 많아 파일 시스템이 수용할 수 있는 최대 개수에 도달했습니다.

df -ih사용된 inode 비율을 보려면 실행하세요 . 아마도 100%일까요?
원천

관련 정보