하드코딩된 파티션이 있는 USB 플래시 드라이브

하드코딩된 파티션이 있는 USB 플래시 드라이브

나는킹스턴 DataTraveler 2.016GB USB 플래시 드라이브:

이 USB 플래시 드라이브의 이상한 점은 플래시 드라이브를 0으로 설정했는데도 다음과 같은 점입니다.

# dd if=/dev/zero of=/dev/sdc bs=10M
dd: writing `/dev/sdc': No space left on device
1490+0 records in
1489+0 records out
15614803968 bytes (16 GB) copied, 3837.37 s, 4.1 MB/s
# 

..여전히 파티션이 있는 것처럼 나타납니다.

# fdisk -l /dev/sdc*

Disk /dev/sdc: 15.6 GB, 15614803968 bytes
64 heads, 32 sectors/track, 14891 cylinders, total 30497664 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: 0x00000000

Disk /dev/sdc doesn't contain a valid partition table

Disk /dev/sdc1: 241 MB, 241172480 bytes
64 heads, 32 sectors/track, 230 cylinders, total 471040 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: 0x00000000

Disk /dev/sdc1 doesn't contain a valid partition table
# 

gdisk/dev/sdc및 에 대한 다양한 GUID를 표시합니다 /dev/sdc1. sdc1의 출력을 grep하면 dmesg출력은 다음과 같습니다.

[21329562.191413]  sdc: sdc1

그러한 플래시 드라이브를 이해하는 방법은 무엇입니까?

답변1

커널은 메모리에 파티션 테이블의 복사본을 유지합니다. 실제로 파티션 테이블이 어디에 저장되어 있는지 기억하지 못하므로 디스크에서 파티션 테이블이 변경되었음을 감지하지 못합니다. 이것이 바로 이전에 존재했던 파티션이 여전히 표시되는 이유입니다.

메모리 내 파티션 테이블을 업데이트하려면 디스크를 다시 구문 분석하도록 커널에 지시해야 합니다. 달리기partprobe /dev/sdc. 이와 같은 파티셔닝 도구는 fdisk새 파티션 테이블을 디스크에 쓸 때 이 작업을 수행하지만, 디스크에 직접 쓰는 경우 커널에 수동으로 알려야 합니다.

관련 정보