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


11

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

이제 전체 디스크가 가득 찼지만 여전히 2560x3kb의 여유 공간이 있습니다. 1mb의 다른 파일을 저장하려면 파일 시스템에서 저장할 수 있습니까? 개별 블록에 남은 여유 공간에 쓰나요? 이 문제를 해결하는 개념이 있습니까?

나는 약간의 설명을 부탁드립니다. 미리 감사드립니다


OK, 2560 파일, 각각 1kb, 2560 * 0.001 mb = 2.56 mb입니다. 1000 * 4 = 4000이기 때문에 각 1kb 파일은 블록의 약 1/4을 차지해야합니다. 블록 크기는 4096이므로 블록을 채우려면 4 개의 파일이 필요합니다. 따라서 1mb 파일은 1000000/4096 = 244 블록의 비용이 듭니다.
Sergiy Kolodyazhnyy 2016 년

답변:


3

최초의 리눅스 이후 기본 블록 크기는 512 바이트였습니다. 최근 4K 블록 크기를 제외하고는 계속해서 증가하는 디스크 크기를 제공합니다. 이것은 실제로 디스크 하드웨어에 의해 거의 결정됩니다 ( /unix/178899/optimizing-logical-sector-size-for-physical-sector-size-4096-hdd 참조 ).

그러나 구체적인 질문은 모든 파일이 여러 유형의 파일 시스템에서 마지막 블록의 사용되지 않은 바이트를 낭비하는 것입니다. 특히 작은 파일에는 낭비입니다. 그러나 btfrs와 reiserfs는 https://en.m.wikipedia.org/wiki/Block_suballocation에 호응하여 대처할 수있는 것처럼 보입니다.


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

  2. 일부 파일 시스템은 테일 패킹 및 / 또는 서브 블록 할당을 지원합니다. ext2 / 3 / 4-xfs-하지 않습니다. 여러 개의 작은 파일로 파티션을 채우려는 경우 블록 크기를 512 또는 1024로 줄이면 낭비되는 "꼬리"공간을 줄일 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.