본문 바로가기
리눅스

(번역) Cylinder-head-sector

by 다움위키 2024. 12. 31.

원문 보기: https://dawoum.duckdns.org/wiki/Cylinder-head-sector

 

Original article: w:Cylinder-head-sector

실린더-헤드-섹터(Cylinder-head-sector, CHS)는 하드 디스크 드라이브의 각 물리적 데이터 블록에 주소를 부여하는 초기 방법입니다.

그것은 수직 좌표 헤드, 수평 (또는 방사형) 좌표 실린더, 및 각도 좌표 섹터로 구성된 3D-좌표 시스템입니다. 헤드는 원형 표면을 선택합니다: 디스크에서 플래터 (및 두 면 중 하나)입니다. 실린더는 디스크의 스핀들을 중심으로 디스크에서 플래터의 스택을 통과하는 원통형 교집합입니다. 조합된, 실린더와 헤드는 원형 선, 또는 더 정확히 말하면: 트랙이라고 하는 물리적 데이터 블록의 원형 스트립으로 교차합니다. 섹터는 마지막으로 이 트랙에서 어떤 데이터 블록을 주소 지정할지 선택하며, 트랙이 여러 개의 같은-크기의 부분으로 세분화되고, 각 부분은 (360/n) 도의 호이며, 여기서 n은 트랙에서 섹터의 수입니다.

초기 하드 드라이브에는 물리적 레이아웃을 숨길 수 있는 내장 디스크 컨트롤러가 없었기 때문에, 간단한 선형 주소 (0에서 디스크의 총 블록 수 - 1까지) 대신, CHS 주소가 노출되었습니다. 별도의 일반 컨트롤러 카드가 사용되었으므로, 운영 시스템은 컨트롤러에 부착된 특정 드라이브의 정확한 물리적 "기하"를 알아야 데이터 블록을 올바르게 주소 지정할 수 있었습니다. 전통적인 제한은 512 바이트/섹터 × 63 섹터/트랙 × 255 헤드 (트랙/실린더) × 1024 실린더였으며, 디스크의 총 용량에 대해 8032.5 MiB의 제한을 초래했습니다.

기하학이 더 복잡해지고 (예를 들어, 존 비트 기록의 도입) 시간이 지남에 따라 드라이브 크기가 커짐에 따라, CHS 주소 지정 방법이 제한적이 되었습니다. 1980년대 후반부터, 하드 드라이브는 물리적 기하를 잘 알고 있는 내장 디스크 컨트롤러와 함께 제공되기 시작했습니다; 어쨌든, 그것들은 실제로 존재하는 것보다 더 많은 헤드 수와 같이 컴퓨터에 잘못된 기하를 보고하여 주소 지정 가능한 공간을 더 많이 확보했습니다. 이들 논리적 CHS 값은 컨트롤러에 의해 변환되고, 따라서 CHS 주소 지정은 더 이상 드라이브의 물리적 속성과 일치하지 않았습니다.

1990년대 중반까지, 하드 드라이브 인터페이스는 CHS 체계를 논리적 블록 주소 지정 (LBA)으로 대체했지만, 마스터 부트 레코드 (MBR) 파티션 테이블을 조작하기 위한 많은 도구는 여전히 파티션을 실린더 경계에 맞춰 정렬했습니다; 따라서, 2000년대 후반까지 CHS 주소 지정의 아티팩트는 여전히 파티션 소프트웨어에서 확인되었습니다.

2010년대 초반, MBR에 의해 부과된 디스크 크기 제한이 문제가 되었고 GUID 파티션 테이블 (GPT)이 하나의 대체로 설계되었습니다; MBR 지원 없이 UEFI 펌웨어를 사용하는 최신 컴퓨터는 더 이상 CHS 주소 지정 개념을 사용하지 않습니다.

Definitions

CHS 주소 지정은 트랙에서 그것들의 위치에 의해 디스크 위의 개별 섹터 (일명, 물리적 데이터 블록)를 식별하는 프로세스로, 여기서 트랙은 헤드와 실린더 번호로 결정됩니다. 그 용어는 아래에서 위로 설명하며, 디스크 주소 지정에 대해 섹터가 가장 작은 단위입니다. 디스크 컨트롤러는 논리적 위치를 물리적 위치로 매핑하기 위해 주소 변환을 도입할 수 있습니다. 예를 들어, 존 비트 기록은 더 짧은 (내부) 트랙에 더 적은 섹터를 저장하고, 물리적 디스크 형식은 반드시 원통형일 필요는 없고, 트랙에서 섹터 번호는 왜곡될 수 있습니다.

