ext4 파일 시스템에서 inode 수를 늘리는 방법은 무엇입니까?

ext4 파일 시스템에서 inode 수를 늘리는 방법은 무엇입니까?

지난 주에 나는 (나에게 새로운) 문제에 직면했습니다. 저는 ext4(Fedora 15) 파일 시스템을 사용하고 있습니다. 서버에서 실행 중인 애플리케이션이 갑자기 중지되었습니다. 얼핏 보면 문제가 발견되지 않습니다.

df50%의 여유 공간이 표시됩니다. 약 한 시간 동안 검색한 후 누군가가 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 -sfind | 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를 시도 하고 반복하십시오.

전체 공개: 모든 운영 체제가 --inodesdu 명령을 지원하는 것은 아니지만(내 Mac OS는 지원하지 않음) 많은 Linux 운영 체제에서는 지원합니다.

관련 정보