"512바이트 블록 크기"는 무엇을 의미합니까?

"512바이트 블록 크기"는 무엇을 의미합니까?

단일 파일을 포함하는 파일이 제공됩니다 h. 프리미티브를 find사용하여 실행 하면 -ls다음과 같은 결과가 나타납니다.

$ cat some_file
h
$ find . -ls
2750606        0 drwxr-xr-x    4 mbigras          FOO\Domain Users      136 May 18 12:35 .
3067730       16 -rw-r--r--    1 mbigras          FOO\Domain Users     6148 May 18 12:33 ./.DS_Store
3067836        8 -rw-r--r--    1 mbigras          FOO\Domain Users        2 May 18 12:35 ./some_file

man find검색을 통해 -ls출력이 다음 파일 정보임을 알 수 있습니다.

inode 번호, 512바이트 블록 크기, 파일 권한, 하드 링크 수, 소유자, 그룹, 바이트 크기, 마지막 수정 시간 및 경로 이름.

나는 몇 가지를 알고 싶습니다:

  • some_file1바이트 만 있는 경우 h"바이트 크기"가 2인 이유는 무엇입니까? 1이 되었으면 좋겠습니다.
  • 두 번째 숫자가 "512바이트 블록 크기"인 경우 "바이트 크기"보다 큰 이유는 무엇입니까? 나는 그것이 0이거나 적어도 더 작을 것으로 예상했습니다.

답변1

some_file포함 h뒤에는 개행 문자(총 2바이트)가 옵니다. 다음과 같은 것을 시도해보세요

hexdump -C some_file

파일의 내용을 바이트 단위로 봅니다.

513바이트 파일이 두 개의 512바이트 블록을 차지하는 것처럼 1~512바이트 사이의 모든 파일은 하나의 512바이트 블록을 차지합니다(이것이 디스크의 최소 할당 크기인 경우). 블록 수는 가장 가까운 정수로 반내림되지 않습니다.

답변2

512바이트를 사용하는 이유가 무엇인지 살펴보겠습니다. 파일 크기가 513바이트라고 가정하면 파일을 저장하려면 하드 디스크에서 512바이트 크기의 블록 2개를 사용해야 합니다. 513번째 바이트를 저장하려면 512바이트를 포함하는 전체 하드 디스크 블록을 할당해야 합니다. 따라서 내부 단편화로 인해 511바이트가 낭비되므로 이 내부 단편화를 줄이려면 블록 크기를 최대한 작게 유지하는 것이 좋으며, 실험을 통해 512바이트가 최적의 크기라는 것을 알았습니다. 파일에 액세스하려면 많은 블록이 필요하며 시간이 걸립니다. 따라서 이를 최적화하기 위해 효율성을 높이고 메모리 낭비를 줄이는 데 512바이트가 더 나은 크기라는 것을 실험적으로 발견했습니다.

관련 정보