Sectors

플로피 디스크와 컨트롤러는 128, 256, 512, 및 1024 바이트의 물리적 섹터 크기를 사용했지만 (예를 들어, PC/AX), 1980년대에는 물리적 섹터당 512바이트를 갖는 형식이 지배적이 되었습니다.

오늘날 하드 디스크에 대해 가장 공통적인 물리적 섹터 크기는 512바이트이지만, 비-IBM 호환 기계에 대해 섹터당 520바이트의 하드 디스크도 있었습니다. 2005년에, 일부 Seagate 맞춤형 하드 디스크는 섹터당 1024바이트의 섹터 크기를 사용했습니다. Advanced Format 하드 디스크는 2010년부터 물리적 섹터당 4096바이트 (4Kn)를 사용하지만, 전환 기간 동안 512바이트 섹터 (512e)도 에뮬레이션할 수 있습니다.

자기-광학 드라이브는 5.25-인치 드라이브에서는 512와 1024바이트의 섹터 크기를 사용하고, 3.5-인치 드라이브에서는 512와 2048바이트의 섹터 크기를 사용합니다.

CHS 주소 지정에서, 섹터 번호가 항상 1부터 시작하고, 섹터 0이 없으며, 이는 논리적 섹터 주소 지정 체계는 전형적으로 0부터 세기 시작하기 때문에 혼동이 생길 수 있습니다 (예를 들어, DOS에서 사용하는 논리 블록 주소 지정 (LBA) 또는 "상대 섹터 주소 지정").

물리적 디스크 기하에 대해, 최대 섹터 번호는 디스크의 저수준 포맷에 의해 결정됩니다. 어쨌든, IBM-PC 호환 기계의 BIOS를 갖는 디스크 접근에 대해, 섹터 번호는 6비트로 인코딩되어, 트랙당 최대 111111 (63)개의 섹터가 됩니다. 이 최댓값은 여전히 ​​가상 CHS 기하에 사용됩니다.

Tracks

트랙은 섹터의 얇은 동심 원형 띠입니다. 단일 트랙을 읽으기 위해 최소한 하나의 헤드가 필요합니다. 디스크 기하에 관련 트랙실린더라는 용어는 밀접한 관련이 있습니다. 단일 또는 양면 플로피 디스크에 대해 트랙이 공통적인 용어입니다; 그리고 두 개보다 많은 헤드에 대해 실린더가 공통적인 용어입니다. 엄밀하게 말해서, 트랙은 SPT 섹터로 구성된 주어진 CH 조합이고, 반면에 실린더는 SPT×H 섹터로 구성됩니다.

Cylinders

실린더는 디스크 드라이브에서 데이터의 분할 영역으로, 고정 블록 아키텍처 디스크의 CHS 주소 지정 모드나 CKD 디스크의 실린더-헤드-레코드 (CCHHR) 주소 지정 모드에서 사용됩니다.

개념은 실제 디스크 (플래터)를 동심, 구멍, 원통형 슬라이스이며, 플래터의 스택을 통해 정렬된 각각의 원형 트랙을 모은 것입니다. 디스크 드라이브의 실린더 수는 드라이브에서 단일 표면에 있는 트랙 수와 정확하게 같습니다. 그것은 각 플래터에 같은 트랙 번호로 구성되며, 데이터를 저장할 수 있는 각 플래터 표면에 걸쳐 있는 모든 그런 트랙을 포함합니다 (트랙이 "불량"인지 여부와 관계없이). 실린더는 트랙에 의해 수직으로 형성됩니다. 다시 말해, 플래터 0 위에 트랙 12와 플래터 1의 트랙 12, 등을 합치면 실린더 12가 됩니다.

드럼 메모리 장치나 IBM 2321 데이터 셀과 같은 Direct Access Storage Device (DASD)의 다른 형태는 실린더 주소를 포함하는 블록 주소를 제공할 수 있지만, 실린더 주소는 장치의 (기하학적) 원통형 슬라이스를 선택하지 않습니다.

