我有一个 USB 闪存驱动器。以下是fdisk
(Linux) 生成的初始信息:
# fdisk -l /dev/sdc
Disk /dev/sdc: 8053 MB, 8053063680 bytes
16 heads, 60 sectors/track, 16384 cylinders, total 15728640 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: 0xd297c0f1
Device Boot Start End Blocks Id System
/dev/sdc1 2048 15728639 7863296 b W95 FAT32
然后我用不同的工具(例如,,,,,)玩了一段时间,并badblocks
想恢复驱动器的初始状态(相同的分区表,相同的分区号/类型/大小/位置,相同的文件系统和...几何形状。但是当我再次运行它时,fdisk 打印了不同的几何形状:parted
fdisk
gparted
disks
# fdisk -l /dev/sdc
Disk /dev/sdc: 8053 MB, 8053063680 bytes
232 heads, 46 sectors/track, 1473 cylinders, total 15728640 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: 0x7a249df5
Device Boot Start End Blocks Id System
/dev/sdc1 2048 15728639 7863296 c W95 FAT32 (LBA)
事实上,我所做的正是:
- 使用坏块执行了测试:
badblocks -w -s -o /tmp/output /dev/sdc
fdisk
使用和创建新的分区表parted
fdisk
创建了主分区parted
- 将分区格式化为 FAT32 和 exFAT(
mkfs.vfat -F32 /dev/sdc1
,mkfs.exfat /dev/sdc1
) - 更改了分区系统类型ID
当然,我知道闪存驱动器没有头、柱面等……并且拥有相同的扇区总数很重要。但无论如何,我是否想为闪存驱动器设置特定的几何形状?我该怎么做?这取决于使用的工具还是命令选项?
答案1
几何结构(磁柱、磁头、磁扇区)已过时,即使在现代硬盘中也无关紧要,更不用说闪存驱动器了。它在现代操作系统中基本不被使用;几乎所有东西都使用线性地址(逻辑块寻址 [LBA] 或其他特定于接口的方法)。它不会影响性能。
这些 CHS 值是虚构的,因为 MBR 分区表包含 CHS 地址。当前版本的 fdisk (util-linux 2.27.1) 甚至默认不显示这些令人困惑的信息。
答案2
您可以使用例如覆盖几何形状fdisk -H 32 -S 32 /dev/sda
。这将导致所有柱面的长度为 512k。由于 msdos 分区方案中的分区从柱面边界开始,因此这是一种确保所有分区正确对齐大多数 SSD 的巧妙方法(第一个分区除外,它偏移一个轨道以保留引导加载程序的空间)。
然而,最好使用 GPT,而不要考虑伪几何图形。