Linux에서 ext-filesystem이 자체적으로 더 적은 공간을 사용하도록 하는 방법이 있습니까?

Linux에서 ext-filesystem이 자체적으로 더 적은 공간을 사용하도록 하는 방법이 있습니까?

Linux 시스템에서 사용하는 외부 및 내부 HDD가 많이 있습니다. 저는 Linux 시스템만 가지고 있으므로 Linux 파일 시스템을 사용하는 것이 합리적일 것입니다. 그렇죠? 그러나 저는 현재 HDD 중에서 가장 유용한 공간을 제공하기 때문에 어디에서나 NTFS를 사용하고 있습니다.

하지만 지금은 Linux 파일 시스템으로 전환하고 싶습니다. 대부분 권한과 호환성 때문입니다(예: Linux에서 LUKS 암호화된 NTFS 파티션의 크기를 조정할 수 없고 Windows에서 계속 chkdsk하라는 메시지가 표시됩니다).

그러나 HDD를 포맷할 때 다양한 파일 시스템과 모든 Linux 파일 시스템을 시험해 보았습니다. 심지어 제가 아는 한 저널링이 없는 ext2도 자체적으로 많은 공간을 사용했습니다. 정확한 값은 기억나지 않지만 NTFS가 2TB HDD에서 더 많은 것을 얻을 수 있었던 것은 100GB가 넘었습니다.

그래서 내 질문은: 외부 파일 시스템이 스스로 공간을 덜 사용하도록 하는 방법이 있습니까? 아니면 완벽한 Linux 지원과 뛰어난 사용 공간을 갖춘 또 다른 파일 시스템(ext2, ext3, ext4, NTFS 및 vfat를 사용해 보았지만 NTFS가 제공한 사용 가능한 공간에 근접한 것도 없었습니다)이 있습니까?

파일 시스템(특히 저널링이 없는 ext2)이 NTFS보다 훨씬 더 많은 공간을 사용하는 방법과 이유에 대해 듣고 싶습니다. 어디에 물어봐야 할지 모르겠습니다. 나는 저널링 없이 ext4를 사용하는 방법이나 가능하다면 이렇게 많은 공간을 차지하는 다른 방법을 선호합니다.

답변1

기본적으로 ext2와 그 후속 버전은 루트 사용자가 사용할 수 있도록 파일 시스템의 5%를 예약합니다. 이렇게 하면 조각화가 줄어들고 관리자나 루트 소유 데몬이 작업할 공간이 없이 남게 될 가능성이 줄어듭니다.

이러한 예약된 블록은 루트로 실행되지 않는 프로그램이 디스크를 채우는 것을 방지합니다. 이러한 고려 사항이 용량 손실을 정당화하는지 여부는 파일 시스템이 사용되는 용도에 따라 다릅니다.

5% 금액은 디스크가 훨씬 작았던 1980년대에 설정되었지만 그대로 유지되었습니다. 요즘에는 시스템 안정성을 위해 1%면 충분할 것입니다.

예약은 -m다음 tune2fs명령 옵션을 사용하여 변경할 수 있습니다.

tune2fs -m 0 /dev/sda1

이렇게 하면 예약된 블록 비율이 0%(0개 블록)로 설정됩니다.

현재 값(다른 값 중에서)을 얻으려면 다음 명령을 사용하십시오.

tune2fs -l <device> 

답변2

아직 논의되지 않은 또 다른 사항은 파일 시스템에 예약한 inode 수입니다.

기본적으로 mkfs는 파일 시스템에 매우 작은 파일을 많이 넣을 수 있도록 하는 여러 개의 inode를 생성합니다. 파일이 매우 크고 FS에 적은 수의 파일만 저장한다는 것을 알고 있다면 inode 수를 줄일 수 있습니다.

잘 지내세요! 이 숫자(즉, 공간과 inode 수 간의 비율)는 파일 시스템 생성 시에만 설정할 수 있습니다. FS를 확장해도 비율은 동일하게 유지됩니다.

답변3

저장하려는 데이터가 압축 가능한 경우 compress=zstd(또는 compress-force=zstd)로 마운트된 btrfs는 아마도 ext*보다 훨씬 적은 디스크 공간을 사용할 것입니다.

  • 이렇게 하면 btrfs가 데이터를 디스크에 쓰기 전에 투명하게 압축하고 다시 읽을 때 투명하게 압축을 풀게 됩니다. 또한 ext4는 파일 시스템 생성 시 모든 inode를 미리 할당하고 btrfs는 필요에 따라 이를 생성하므로 공간도 절약할 수 있을 것 같습니다.

관련 정보