inode, 많은 작은 파일(xfs, btrfs, ext4)의 공간 소비 비교

inode, 많은 작은 파일(xfs, btrfs, ext4)의 공간 소비 비교

다음을 포함하는 ext4 파티션(VM의 LVM)이 있습니다.작은 파일이 많음, 3~4개월마다 연장해야 해요.

인덱스 노드가 사용하는 공간의 양과 관련하여.

xfs, btrfs 또는 ext4 파일 시스템 중 하나가 공간을 덜 사용합니까?

즉, btrfs 또는 xfs로 전환하면 ext4를 사용하는 것보다 파티션 채우기 inode가 느려지나요?

답변1

첫 번째 질문에 먼저 대답하려면 예, 파일 시스템 중 하나가 더 적은 공간을 사용합니다. 더 자세한 내용이 없더라도 구현 방식이 다르기 때문에 모두 정확히 동일한 양의 공간을 사용할 수는 없습니다. 따라서 다른 사람보다 공간을 적게 사용하게 됩니다.

Btrfs에는 동적 inode 할당이 있으므로 ext4의 inode 테이블처럼 채워지지 않습니다(해당 크기는 ext4 파일 시스템이 생성될 때 설정됩니다).

XFS도 비슷한 방식으로 동적이지만 제한(inode에 사용할 수 있는 파일 시스템의 백분율)이 있으므로 inode 할당량이 채워지는지 여부는 설정된 백분율과 파일 수/파일 크기에 따라 달라집니다.

답변2

내 생각에 당신이 겪고 있는 문제는 파티션 자체가 inode로 가득 차 있다는 것이 아니라 파일 시스템에 inode가 부족하다는 것입니다. ext4는 파일 시스템을 생성할 때 inode를 정적으로 예약하지만 다음을 사용하여 숫자를 설정할 수 있습니다.옵션mkfs.ext4:

-i inode당 바이트 수는
바이트/inode 비율을 지정합니다. mke2fs는 디스크의 각 inode 바이트 공간에 대해 inode를 생성합니다. inode당 바이트 비율이 높을수록 생성되는 inode 수가 줄어듭니다.

-N number-of-inode는
파일 시스템용으로 예약되어야 하는 inode 수의 기본 계산을 재정의합니다(inode당 블록 수와 바이트 수의 비율을 기준으로 함). 이를 통해 사용자는 원하는 inode 수를 직접 지정할 수 있습니다.

매뉴얼에는 FS가 생성된 후에는 inode당 바이트 비율을 변경할 수 없다고 명시되어 있지만, FS 크기를 조정하면 전체 비율이 비율에 맞게 조정됩니다.

설정할 수도 있습니다.크기인덱스 노드당. "대부분" 파일 시스템의 기본값은 256바이트이지만 128바이트("작은" 파일 시스템의 기본값)로 줄일 수 있습니다. 추가 공간은 확장된 속성(예: SELinux 태그)을 저장하는 데 사용되므로 이러한 속성이 필요하지 않은 경우 크기를 최소한으로 안전하게 줄일 수 있습니다.

-I inode-size는
각 inode의 크기를 바이트 단위로 지정합니다. inode-size 값은 128보다 크거나 같은 2의 거듭제곱이어야 합니다.

df -i할당 및 사용된 inode 수가 표시되어야 합니다. 기본 옵션을 사용하면 내가 본 30GB 파티션 하나에 16kB마다 inode가 있었지만 파일이 매우 작은 경우 -i 4096시스템의 모든 데이터 블록에 대해 inode를 갖도록 설정할 수 있습니다 .

파일이 4096보다 작은 경우 모든 일반 파일에는 전체 데이터 블록이 필요하므로 파일 시스템 블록 크기를 줄이는 것이 좋습니다. (즉, ext4에서. 현재 다른 파일 시스템이 작은 파일을 압축할지 여부는 알 수 없습니다.)

-b block-size는
블록 크기를 바이트 단위로 지정합니다. 유효한 블록 크기 값은 블록당 1024, 2048, 4096바이트입니다. 생략하면 블록 크기는 파일 시스템 크기와 파일 시스템의 예상 사용량에 따라 경험적으로 결정됩니다(-T 옵션 참조).

mkfs.ext4-T <type>일부 또는 전부를 약칭으로 사용하는 옵션 도 있습니다 . 설정은 /etc/mke2fs.conf내 Debian의 에 있습니다 . 예를 들어 mkfs.ext4 -T small다음과 같습니다.

mkfs.ext4 -b 1024 -I 128 -i 4096

이는 많은 작은 파일(및 xattrs 없음)에 대한 좋은 옵션 세트일 수 있습니다.

파일이 1kB보다 작은 경우 파일 시스템이 데이터를 저장하는 최선의 방법이 아닐 수 있지만 데이터베이스나 애플리케이션별 시스템과 같은 것을 고려해야 합니다.

답변3

예, 모든 것은 귀하의 필요에 따라 달라집니다.

Btrfs(Butter FS, Better FS 또는 B-Tree FS로 발음)

고려하면BTFS여러 개의 하드 드라이브를 확장할 수 있다는 점은 매우 좋은 점이며 일반 하드 드라이브보다 16배 더 많은 드라이브 공간을 지원할 수 있습니다.외부 4. btrfs 파일 시스템의 최대 파티션 크기는 16엑비바이트이고, 최대 파일 크기도 16엑비바이트입니다.

최대 파일 수: 2**64

XFS

이것XFS고성능 64비트 저널링 파일 시스템입니다. XFS는 64비트 파일 시스템에 대해 최대 8엑사바이트의 파일 시스템 크기를 지원합니다. 지금RHEL 7.0XFS를 사용한 파티셔닝 지원을 포함하여 XFS를 기본 파일 시스템으로 사용합니다 /boot.

최대 파일 수: 2**64

외부 4

이것외부 4ext3에 비해 속도가 향상된 것으로 알려져 있습니다. ext4에는 몇 가지 제한 사항이 있습니다. 최대 파일 크기는 16테비바이트(약 17.6TB)입니다. ext4가 가질 수 있는 최대 볼륨/파티션은 1엑사바이트입니다. 대부분의 최신 파일 시스템과 마찬가지로 저널링 파일 시스템입니다. 즉, 파일이 주로 디스크에 있는 위치와 디스크에서 발생하는 기타 변경 사항에 대한 로그를 유지합니다. 모든 기능에 관계없이 투명한 압축, 투명한 암호화 또는 중복 제거를 지원하지 않습니다. 스냅샷은 기술적으로 지원되지만 기능은 기껏해야 실험적입니다.

최대 파일 수: 40억

XFS 및 Btrfs

XFS에는 RAID가 없으며 Btrfs RAID는 아직 완전히 안정적이지 않으며 초기 단계에 있습니다.XFS지금보다 더 성숙해지고BTRFS하지만 Btrfs가 강력하고 잘 개발된 파일 시스템이라는 점은 부인할 수 없습니다.

현재는 Btrfs가 꼭 필요한 경우가 아니면 XFS를 선택합니다. 특히 XFS가 RHEL 7의 기본 FS이기 때문에 더욱 그렇습니다.

관련 정보