파일 시스템 블록 크기는 어떻게 작동합니까?

파일 시스템 블록 크기는 어떻게 작동합니까?

모든 Linux 파일 시스템의 블록 크기는 4kb입니다. 10MB의 하드 디스크 저장 공간이 있다고 가정해 보겠습니다. 즉, 2560개의 블록을 사용할 수 있고 각각 1kb 크기의 파일 2560개를 복사했다고 가정해 보겠습니다. 각 1kb 블록은 전체 블록을 채우지는 않지만 1블록을 차지합니다.

이제 전체 디스크가 채워졌지만 여전히 2560x3kb의 여유 공간이 있습니다. 1MB의 다른 파일을 저장하고 싶은 경우 파일 시스템에서 저장할 수 있나요? 개별 블록에 남아 있는 여유 공간에 쓰나요? 이 문제를 해결하는 개념이 있나요?

좀 더 자세히 설명해 주시면 감사하겠습니다. 미리 감사드립니다

답변1

최초의 Linux 이후 기본 블록 크기는 512바이트였습니다. 점점 증가하는 디스크 크기를 수용하기 위해 최근 4k 블록 크기가 도입되기 전까지는 예외입니다. 이는 실제로 디스크 하드웨어에 따라 거의 결정됩니다(자세한 내용은 다음을 참조하세요:https://unix.stackexchange.com/questions/178899/optimizing-logical-sector-size-for-physical-sector-size-4096-hdd).

그러나 구체적인 질문에 대해서는 모든 파일이 다양한 유형의 파일 시스템에서 마지막 블록의 사용되지 않은 바이트를 낭비한다는 것이 옳습니다. 이는 특히 작은 파일의 경우 낭비입니다. 그러나 btfrs와 reiserfs는 다음과 같이 대처할 수 있는 것 같습니다.https://en.m.wikipedia.org/wiki/Block_suballocation

답변2

  1. 파일 시스템의 블록 크기는 512바이트에서 (일반적으로) 65536바이트까지입니다. 블록 크기는 mkfs.xxx 옵션으로 지정할 수 있습니다. 대부분의 Linux 파일 시스템의 기본 블록 크기 - 4096바이트.

  2. 일부 파일 시스템은 테일 패킹 및/또는 하위 블록 할당을 지원합니다. BTRFS, RaiserFS, ZFS, Raiser4 - 수행; XFS, Ext2/3/4 - 하지 마세요.

여러 개의 작은 파일로 파티션을 채우려는 경우 블록 크기를 512 또는 1024로 축소하여 낭비되는 "테일" 공간을 줄이거나 테일 패킹 또는 하위 블록 할당 기능을 지원하는 FS를 사용할 수 있습니다.

관련 정보