Heads

헤드라고 불리는 장치는 결합된 디스크 플래터의 표면을 구성하는 자기 매체를 조작함으로써 하드 드라이브에서 데이터를 읽고 씁니다. 자연스럽게, 플래터는 2개의 면을 가지고 따라서 데이터를 조작할 수 있는 2개의 표면을 가집니다; 보통 플래터당 2개의 헤드가 있으며, 한 면당 하나씩 있습니다. (때로는 이라는 용어가 헤드로 대체되는데, 왜냐하면 플래터가 플로피 드라이브의 이동식 매체와 같이 헤드 어셈블리에서 분리될 수 있기 때문입니다.)

IBM-PC 호환 BIOS 코드에서 지원하는 CHS 주소 지정은 최대 256개의 헤드에 대해 8비트를 사용했으며 헤드 0에서 255 (FFh)까지 셉니다. 어쨌든, 7.10까지 모든 버전의 Microsoft DOS/IBM PC DOS에서 버그는 이들 운영 시스템을 256개의 헤드를 갖는 볼륨을 만날 때 부팅 시 충돌되는 결과를 초래합니다. 그러므로, 모든 호환 BIOS는 가상 255×63 기하를 포함하여 최대 255개의 헤드 (00h..FEh)만 갖고 매핑을 사용할 것입니다.

이러한 역사적 괴상함은 오래된 BIOS INT 13h 코드뿐만 아니라 오래된 PC DOS 또는 유사한 운영 시스템의 최대 디스크 크기에도 영향을 미칠 수 있습니다:

(512 bytes/sector)×(63 sectors/track)×(255 heads (tracks/cylinder))×(1024 cylinders)=8032.5 MB이지만, 실제로 512×63×256×1024=8064 MBGB 제한으로 알려진 것을 산출합니다. 이 맥락에서, 8 GB = 8192 MB의 관련 정의는 또 다른 부정확한 한계인데, 왜냐하면 트랙당 64개의 섹터를 갖는 CHS 512×64×256를 요구하기 때문입니다.

트랙실린더는 0부터 세며, 즉, 트랙 0은 플로피 디스크나 다른 원통형 디스크에서 첫 번째 (가장-바깥쪽) 트랙입니다. 이전 BIOS 코드는 최대 1024개의 실린더 (1024=\(2^{10}\))를 갖는 CHS 주소 지정에서 10비트를 지원했습니다. 섹터에 대해 6비트와 헤드에 대해 8비트를 추가는 것은 BIOS 인터럽트 13h에 의해 지원되는 24비트를 초래합니다. 1024×256 트랙에서 허용되지 않는 섹터 번호 0을 빼는 것은 512바이트의 섹터 크기에 대해 128 MB에 해당합니다 (128 MB=1024×256×(512 byte/sector)); 그리고 8192-128=8064는 (대략) GB 제한을 확인합니다.

CHS 주소 지정은 0/0/1에서 시작하여 24=10+8+6 비트에 대해 최댓값 1023/255/63, 255 헤드로 제한된 24 비트에 대해 최댓값 1023/254/63을 가집니다. 디스크의 기하를 지정하기 위해 사용되는 CHS 값은 실린더 0과 헤드 0을 계산해야 하므로 255 (또는 256) 헤드를 갖는 24 비트에 대해 최댓값 1024/255/63 (또는 1024/256/63)을 초래합니다. 기하 S를 지정하는 CHS 튜플에서 실제로 트랙당 섹터를 의미하고, 여기서 (가상) 기하가 C×H×S 섹터를 포함하는 디스크 용량과 여전히 일치합니다. 더 큰 하드 디스크가 사용되면서, 실린더도 논리적 디스크 구조가 되었으며, 16 065 섹터 (16065=255×63)로 표준화되었습니다.

28 비트(EIDE 및 ATA-2)를 갖는 CHS 주소 지정은 1에서 시작하는 섹터 (즉, 섹터 1...255)에 대해 8 비트, 헤드 0...15에 대해 4비트, 및 실린더 0...65535에 대해 16비트를 허용합니다. 이것은 대략 128 GB 제한을 초래합니다; 실제로는 65536×16×255=267386880 섹터가 512 바이트의 섹터 크기에 대해 130560 MB에 해당합니다. ATA-2 사양에서 28=16+4+8 비트는 Ralf Brown의 인터럽트 목록에도 포함되어 있고, 만료된 이 표준의 이전 작업 초안이 게시되었습니다.

