실린더 수가 더 이상 정확하지 않아 손상된 하드 드라이브 2개가 있습니다. 어떻게 이런 일이 발생했는지는 잘 모르겠지만 동일한 하드 드라이브 모델을 사용하여 정확한 실린더 수를 확인했습니다. 이전 버전의 sfdisk에는 이 옵션이 있었습니다. fdisk x에는 구조를 수정하는 옵션이 있지만 w(쓰기) 명령은 변경 사항을 저장하지 않습니다. 작업을 수행할 수 있지만 오픈 소스 옵션이었으면 하는 프로그램(Disk Genius @ $99)을 찾으십니까? 인터넷 검색에서는 Gparted가 이 작업을 수행할 수 있다고 언급하지만 아직 해당 옵션을 찾지 못했습니다. dd를 사용하여 HD를 제로화하고 fdisk를 사용하여 삭제하고 새 파티션 테이블을 만들었습니다. 모든 것이 여전히 잘못된 실린더 데이터를 사용합니다. Linux Mint, Ubuntu 및 MX에서 fdisk를 사용해 보았습니다.
답변1
하드 드라이브가 7.87GiB(또는 약 8.4GB 또는 정확히 16,450,560개 블록)보다 큰 경우 LBA(논리 블록 주소 지정)를 사용하여 액세스됩니다. 즉, 블록 번호만 의미가 있고 "디스크 구조"는 중요하지 않습니다.
1023/254/63 또는 1023/255/63의 C/H/S 값이 보이면 이는 MBR 파티션 테이블에 사용되는 더미 채우기 값입니다. 이는 단순히 "실제 값이 MS-DOS 또는 MBR 파티션 테이블에서 C/H/S 기하학을 사용하여 표현할 수 있는 값보다 크다"는 의미입니다.아니요실린더, 헤드 또는 섹터의 실제 수를 나타냅니다.
MBR 파티션 테이블과 MS-DOS 모두 실린더 값에 10비트 폭의 필드를 사용하므로 0..1023 사이의 값만 적합합니다. Head 값은 8비트이지만 Sector 값은 6비트만 있습니다. 또한 섹터 값은 0이 아닌 1부터 시작하는 관례가 있으며, 오래된 MS-DOS 버그로 인해 헤드 #255를 사용할 수 없습니다.
PATA/IDE 하드웨어 수준에서 C/H/S 스타일 주소 지정은 최대 65536/16/255까지 사용할 수 있습니다. 이는 디스크 크기가 128GiB(또는 136.9GB 또는 2^28 블록) 미만임을 의미합니다. 그러나 이러한 값은 MS-DOS에서 사용할 수 없으며 MBR 파티션 테이블에 저장할 수도 없습니다. 디스크 크기가 해당 수준에 도달하면 디스크의 실제 내부 구조는 이미 이보다 더 복잡합니다. 외부 실린더는 내부 실린더보다 더 큰 크기를 갖습니다. 물리적 섹터가 더 많습니다. 따라서 PATA의 마지막 날에도 C/H/S 주소 지정은 레거시 운영 체제를 만족시키는 데 필요한 허구로 성장했으며 그 이상은 아닙니다.
7.87GiB보다 큰 최신 디스크의 경우 MBR 파티션을 사용하는 경우 파티션의 위치와 크기를 결정하는 데 사용되는 유일한 의미 있는 필드는 파티션의 첫 번째 절대 섹터의 LBA#와 파티션의 섹터 수입니다. 둘 다 4바이트 필드이므로 최대 2TiB의 파티션 또는 최대 0xffff ffff의 LBA 블록 번호를 16진수로 나타내는 데 사용할 수 있습니다.
그래서20년 이상 된 디스크 및 운영 체제에 대해 이야기하지 않는 한 "디스크 구조"는 아무 용도로 사용되지 않으며 전혀 실제가 아닐 수 있으므로 무시할 가능성이 높습니다.