블록의 크기
3 차원 트랙 (모든 디스크에서 동일한 트랙)을 실린더라고합니다. 각 트랙은 63 개의 섹터로 나뉩니다. 각 섹터에는 512 바이트의 데이터가 포함됩니다. 따라서 파티션 테이블의 블록 크기는 64 헤드 * 63 섹터 * 512 바이트 er ... 1024로 나눈 값 : :)
소스 : fdisk로 파티션하기
리눅스가 블록 크기를 가리킬 때마다 거의 항상 1024 바이트입니다 -리눅스는 1024 바이트 블록을 버퍼 캐시 및 모든 것에 대한 기본 단위로 사용합니다. 일부 파일 시스템은 다른 파일 시스템을 사용하기 때문에 파일 시스템 특정 드라이버에없는 유일한 시간 세분성 (예를 들어, 보통 크기의 ext3 파일 시스템에서 파일 시스템 블록 크기는 일반적으로 4096 바이트입니다). 그러나 파일 시스템 블록 크기를 거의 볼 수는 없습니다. 실제로 그것을 보는 거의 유일한 방법은 커널 해커이거나 dumpe2fs와 같은 프로그램을 실행하는 것입니다.
이것에 대한 문제는 명심해야 할 네 가지 별개의 단위가 있다는 것입니다. 상황을 더욱 악화시키기 위해이 두 장치의 이름은 동일합니다. 이들은 다른 단위입니다.
- 하드웨어 블록 크기, "섹터 크기"
- 파일 시스템 블록 크기, "블록 크기"
- 커널 버퍼 캐시 블록 크기, "블록 크기"
- 파티션 테이블 블록 크기, "실린더 크기"
파일 시스템 블록 크기와 버퍼 캐시 블록 크기를 구별하기 위해 FAT 용어를 따르고 파일 시스템 블록 크기에 "클러스터 크기"를 사용합니다.
섹터 크기는 하드웨어가 다루는 단위입니다. 이것은 하드웨어 유형에 따라 다르지만 대부분의 PC 스타일 하드웨어 (플로피, IDE 디스크 등)는 512 바이트 섹터를 사용합니다.
클러스터 크기는 파일 시스템이 사용하는 할당 단위이며 조각화의 원인입니다. 이에 대해 알고 있습니다. 적당한 크기의 ext3 파일 시스템에서 이것은 보통 4096 바이트이지만,로 확인할 수 있습니다 dumpe2fs
. 이들은 일반적으로 " 블록 " 이라고도하며 여기서는 클러스터라고 합니다. st_blksize
프로그램이 파일의 실제 디스크 사용량을 계산할 수 있도록 클러스터 크기는 통계 버퍼에 리턴되는 크기입니다 .
블록 크기는 커널이 저장 장치에서 읽은 섹터를 캐시 할 때 커널이 내부적으로 사용하는 버퍼의 크기입니다 (따라서 "블록 장치"라는 이름). 이것은 커널에서 가장 원시적 인 스토리지 형식이므로 모든 파일 시스템 클러스터 크기는 이의 배수 여야합니다. 이 블록 크기는 거의 항상 사용자 공간 프로그램에 의해 참조됩니다. 예를 들어, du
-h 또는 -H 옵션없이 실행
하면 파일이 차지하는 이러한 블록 수를 반환합니다. df
또한 이러한 블록의 크기를보고하고 fdisk -l
출력 의 "블록"열 은이 유형 등입니다. 가장 일반적으로 "블록"이라고합니다. 두 개의 디스크 섹터가 각 블록에 맞습니다.
실린더 크기는 파티션 테이블과 BIOS에서만 사용되며 BIOS는 Linux에서 사용되지 않습니다.
출처 : 리눅스 디스크 블록 크기 ... 제발 도와주세요
섹터 0-31
처음 32 개 섹터에 대한 질문에 답하기 위해, 플래시 드라이브는 FAT 형식의 장치이고 FAT 파일 시스템 정의를 보면 FAT 파일 시스템이 네 가지 섹션으로 구성되어 있음을 알 수 있습니다.
a) 예비 분야
b) 파일 할당 테이블 (FAT) 영역;
c) 루트 디렉토리 지역
d) 데이터 영역.
맨 처음에 위치한 예약 된 섹터 는 (이 경우) 섹터 0-31입니다.
첫 번째 예약 된 섹터 (논리 섹터 0)는 부팅 섹터 (일명
VBR (볼륨 부팅 레코드) )입니다. 여기에는 BIOS 매개 변수 블록 (일부 기본 파일 시스템 정보, 특히 유형 및 기타 섹션의 위치에 대한 포인터 포함) 영역이 포함되며 일반적으로 운영 체제의 부트 로더 코드가 포함됩니다.
Boot Sector의 중요한 정보 는 DOS 및 OS / 2의 DPB (Driver Parameter Block) 라는 운영 체제 구조를 통해 액세스 할 수 있습니다 .
예약 된 섹터의 총 수는 부트 섹터 내부의 필드로 표시되며 일반적으로 FAT32 파일 시스템에서 32입니다 .
FAT32 파일 시스템의 경우 예약 된 섹터에는 논리 섹터 1 의 파일 시스템 정보 섹터 와 논리 섹터 6 의 백업 부트 섹터가 포함 됩니다.
다른 많은 공급 업체가 부트 스트랩 로더에 단일 섹터 설정 (논리 섹터 0 만 해당)을 계속 사용하는 반면, FAT32가 도입 된 이후 논리 섹터 0에 따라 Microsoft의 부트 섹터 코드가 논리 섹터 0 및 2에 생성되었습니다. 논리 섹터 2의 서브 루틴 경우에 따라 Microsoft는 확장 부트 로더에 예약 된 섹터 영역의 섹터 12를 사용하기도합니다.
OP 질문과 관련이없는 추가 정보 만
FAT 지역 은 32 섹터에 있습니다 :
일반적으로 디스크 복구 유틸리티에서도 거의 사용되지 않지만 중복 검사를 위해 파일 할당 테이블의 사본 두 개 (다양 할 수 있음)가 포함됩니다.
이들은 데이터 영역의 맵으로, 파일 및 디렉토리에서 사용되는 클러스터를 나타냅니다. FAT12 및 FAT16에서는 예약 된 섹터를 즉시 따릅니다.
일반적으로 추가 사본은 쓰기시 밀접한 동기화 상태로 유지되며 읽기시 첫 번째 FAT에서 오류가 발생할 때만 사용됩니다. FAT32에서는 기본 동작에서 전환하여 진단 목적으로 사용할 수있는 FAT 중에서 단일 FAT를 선택할 수 있습니다.
맵의 처음 두 군집 (클러스터 0 및 1)에는 특수 값이 포함되어 있습니다.
루트 디렉토리 지역 :
루트 디렉토리에있는 파일 및 디렉토리에 대한 정보를 저장하는 디렉토리 테이블입니다. FAT12 및 FAT16에서만 사용되며이 볼륨을 만들 때 미리 할당 된 고정 최대 크기를 루트 디렉토리에 부과합니다. FAT32는 파일 및 기타 디렉토리와 함께 루트 디렉토리를 데이터 영역에 저장하므로 이러한 제약없이 커질 수 있습니다. 따라서 FAT32의 경우 데이터 영역이 여기서 시작됩니다.
데이터 영역 :
실제 파일 및 디렉토리 데이터가 저장되고 대부분의 파티션을 차지합니다. 일반적으로 데이터 영역의 사용되지 않은 부분은 IBM 호환 시스템에서 형식화하는 동안 INT 1Eh의 DPT (Disk Parameter Table)에 따라 필러 값 0xF6으로 초기화되지만 Atari 포트폴리오에서도 사용됩니다. 8 인치 CP / M 플로피는 일반적으로 0xE5 값으로 미리 포맷되어 제공됩니다. Digital Research를 통해이 값은 Atari ST 형식의 플로피에서도 사용되었습니다. Amstrad는 대신 0xF4를 사용했습니다. 일부 최신 포맷터는 0x00의 값으로 하드 디스크를 지우는 반면, 프로그래밍되지 않은 플래시 블록의 기본값 인 0xFF의 값은 마모를 줄이기 위해 플래시 디스크에서 사용됩니다. 후자의 값은 일반적으로 ROM 디스크에서도 사용됩니다. (일부 고급 서식 도구를 사용하면 서식 필러 바이트를 구성 할 수 있습니다.)
FAT에서 파일 체인에 더 많은 링크를 추가하면 파일과 하위 디렉토리의 크기를 자유롭게 사용할 수있는 클러스터가있는 한 임의로 늘릴 수 있습니다. 그러나 파일은 클러스터 단위로 할당되므로 1 KiB 파일이 32 KiB 클러스터에 상주하면 31 KiB가 낭비됩니다.
FAT32는 일반적으로 데이터 영역의 첫 번째 클러스터 인 클러스터 번호 2 : 루트 디렉토리 테이블을 시작합니다.
출처 : Wikipedia-파일 할당 테이블