Partition

帶有硬編碼分區的 USB 快閃記憶體驅動器

  • April 1, 2019

我有一個金士頓 DataTraveler 2.0 16GB USB 快閃記憶體驅動器:

這個 USB 快閃記憶體驅動器的奇怪之處在於,儘管我已經將快閃記憶體驅動器填充為零:

# 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。如果我 grep dmesgfor sdc1 的輸出,那麼只有輸出是:

[21329562.191413]  sdc: sdc1

如何理解這種快閃記憶體驅動器?

核心在記憶體中維護分區表的副本。它實際上並不記得分區表儲存在哪裡,因此它不會檢測到分區表在磁碟上發生了變化。這就是為什麼您仍然看到以前存在的分區的原因。

您需要告訴核心再次解析磁碟以更新其記憶體分區表。執行partprobe /dev/sdc。諸如分區工具之類的分區工具fdisk在將新的分區表寫入磁碟時會為您執行此操作,但是如果您直接寫入磁碟,則需要手動通知核心。

引用自:https://unix.stackexchange.com/questions/260110