지난 주에 나는 (나에게 새로운) 문제에 직면했습니다. 저는 ext4(Fedora 15) 파일 시스템을 사용하고 있습니다. 서버에서 실행 중인 애플리케이션이 갑자기 중지되었습니다. 얼핏 보면 문제가 발견되지 않습니다.
df
50%의 여유 공간이 표시됩니다. 약 한 시간 동안 검색한 후 누군가가 df -i
. 옵션을 사용하여 inode 사용법을 찾은 포럼 게시물을 발견했습니다 . 시스템에 inode가 없습니다. 이는 제가 인식하지 못하는 간단한 문제입니다. 이 파티션에는 320만 개의 인덱스 노드만 있습니다.
이제 내 질문은: 시스템에 더 많은 inode를 갖도록 할 수 있습니까? 디스크를 포맷할 때 이를 설정해야 합니까/설정할 수 있습니까? 3.2M inode를 사용하여 몇 개의 파일을 가질 수 있습니까?
답변1
평소 예상했던 것보다 더 많은 파일이 있는 것 같습니다.
inode 테이블 크기를 동적으로 변경하는 방법이 있는지 모르겠습니다. 죄송하지만 데이터를 백업하고 새 파일 시스템을 생성하고 데이터를 복원해야 합니다.
이렇게 큰 inode 테이블을 사용하여 새 파일 시스템을 생성하려면 mke2fs(8)의 "-N" 옵션을 사용해야 합니다.
inode 수를 추정할 수 있도록 "-n" 옵션을 먼저 사용하는 것이 좋습니다(파일 시스템을 생성하지는 않지만 유용한 정보를 표시함). 그런 다음 필요한 경우 "-N"을 사용하여 특정 inode 번호를 가진 파일 시스템을 만듭니다.
답변2
320만 개의 inode를 사용하면 총 320만 개의 파일과 디렉터리를 가질 수 있습니다(그러나 파일에 대한 여러 하드 링크는 하나의 inode만 사용합니다).
예, 파티션에 파일 시스템을 생성할 때 설정할 수 있습니다. 옵션 -T usage-type
, -N number-of-inodes
또는 -i bytes-per-inode
는 inode 수를 설정할 수 있습니다. 나는 보통 파일 모음의 합계와 같은 출력을 비교하고 -i
약간의 여유를 허용한 후 를 사용합니다.du -s
find | wc -l
아니요. 기존 파일 시스템에서는 변경할 수 없습니다. 하지만:
- LVM을 실행 중이거나 파일 시스템이 SAN의 LUN에 있거나(LUN에 직접 또는 LUN의 마지막 파티션으로) 파티션을 나눈 후 디스크에 여유 공간이 있는 경우 파티션을 더 크게 만들 수 있습니다. 그런 다음 이를 사용하여
resize2fs
파일 시스템을 확장합니다. 이렇게 하면 추가된 공간에 대략 비례하여 더 많은 인덱스 노드가 추가됩니다. 공간이 확보되기 전에 inode가 부족해지는 것을 방지하려면 향후 평균 파일 크기가 거의 같다고 가정하고tune2fs -m
. - 공간이 충분하고 파일 시스템을 오프라인으로 전환할 수 있는 경우 오프라인으로 전환하고 더 많은 inode를 포함하는 새 파일 시스템을 생성한 다음 모든 파일을 복사합니다.
- 파일의 하위 집합만 많은 수의 inode를 사용하고 여유 공간이 충분한 경우 파일 시스템의 파일이 지원하는 루프 장치에 파일 시스템을 만들고 더 많은 inode(및 더 작은 블록)가 있는 파일 시스템을 만들고 문제가 있는 디렉터리를 해당 디렉터리로 이동합니다. 이는 성능에 영향을 미치고 유지 관리 문제를 야기할 수 있지만 대안입니다.
- 물론, 원하지 않는 파일을 많이 삭제할 수 있다면 도움이 될 것입니다.
답변3
또 다른 해결 방법으로, 많은 수의 파일을 압축되지 않은(!) tar
아카이브에 압축한 다음 archivemount
파일 시스템으로 마운트하는 것을 고려해 볼 것을 제안합니다. tar 아카이브는 파일 시스템 이미지보다 공유에 더 적합하며 클라우드나 기타 스토리지에 백업할 때 유사한 성능을 제공합니다.
컬렉션이 읽기 전용이어야 하는 경우 squashfs
옵션일 수 있지만 커널에서 일부 옵션을 활성화해야 하며 xz
동일한 성능으로 tar를 사용하여 압축도 가능합니다.
답변4
du -s --inodes * 2>/dev/null |sort -g
출력의 마지막 디렉토리로 cd를 시도 하고 반복하십시오.
전체 공개: 모든 운영 체제가 --inodes
du 명령을 지원하는 것은 아니지만(내 Mac OS는 지원하지 않음) 많은 Linux 운영 체제에서는 지원합니다.