블록 크기와 클러스터 크기의 차이


20

블록 크기와 클러스터 크기에 관한 질문이 있습니다. 내가 읽은 것에 관해서는 다음을 가정합니다.

  • 블록 크기는 블록의 실제 크기이며 주로 512 바이트입니다. 이를 변경할 수있는 방법이 없습니다.
  • 클러스터 크기는 OS에서 읽고 쓸 수있는 블록의 최소 크기입니다. 새 파일 시스템 (예 : ext3)을 만들면 스위치 -b를 사용하여이 최소 블록 크기를 지정할 수 있습니다. dumpe2fs, mke2fs와 같은 거의 모든 프로그램은 블록 크기를 클러스터 크기의 이름으로 사용합니다.

다음과 같은 결과가 나오면

$ stat test
File: `test'
Size: 13            Blocks: 4          IO Block: 2048   regular file
Device: 700h/1792d  Inode: 15          Links: 1

크기가 바이트 단위의 실제 공간이고 블록이 실제로 사용되는 블록 (각각 512 바이트)이고 IO 블록이 FS를 작성할 때 지정된 블록 크기와 관련이 있는가?

답변:


26

다른 용어를 사용하는 여러 문서를 읽었 기 때문에 혼란 스러울 것 같습니다. "블록 크기"및 "클러스터 크기"와 같은 용어는 파일 시스템 문헌의 맥락 내에서도 보편적 인 의미를 갖지 않습니다.

파일 시스템

들어 EXT2 또는 EXT3 , 상황은 비교적 간단하다 : 각 파일은 특정 수의 점유 블록을 . 주어진 파일 시스템의 모든 블록은 같은 크기, 보통 1024, 2048 또는 4096 바이트 중 하나입니다. 크기가 N 블록과 1 바이트 사이에 있고 N + 1 블록 사이의 파일 ¹은 N + 1 블록을 차지합니다. 해당 블록 크기는로 지정합니다 mke2fs -b. 별도의 군집 개념은 없습니다.

특히 MS-DOS와 초기 버전의 Windows에서 사용 하는 FAT 파일 시스템은 비슷한 공간 할당을 갖습니다. ext2 호출 차단, FAT 호출 클러스터 ; 개념은 동일합니다.

일부 파일 시스템에는보다 정교한 할당 체계가 있습니다. 고정 크기 블록이 있지만 동일한 블록을 사용하여 둘 이상의 파일의 마지막 몇 바이트를 저장할 수 있습니다. 이것을 블록 하위 할당이라고합니다 . ReiserfsBtrfs 는 그렇게하지만 ext3 또는 ext4는 아닙니다.

유용

유닉스 유틸리티는 종종“블록”이라는 단어를 사용하여 임의 크기의 단위 (일반적으로 512 바이트 또는 1kB)를 의미합니다. 이 사용법은 특정 파일 시스템 또는 디스크 하드웨어와 관련이 없습니다. 역사적으로 512B 블록은 당시 디스크와 파일 시스템이 종종 512B 청크로 작동하기 때문에 생겨 났지만 현대적인 사용법은 임의적입니다. 기존의 유닉스 유틸리티와 인터페이스는 여전히 512B 블록을 사용하지만 1kB 블록이 종종 선호 됩니다. 당신은 (일부 스위치, 등이 사용하고 블록의 어떤 크기를 알고 각 유틸리티의 문서를 확인해야 du -B또는 df -B리눅스를).

GNU / Linux stat유틸리티에서 blocks그림은 파일이 사용하는 512B 블록의 수입니다. IO Block그림에 파일 입출력, 적절한 사이즈입니다 원칙과 무관하지만, 일반적으로 기본 파일 시스템의 블록 크기의 표시 (또는 클러스터 크기가의 당신이 전화를 원하는 경우). 여기에는 13 바이트 파일이 있는데,이 파일은 ext3 파일 시스템에서 블록 크기가 2048 인 하나의 블록을 차지합니다. 따라서 파일은 4 개의 512 바이트 단위를 차지합니다 ( "블록"이라고 함 stat).

디스크

대부분의 디스크는 디스크를 여러 섹터 로 표시하는 인터페이스를 제공합니다 . 디스크는 개별 비트나 바이트가 아닌 전체 섹터 만 쓰거나 읽을 수 있습니다. 대부분의 하드 디스크에는 512 바이트 섹터가 있지만 2 년 전에 4kB 섹터 디스크가 나타나기 시작했습니다.

디스크 섹터 크기는 파일 시스템 블록 크기와 직접 관련이 없지만 전체 섹터 수인 블록을 갖는 것이 성능에 더 좋습니다.

¹ 예외 : 스파 스 파일 은 공간을 절약합니다.


2
설명해 주셔서 감사합니다. Windows 용 ext2fsd 도구로 인한 혼란 때문에 여기에 도착했습니다. 명령 행 옵션은 다음과 같이 시작합니다. ʻUsage : mke2fs [-c | -l filename] [-b block-size] [-C cluster-size] ... ´ 글쎄, 블록과 클러스터 크기 모두 ...
Bernhard Hiller

또한 mke2fs의 블록 크기와 클러스터 크기의 차이점이 무엇인지 알고 싶습니다. 아는 사람 있나요 ?
X.LINK

1
@ X.LINK 맨 페이지에 설명되어 있습니다. 클러스터 크기는 bigalloc 기능에 의해 사용되며, 올바르게 이해하면 더 많은 스토리지를 낭비하면서 큰 파일에 더 빠르게 액세스 할 수 있습니다.
Gilles 'SO- 악마 그만해'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.