GParted를 사용하여 외장 USB 하드 드라이브를 두 개의 파티션으로 나누었습니다. 둘 다 FAT32로 포맷된 기본 파티션이며 동일한 크기(500GB)를 갖습니다. 이것은 다음의 출력입니다 file -s
.
/dev/sdb1: DOS/MBR boot sector, code offset 0x58+2, OEM-ID "mkfs.fat", sectors/cluster 64, reserved sectors 64, Media descriptor 0xf8, sectors/track 63, heads 255, hidden sectors 2048, sectors 976760832 (volumes > 32 MB), FAT (32 bit), sectors/FAT 119232, reserved 0x3, serial number 0x99034dfb, label: "TOSHIBA1 "
/dev/sdb2: DOS/MBR boot sector, code offset 0x58+2, OEM-ID "mkfs.fat", sectors/cluster 64, reserved sectors 64, Media descriptor 0xf8, sectors/track 63, heads 255, hidden sectors 976762880, sectors 976760832 (volumes > 32 MB), FAT (32 bit), sectors/FAT 119232, reserved 0x1, serial number 0x96cbe274, label: "TOSHIBA2 "
에서 는 /dev/sdb2
무엇 hidden sectors
이고 왜 더 큰가요 sectors
? 차이점은 2048이며 이는 hidden sectors
for 의 값입니다 /dev/sdb1
. 이것은 우연의 일치입니까? GParted 또는 명령 오류입니까 file
? 더 중요한 것은, 걱정할 사항이 아닐까요?
답변1
tl;dr
걱정할 것이 없습니다.
위키피디아 기사FAT 파일 시스템 설계"숨겨진 섹터"를 몇 번 언급했으며 관련 메타데이터 항목에 대한 일반적인 설명은 다음과 같습니다.
이 FAT 볼륨이 포함된 파티션 앞의 숨겨진 섹터 수입니다. 분할되지 않은 미디어에서는 이 필드가 항상 0이어야 합니다.
(몇 가지 단점이 있음). 이 설명은 귀하의 특정 사례에서 관찰한 값에 맞는 것 같습니다.
Linux 도구에서는 기본적으로 이 값을 사용하지 않을 것으로 예상됩니다. 귀하의 경우 해당 값 2048
및 976762880
은 의 컨텍스트에서 유효 하지만 을 /dev/sdb
고려하면 이러한 장치는 분할되지 않으므로 해당 컨텍스트에서 "숨겨진 섹터"는 이어야 합니다 ./dev/sdb1
/dev/sdb2
0
like 로 마운트하는 것이 일반적이지만 mount /dev/sdb1 /some/mountpoint
파티션이 512바이트의 2048 섹터 오프셋에서 시작하는 경우 다음과 같이 동일한 작업을 수행할 수 있습니다.
mount -o offset=$((2048*512)) /dev/sdb /some/mountpoint
따라서 Linux에 관한 한 어떤 컨텍스트가 "올바른" 컨텍스트인지 명확하게 표시할 수 없습니다. "숨겨진 섹터" 값이 중요하지 않다는 또 다른 힌트는 파티션 테이블에 속한 정보를 파일 시스템의 메타데이터 구조에 포함한다는 사실입니다. 요즘 우리는 이와 같이 추상화 레이어를 혼합하지 않는 경향이 있습니다. 두 가지 정보를 "비동기화"하는 것은 상대적으로 쉽습니다. 그리고 OS는 처음에 파일 시스템을 찾기 위해 파티션 테이블을 읽어야 하기 때문에 오프셋을 이미 알고 있는 후에만 사용할 수 있는 오프셋에 대한 중복 정보는 거의 유용하지 않습니다.
또 다른 중복 정보가 있습니다. 파티션 테이블에는 다음이 포함됩니다.파티션 ID(MBR) 또는파티션 유형 GUID(GPT) 이는 파티션의 실제 파일 시스템과 일치해야 하지만 그렇지 않을 수도 있습니다. 그러나 이 정보가 일관적이라면 파티션 테이블만 검사하여 예상되는 내용(OS, 가능한 멀티부팅, 스왑 파티션)을 알 수 있으므로 매우 유용합니다. 실제로 이는 인간에게 유용할 때도 있고 기계에 유용할 때도 있습니다. 특히 UEFI는 어떤 파티션이 있는지 알아야 합니다.EFI 시스템 파티션. 그러나 Linux에 검사하는 mount /dev/sdb1 …
대신 실제 파일 시스템을 감지하려고 시도하도록 지시하면 /dev/sdb
파티션 테이블을 읽고 파티션 ID/GUID를 사용하십시오.
"숨겨진 섹터"의 이유가 무엇인지 모르겠습니다. 그럼에도 불구하고 어떻게든 이 값에 의존하는 일부 장치가 있었던 것 같습니다. 비교하다man 8 mkfs.fat
:
-h number-of-hidden-sectors
볼륨의 숨겨진 섹터 수를 선택합니다. 분명히 일부 디지털 카메라에는 숨겨진 섹터가 없는 CF 카드를 공급하면 소화 불량이 발생하는데, 이 옵션을 사용하면 만족할 수 있습니다.0
명령줄에 값이 제공되지 않은 것으로 가정합니다 .
GParted는 계속해서 "일부 디지털 카메라" 등을 만족시키려고 노력한 것으로 보입니다. 그래서 이것은좋은 것. 다른 도구를 사용하여 다시 실행할 필요는 전혀 없습니다.
답변2
'숨겨진 섹터'는 FAT 또는 NTFS 부팅 섹터에 저장된 파티션 오프셋에 대한 잘못된 명칭입니다.BIOS 매개변수 블록; 여기서 'BIOS'는 시스템 펌웨어가 아닌 MS-DOS의 구성 요소를 의미합니다. 값은 디스크의 부트 섹터 앞에 있는 섹터 수입니다. 그 이상도 그 이하도 아닙니다. 분할되지 않은 미디어에 상주하고 전체 디스크에 걸쳐 있는 FAT 파일 시스템의 경우 이 값은 0이어야 합니다.
FAT 또는 NTFS 부팅 섹터가 로드되면 '숨겨진 섹터' 값을 사용하여 디스크에서 파티션을 찾습니다. 거기에서 부트 섹터는 파일 시스템 구조를 찾고 IO.SYS(MSLOAD), NTLDR 또는 BOOTMGR과 같은 후기 단계 부트로더를 로드할 수 있습니다. 그 외에는 일반적으로 사용되지 않는 값입니다. 따라서 BIOS 시스템의 해당 파일 시스템에서 부팅할 계획이 없다면 전혀 문제가 되지 않습니다. 하지만 어떤 미친 FAT 구현이 실행될지는 결코 알 수 없습니다.