플래시 스토리지의 파티션 테이블을 기반으로 디스크 구조(C/H/S)를 결정하는 방법은 무엇입니까?

플래시 스토리지의 파티션 테이블을 기반으로 디스크 구조(C/H/S)를 결정하는 방법은 무엇입니까?

나는 주로 SCSI 기반 I/O에 의해 제어되고 LBA 주소를 통해 액세스되는 플래시 이동식 장치용 디스크 파티션 생성 프로그램을 작성할 것입니다.

참고로 우분투 디스크 유틸리티를 이용하여 SD 카드에 파티션 테이블을 분할하고 포맷하는 방법을 살펴보고 있습니다.

나는 CHS 단위와 바이트 단위로 카드의 매개변수를 보기 위해 Linux에서 "parted" 소프트웨어의 "unit" 명령을 사용했습니다.

다음은 LBA 15122432 섹터가 있는 8GB SD 카드입니다.

pi@raspberrypi:~ $ sudo parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit chs print
Model: Generic CRM01 SD Reader (scsi)
Disk /dev/sda: 1020,130,11
Sector size (logical/physical): 512B/512B
BIOS cylinder,head,sector geometry: 1020,239,62.  Each cylinder is 7587kB.
Partition Table: msdos
Disk Flags:

Number  Start  End          Type     File system  Flags
 1      0,1,0  1019,238,61  primary  ext3

(parted) unit b print
Model: Generic CRM01 SD Reader (scsi)
Disk /dev/sda: 7742685184B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End          Size         Type     File system  Flags
 1      31744B  7738552319B  7738520576B  primary  ext3

다음은 LBA 섹터 7585792가 있는 4GB SD 카드입니다.

(parted) unit chs print
Model: Generic CRM01 SD Reader (scsi)
Disk /dev/sda: 1019,71,29
Sector size (logical/physical): 512B/512B
BIOS cylinder,head,sector geometry: 1019,120,62.  Each cylinder is 3809kB.
Partition Table: msdos
Disk Flags:

Number  Start  End          Type     File system  Flags
 1      0,1,0  1018,119,61  primary  ext3

(parted) unit b print
Model: Generic CRM01 SD Reader (scsi)
Disk /dev/sda: 3883925504B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End          Size         Type     File system  Flags
 1      31744B  3881656319B  3881624576B  primary  ext3

내 관찰에 따르면 디스크 구조(C/H/S)는 용량이 다른 SD 카드에서 다르며 구조는 파티션 끝에 있는 종료 CHS 주소와 관련이 있는 것 같습니다. 것 같다...

파티션 카드의 끝 CHS 튜플은 (c, h, s)이고 디스크 구조는 (c + 1 / h + 1 / s + 1)입니다. 관련이 있나요?

그런데 이러한 값은 어떻게 결정됩니까? 이러한 운영 체제 또는 파일 시스템은 종속적입니까?

답변1

1980년대에는 개인용 컴퓨터의 BIOS가 올바르게 작동하려면 하드 드라이브의 구조를 알아야 했습니다. 사용자는 정확한 실린더, 헤드 및 섹터 수를 입력해야 합니다.

어느 시점에서 (와 함께IDE 인터페이스? 이 주제에 대한 기억이 가물가물합니다.) 디스크가 자신의 기하학적 구조를 컴퓨터에 보고할 수 있게 되었습니다.

1990년대 초반부터 중반까지는 디스크 펌웨어가 자체적으로 디스크 구조를 관리했습니다. BIOS는 C/H/S 값을 사용하여 디스크 크기를 계산하므로 여전히 C/H/S 값이 필요합니다. 하지만 C/H/S 값의 세분화는 임의적일 수 있습니다. 따라서 디스크에서 보고된 C/H/S 값은 디스크의 실제 형상과 무관하지만 허용 범위 내에 들어가고 올바른 전체 크기를 제공합니다.

실린더 및 헤드 개념을 적용하지 않는 저장 매체도 일부 값을 보상하여 올바른 전체 크기를 얻습니다.

답변2

내 문제가 해결되었을 수도 있습니다. 혼란스러운 점은 파티션 테이블을 생성할 때 파티셔너가 장치 구조를 결정하는 방법입니다. 그러나 몇 가지 실험을 통해 플래시 장치에 고정된 기하학적 구조가 없으며(실제로 물리적 디스크가 없음) 파티셔너가 트랙당 헤드와 섹터 수를 자체적으로 결정한 다음 사용자 정의된 기하학적 구조를 사용할 수 있다는 사실을 발견했습니다. 기하학. 분할된 테이블에서 파티션의 시작 CHS와 끝 CHS를 계산합니다. 구조에 관계없이 운영 체제는 CHS 정보가 주어지면 파티션의 경계를 찾을 수 있습니다.

관련 정보