1024 실린더의 이전 BIOS 제한과 16 헤드의 ATA 제한과 함께, 결합된 효과는 1024×16×63=1032192 섹터, 즉, 섹터 크기 512에 대한 504 MB 제한이었습니다. ECHS 및 개정된 ECHS로 알려진 BIOS 변환 체계는 16 헤드 대신 128 또는 240을 사용하여 이 제한을 완화하고, 동시에 실린더와 섹터 수를 디스크의 주어진 총 섹터 수에 대해 1024/128/63 (ECHS 제한: 4032 MB) 또는 1024/240/63 (개정된 ECHS 제한: 7560 MB)에 맞추기 위해 줄입니다.

Blocks and clusters

Unix 커뮤니티는 섹터 또는 섹터의 그룹을 나타내기 위해 블록이라는 용어를 사용합니다. 예를 들어, 버전 2.25 이전의 리눅스 fdisk 유틸리티는 1024-바이트 블록을 사용하여 파티션 크기를 표시했습니다.

클러스터는 다양한 파일 시스템 (AT, NTFS, 등)의 데이터에 대한 할당 단위로, 여기서 데이터는 주로 파일로 구성됩니다. 클러스터는 디스크의 물리적 또는 가상 기하에 의해 직접 영향을 받지 않으며, 즉, 클러스터는 주어진 CH 트랙의 끝 근처에 있는 섹터에서 시작하고, 물리적 또는 논리적으로 다음 CH 트랙의 섹터에서 끝날 수 있습니다.

CHS to LBA mapping

2002년에, ATA-6 사양은 선택적 48비트 논리 블록 주소 지정을 도입하고 CHS 주소 지정을 폐기한다고 선언했지만, 여전히 ATA-5 변환을 구현할 수 있도록 허용했습니다. 놀랍지 않게도, 아래에 나와 있는 CHS에서 LBA로의 변환 공식도 마지막 ATA-5 CHS 변환과 일치합니다. ATA-5 사양에서, CHS 지원은 최대 16 514 064 섹터에 대해 필수였고 더 큰 디스크에 대해 선택 사항이었습니다. ATA-5 제한은 CHS 16383 16 63 또는 동등한 디스크 용량 (16514064 = 16383 × 16 × 63 = 1032 × 254 × 63)에 해당하고, 24 = 14 + 4 + 6 비트 (16383 + 1 = \(2^{14}\))가 필요합니다.

CHS 튜플은 다음 공식을 사용하여 LBA 주소에 매핑될 수 있습니다:

\(\quad A = (c \times N_\mathrm{heads} + h) \times N_\mathrm{sectors} + (s-1) \),

여기서 A는 LBA 주소이고, \(N_\mathrm{heads}\)는 디스크의 헤드의 개수이고, \(N_\mathrm{sectors}\)는 트랙당 섹터의 최대 개수이고, (c, h, s)는 CHS 주소입니다.

FAT 파일 시스템에 대한 ECMA-107 및 ISO/IEC 9293:1994 (ISO 9293:1987를 대체) 표준에서 논리 섹터 번호 공식은 위에 제공된 LBA 공식과 정확히 일치합니다: 논리 블록 주소논리 섹터 번호 (LSN)는 동의어입니다. 그 공식은 실린더 수를 사용하지 않지만, 디스크 기하에서 헤드 수와 트랙당 섹터 수가 필요한데, 왜냐하면 같은 CHS 튜플이 기하에 의존하여 다른 논리 섹터 번호를 처리하기 때문입니다.

예제:

1028160 섹터를 갖는 디스크의 기하 1020 16 63에 대해, CHS 3 2 1는 LBA 3150 = ((3 × 16) + 2) × 63 + (1 – 1)입니다; 1028160 섹터를 갖는 디스크의 기하 1008 4 255에 대해, CHS 3 2 1는 LBA 3570 = ((3 × 4) + 2) × 255 + (1 – 1)입니다; 1028160 섹터를 갖는 디스크의 기하  64 255 63에 대해, CHS 3 2 1는 LBA 48321=((3 × 255) + 2) × 63 + (1 – 1)입니다; 1028160 섹터를 갖는 디스크의 기하 2142 15 32에 대해, CHS 3 2 1는 LBA 1504 = ((3 × 15) + 2) × 32 + (1 – 1)입니다;

