fdisk의 출력은 무엇을 의미합니까?


10

플래시 드라이브가 있는데에서 출력되는 속성을 이해하고 싶습니다 fdisk. 나는 그것을 삽입하고 확인하고 dmesg그것이 보고 된 것을보기 위해 /dev/sdb1달려 가서 장착 된 것을 볼 수 있었다.fdisk/dev/sdb

mike@mike-Qosmio-X770:~$ sudo fdisk -l
[sudo] password for mike: 

Disk /dev/sdb: 127 MB, 127926272 bytes
16 heads, 32 sectors/track, 488 cylinders, total 249856 sectors
 Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x6b3ee723

   Device Boot      Start         End      Blocks   Id  System
 /dev/sdb1   *          32      249854      124911+   b  W95 FAT32

내가 알 수있는 한, 드라이브는 128MB FAT32 형식의 플래시 드라이브이며 파티션은 1 개뿐입니다. "32"에서 시작합니다 (일부 FTL에는 0-31이 사용됨).

"섹터"의 크기는 512 바이트이고 249,856 개의 섹터 (총 122MB)가 있다고보고합니다.

이제 실린더, 헤드 및 섹터 / 트랙 수에 대해 혼란스러워합니다. 실린더 / 헤드는 자기 디스크 스토리지 유형과 관련이 있다는 것을 알고 있습니다. 플래시 장치와 관련하여 의미가 있습니까? 아니면 이것은 fdisk비 자기 저장 매체에 실제로 의미가없는 "남은"정보 입니까? 나중에 왜, 왜 가치를 부여합니까?

두 번째 질문은 블록의 "크기"는 무엇입니까? :

Blocks
 124911+

그리고 +블록 수 이후의 의미는 무엇 입니까?


1
좋은 질문, +1, 전에는 생각해 본 적이 없습니다. "FTL"은 무엇을 의미합니까? 나에게 그것은 빛보다 빠른 것을 의미한다고 생각합니다.
terdon

1
@terdon-FTL (Flash translation layer) 레벨링과 그 밖의 것들을하는 것들
Mike

답변:


3

블록의 크기

3 차원 트랙 (모든 디스크에서 동일한 트랙)을 실린더라고합니다. 각 트랙은 63 개의 섹터로 나뉩니다. 각 섹터에는 512 바이트의 데이터가 포함됩니다. 따라서 파티션 테이블의 블록 크기는 64 헤드 * 63 섹터 * 512 바이트 er ... 1024로 나눈 값 : :)

소스 : fdisk로 파티션하기

리눅스가 블록 크기를 가리킬 때마다 거의 항상 1024 바이트입니다 -리눅스는 1024 바이트 블록을 버퍼 캐시 및 모든 것에 대한 기본 단위로 사용합니다. 일부 파일 시스템은 다른 파일 시스템을 사용하기 때문에 파일 시스템 특정 드라이버에없는 유일한 시간 세분성 (예를 들어, 보통 크기의 ext3 파일 시스템에서 파일 시스템 블록 크기는 일반적으로 4096 바이트입니다). 그러나 파일 시스템 블록 크기를 거의 볼 수는 없습니다. 실제로 그것을 보는 거의 유일한 방법은 커널 해커이거나 dumpe2fs와 같은 프로그램을 실행하는 것입니다.

이것에 대한 문제는 명심해야 할 네 가지 별개의 단위가 있다는 것입니다. 상황을 더욱 악화시키기 위해이 두 장치의 이름은 동일합니다. 이들은 다른 단위입니다.

  1. 하드웨어 블록 크기, "섹터 크기"
  2. 파일 시스템 블록 크기, "블록 크기"
  3. 커널 버퍼 캐시 블록 크기, "블록 크기"
  4. 파티션 테이블 블록 크기, "실린더 크기"

파일 시스템 블록 크기와 버퍼 캐시 블록 크기를 구별하기 위해 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-파일 할당 테이블


1

섹터 1-31은 부팅 정보와 파티션 테이블 정보 용으로 예약되어 있다고 생각합니다. / dev / sdb1 파티션은 블록 / 섹터 32에서 시작하여 249854로갑니다. 물리적 디스크의 논리적 파티션입니다.

124911+는 32에서 249854 사이의 블록 수를 제공합니다.

디스크 지오메트리 정보 man fdsik는 다음과 같습니다.

가능한 경우 fdisk는 디스크 구조를 자동으로 얻습니다. 이것은 실제 디스크 구조 일 필요는 없습니다 (실제로 현대의 디스크에는 실제 구조와 같은 것이 없으며 단순한 실린더 / 헤드 / 섹터 형식으로 설명 할 수있는 것은 아닙니다) .MS-DOS는 디스크 구조입니다. 파티션 테이블에 사용합니다.

일반적으로 모든 것이 기본적으로 잘 작동하며 Linux가 디스크의 유일한 시스템 인 경우 문제가 없습니다. 그러나 디스크를 다른 운영 체제와 공유해야하는 경우 다른 운영 체제의 fdisk가 하나 이상의 파티션을 만들도록하는 것이 좋습니다. 리눅스가 부팅 할 때 파티션 테이블을보고 다른 시스템과의 협력을 위해 어떤 (가짜) 지오메트리가 필요한지 추론하려고합니다.

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