"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

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

1~512바이트 사이의 모든 파일은 하나의 512바이트 블록을 차지하게 됩니다. 이것이 디스크의 최소 할당 크기라면 513바이트 파일이 두 개의 512바이트 블록을 차지하는 것과 같습니다. 블록 수는 가장 가까운 정수로 반내림되지 않습니다.

답변2

그 이유가 무엇인지, 왜 512바이트를 사용하는지 살펴보세요. 513바이트 크기의 파일을 저장하려면 하드 디스크에 512바이트 크기의 블록 2개가 필요합니다. 513번째 바이트를 저장하려면 512바이트를 포함하는 전체 하드 디스크 블록을 할당해야 합니다. 따라서 내부 조각화로 인해 511바이트가 낭비됩니다. 따라서 이 내부 조각화를 줄이려면 항상 블록 크기를 가능한 한 작게 유지하고 실험을 통해 512바이트가 최적의 크기라는 것을 알았습니다. 이를 줄이면 파일에 액세스하기 위해 많은 블록에 액세스해야 할 수 있으며 시간이 걸릴 수 있습니다. . 그래서 그들은 것들을 최적화하기 위해 효율성을 높이고 메모리 낭비를 줄이기 위해 512바이트가 더 나은 크기라는 것을 실험적으로 알아냈습니다.

관련 정보