섹터 순서를 선형 LBA 모델로 시각화하는 데 도움이 되도록, 다음 사항을 주목하십시오:

첫 번째 LBA 섹터는 섹터 #0이고, CHS 모델에서 같은 섹터는 섹터 #1이라고 불립니다. 각 헤드/트랙의 모든 섹터는 그 다음 헤드/트랙으로 증가하기 전에 계산됩니다. 같은 실린더의 모든 헤드/트랙은 그 다음 실린더로 이동하기 전에 계산됩니다. 전체 하드 드라이브의 바깥쪽 절반은 드라이브의 전반부가 됩니다.

History

실린더 헤드 레코드 형식은 적어도 1960년대부터 IBM 메인프레임Count Key Data (CKD) 하드 디스크에 의해 사용되어 왔습니다. 이것은 PC에 의해 사용된 실린더 헤드 섹터 형식과 크게 비슷하지만, 섹터 크기가 고정되지 않고 각 응용 프로그램의 필요를 기반으로 트랙마다 다를 수 있다는 점이 다릅니다. 현재 사용에서, 메인프레임에 제공되는 디스크 기하는 스토리지 펌웨어에 의해 에뮬레이션되고, 더 이상 물리적 디스크 기하와 관련이 없습니다.

MFMRLL 드라이브와 같은 PC에서 사용된 초기 하드 드라이브는 각 실린더를 같은 수의 섹터로 나누었으므로, CHS 값은 드라이브의 물리적 속성과 일치했습니다. 500 4 32의 CHS 튜플을 갖는 드라이브는 각 플래터의 측면당 500 트랙, 2 플래터 (헤드 4개), 및 트랙당 32 섹터를 가지며, 총 32 768 000 바이트 (31.25 MiB)가 됩니다.

ATA/IDE 드라이브는 데이터를 저장하는 데 훨씬 더 효율적이었고 현재는 폐기된 MFM 및 RLL 드라이브를 대체했습니다. 그것들은 존 비트 기록 (ZBR)을 사용하며, 여기서 각 트랙을 나누는 섹터 수가 플래터 표면의 트랙 그룹 위치에 따라 달라집니다. 플래터 가장자리에 더 가까운 트랙은 스핀들에 가까운 트랙보다 더 많은 데이터 블록을 포함하는데, 왜냐하면 플래터 가장자리 근처의 주어진 트랙 내에 더 많은 물리적 공간이 있기 때문입니다. 따라서, CHS 주소 지정 체계는 플래터의 다른 영역에 대해 트랙당 섹터 수가 변하기 때문에 그러한 드라이브의 물리적 기하와 직접 일치할 수 없습니다. 이 때문에, 많은 드라이브는 여전히 드라이브 끝에 섹터가 초과 (크기에서 실린더 1개 미만)되어 있는데, 왜냐하면 총 섹터 수가 실린더 경계에서 끝나는 경우가 거의 없기 때문입니다.

ATA/IDE 드라이브는 드라이브 (또는 BIOS)의 용량을 초과하지 않는 실린더, 헤드, 및 섹터의 임의의 구성으로 시스템 BIOS에서 설정될 수 있는데, 왜냐하면 드라이브는 임의의 주어진 CHS 값을 특정 하드웨어 구성에 대한 실제 주소로 변환할 것이기 때문입니다. 어쨌든 이것은 호환성 문제를 발생시킬 수 있습니다.

Microsoft DOS 또는 이전 버전의 Windows와 같은 운영 시스템에 대해, 각 파티션은 실린더 경계에서 시작하고 끝나야 합니다. 상대적으로 최신 운영 시스템 (Windows XP 포함) 중 일부만이 이 규칙을 무시할 수 있지만, 특히 사용자가 같은 드라이브에서 듀얼 부팅을 수행하려면, 여전히 호환성 문제가 발생할 수 있습니다. Microsoft는 Windows Vista 이후 내부 디스크 파티션 도구에서 이 규칙을 따르지 않습니다.